Pieces to the puzzle…

ObjectI’ve been asked how long it’s going to be before there is an alpha version of Kiwi and, unfortunately, it’s going to be a while, much longer than I anticipated. The reason is that e-mail is complex, and IMAP in particular is complex when implemented correctly. The reason most IMAP e-mail clients suck right now is because they were built originally for POP3 and IMAP was tacked on as an after thought. However, IMAP and POP3 are two completely different paradigms and it’s not easy to plug one in place of the other. Since Kiwi is designed only for IMAP, it does make things easier but there is still alot of work to be done.

The current version of Kiwi is working great, atleast it’s limited functionality is working great, but it’s in dire need of a restructuring. The current code base works, but it’s very fragile and is not suitable as a base for future development. When building an application my design decisions the first time through are less than optimal, and in order to correct this I need to go back and refactor existing code. Now that I have played around with the problem of e-mail I know how I should really go about implementing it and therefore it’s time for some major code refactoring.

The current Kiwi code base is too tightly coupled together, In order to decrease the coupling between the pieces of Kiwi I’m starting to split things up into black boxes. Kiwi will now have a number of different layers internally, and I am building the layers such that other developers can eventually use them. I’m hoping to apply some new techniques like the Law of Demeter and design patterns to produce a more stable base. I’ll be adding more posts soon that go into detail about the actual layers. Oh, and another nice thing about doing this is that other developers are going to have some nice frameworks to play with.


4 Responses to “Pieces to the puzzle…”  

  1. 1 Hoa

    libetpan CVS is opened to contributions such as framework that would wrap libetpan calls.
    For example to get an easier API for Objective-C.
    Let me know if you want to be added on CVS committers.

  2. 2 Matt Ronge

    Thanks Hoa. The framework is specific to Mac OS X and Cocoa in particular, I don’t know if that is a problem.

  3. 3 Hoa

    that’s not a problem for me (I am open to Mac OS X).

Leave a Reply