It’s time for another progress update. It has been very busy over the last few weeks.
As I have explained previously, I’m currently rewriting the core of EventBox which forces an almost full rewrite of any parts affected (which is almost everything). The rewrite goes along the lines of:
- Fix the core
- Rewrite all services / plugins to use the new core
- Rewrite the interface bits to use the new core
Fixing the core is not an easy task but it’s doable with a little bit of thought. I’ve already rewritten it and from a usage point of view (i.e., how the core is used internally by the other bits of the application), it’s brilliant and a huge improvement over what we had. Do users actually care about the internals? Not directly but here’s the twist: a badly engineered core / foundation will last up to a point and when the “breaking” point is reached, it will be impossible to add new features / improvements. That’s the reason why I’m carefully doing the work now and taking all the time I need because it will pay off in the future.
One of the upsides of doing the rewrite is that it allowed me to fix some longstanding architectural problems which prevented us from implementing features / fixing bugs in some plugins. One such example is that now, our user interface architecture can have multiple representations of a single event. You might ask what does this mean in real terms? One usage would be the representation of RSS / Atom posts. For example, we could display them as a list (screencast) when you look at them in their plugin and as paper cutout when being displayed in a mixed container (e.g., Unread, Flagged, smart containers, etc). We’re currently not taking advantage of this but we will. Another example of a new capability available due to the core rewrite is the new notification center.
With the core now fixed, I’m left with rewriting the plugins and the interface bits so they all start working again. The following plugins have been fully ported to the new architecture:
- Twitter
- OneRiot
- Reddit
- Feeds
I’m currently working on porting Google Reader. The following plugins still need to be ported:
- Google Reader
- Identi.ca
- Digg
- Facebook
- Flickr
You might want to know how long it takes to port a plugin. It depends. It can take a single day (e.g., Feeds) or a week (e.g., Twitter). Bear in mind that I’m not just “porting” it straight, I’m taking the time to fix any problems and improve the plugins as I go along.
For example, here are some of the improvements that I’ve made during the rewrite (Twitter):
- Events are now logically consistent. For example, if you have the same event in a profile peek and in the main timeline, you will not have to mark both as read and they’re logically the same event.
- When you send tweets, we no longer refresh to get the new tweet but instead use a more efficient method to retrieve it. So you can send 10 tweets in a row without EventBox making any refreshes / additional requests.
- Twitter favorites are finally implemented correctly so you will see all of them and not only a subset.
I’ve also fixed the problem with feeds’ favicons - it currently displays the Feedburner favicon for some of them.
As I’m rewriting the Google Reader plugin, I’ve discovered many problems which I need to fix. Firstly, it’s going to use a more efficient way of performing synchronization. I also want to implement support for the Favorites / Shared folders.
A lot of work still needs doing. The rest of the plugins need to be rewritten / ported and it will take at least another 2 weeks (optimistically) and 5 weeks (worst case). After that’s done, the main part of the application which controls the interface needs to be adjusted to all the changes. I’ve no estimate for that but it’s at least a few weeks of work. Optimistically, we’re looking at an early October launch, realistically, maybe end of October / mid-November.
Due to some internal changes, I’m currently the only person performing all the work that I’ve described above and the estimates assume that I continue to work at the current rate - seven days a week with an unhealthy amount of working hours. I’ve been able to keep it up for a while now but it’s getting increasingly harder to do so. I just want you to know that I’m doing my best to bring you the new features as fast as possible but I might be forced to slow down in the future if my health deteriorates due to my working schedule.