RE: Evo Morales on the Daily Show

Online version of the Interview that Miguel recently referred to.

A little bit of introduction, before doing a 1.0

While developing on top of Tinymail you need to make a platform factory, a device type and an account store. The platform factory will create instances of types that are specific for your device. The device type will tell the Tinymail framework about the state of your device (online, offline and state changes) and the account store is where the accounts are requested from.

These types are interfaces in Tinymail: you don’t want me to tell you what configuration libraries to use for putting account configuration in, neither do you want me to tell you what Network detection to use. A cellphone’s GPRS connectivity might or might not work the way NetworkManager works! What about the future? Think about the kids!

Perhaps I want to decorate an existing local account configuration by synchronizing it using data from an ACAP server? What about doing this for all the account stores that I ever wrote?

By itself that doesn’t mean that you are on your own while starting your application. Of course does Tinymail have a bunch of default implementations. For example a device implementation that uses NetworkManager and an account store that uses GConf. Obviously there’s also documentation in the format of a manual that explains how to implement your platform factory, how to implement your device type and how to implement an account store.

Dirk-Jan told his audience (slides, page 4) at GUADEC ’07 that this makes your application and Tinymail look a bit like a chessboard. That’s right, you do need implement certain Tinymail types to build your application on top of it. This is not really abnormal in a modern framework. Consider things like Spring and Hibernate. For those frameworks you need to integrate your code with the framework too. Although such frameworks enjoy the fantastic world of virtual machine capabilities. Like reflection.

That’s a lot of interface implementing and type inheritance to support in a language binding. And this is exactly what Mark (Doffman) is providing in the Python binding of Tinymail.