Abstractionitis and tinymail

Abstractionitis. Yeh. But being flexible by design is also important. We all know all software projects have one thing in common: CHANGE.

So we have this situation where some people like the idea of having a d-bus service that basically does (as a service) what camel (and libtinymail) does: give you a simple-to-use interface to get information about your mailboxes.

Now if I wouldn’t have used interfaces for all types, this would have been more difficult. It would have meant a major redesign.

However, because I did use interfaces for all my types it’s simply creating remote proxy types by implementing the same interfaces using some d-bus code. And afterwards creating a d-bus service that uses the existing implementations as the real type in the remote proxy paradigm.

Now can a client that only depends on the interfaces use both the remote proxy- or the real types directly.

So the design is flexible for a change like this. I don’t yet have to worry about the idea of service oriented e-mail querying becoming popular. Nor about the idea of a service becoming less popular. The design is flexible, it could do it. And I wouldn’t have to change any of the client components that depend on the interfaces:

I’d implement intelligent caching in the client proxy types if that would be important. For example: the “from”, “to” and “subject” properties of the proxy instances that represent the visible rows in the gtktreeview are cached in the client proxy type. A simple and clean solution.
It’s is one of the advantages of working interface oriented: adding layers becomes more easy. Using the (remote) proxy pattern becomes possible.

So yeh, abstractionitis. I might be overabstracting things. But so far it hasn’t made me slower nor has it made the application slower or start using more memory.

Yet it did make the design adaptive to changes. For me, that is more important than getting something done quickly.

ps. Maemo is interested in writing a ui on top of libtinymail*. I’ve been on the phone with their product manager.

One thought on “Abstractionitis and tinymail”

  1. Great post – good, solid demonstration of your point about avoiding “abstractionitis” vs flexibility.

    Cool to hear about Maemo, too — one of the most frequent complaints in the 770 reviews out there are about the cruddy mail client. You’d be a total hero if you fixed it (by replacing it, in this case).

Comments are closed.