And indeed it wouldn't be impossible to do, but it will be what we like to call a crapload of work.
And before you start coding, anyone, do not hook, or attempt to hook, or think about hooking FCF (FloatingChatFrame, the default chat frame structure) for this.
You will be much better off starting from scratch, just listening to CHAT_MSG_ events. Also, you can simply use some Dewdrop magic to allow for color setup and "which message goes where", Crayon (PaintChips?) for coloring, and for the most difficult part, that is, a meaningful combat log, ParserLib. Well, perhaps the really most difficult part is a sensible docking and moving system for the frames. Also, when done, you'd really want to emulate FCF's outward functions (particularly the :AddMessage functions, of course) as well as possible for compatibility, then nuke FCF by nilling it. Imho ;)
I think this might help with understanding default blizzard chat internals, as I managed to hook everything for dynamically creating virtual channels
Whoever will start coding DreamChat, please, please don't hook. It will only cause you grief in the long run. The chat internals are very simple, save for combat events, for which there is always ParserLib, as said before. For example, to start receiving guild messages, you only register for the event CHAT_MSG_GUILD, and for each of those, say, someScrollingMessageFrame:AddMessage(format("[Guild] %s: %s",arg2,arg1),1,1,1) and you got yourself a simple guild chat reader.
The most difficult thing to do on a chan is to follow a conversation and still have a look on other messages. I would think of some kind of auto-resizing depending on which channel your on, including even the font size.
Other thing: a filter for group search (like any message including Scholo, AQ or whatever).
I would say: a frame for defense/search/trade/local, a frame for guild chan (guild/officer), a frame for raid chan, a frame for joined chans and a frame for whisp. That's 5 frames plus combat logs & system.
Another option would be to mix chans on 2-3 frames and have the options to print them or not but keep them in log so you can view them anytime? How about a line with check boxes to handle that then?
PS: I guess Prat has a lot of features included like chan name.
I have downloaded DreamChat-r18117[Nevcairiel and DewdropLib-r17882 but I still receive an error message indicating a Dewdroplib2-0 problem... Just to note that no other addons are running, just to be sure there is no interference.