Is Mitter dead?

As some may have noticed already, there haven’t been many releases of Mitter lately. But it doesn’t mean Mitter development is dead. I’ve been working on some things lately:

  • Multiple network support:
    One thing I’m trying to make now is support for multiple networks, so you could update your status on Twitter, Identi.ca, Facebook, Jaiku and whatever from just one client. The weird thing is that, this time, I decided to actually write the design down and then start working on it, to avoid creating a mess of code but, in the end, every single step I did into code proved that I forgot something (yay for Python and fast prototyping!) I still see some rough edges everywhere, but I think after a week working on it, I got a huge step forward.

  • The damn network thread:
    Not something I’ve been actively working on, but I think about it from time to time. The main reason it bothers me is the problems with the PyGTK main loop on Windows and the ugly ugly hack for the console interfaces (tty and cmd.) At first I thought about converting the network interface into a file-like object, so it would be just a matter of “read()” the data, but that proved to be a problem with the idea of multiple networks. Right now, I want to try to split the HTTPThread into a single object and the interfaces would be able to mix it with the Network/Twitter objects. So, only interfaces that need threads will have a HTTPThread-like object to use; interfaces that don’t have that problem will use the Network/Twitter object directly.

  • Tk(inter) interface:
    Also with the problem with PyGTK on Windows, I decided to play a little bit with Tkinter. Now, everyone knows that it looks pretty bad on X11 interfaces, but on Macs and specially Windows, it tries to mimic the OS look (even more on Windows, where it translates Tk commands directly into Windows.) So far, it looks alright and I even have a working prototype (not plugged into the Mitter object yet, though.) Here are some screenshots:


    The first thing you’d probably notice is that it doesn’t look like the PyGTK interface. That’s because Tk supports only one line for items on listboxes, so I had to make a space for the whole tweet or you’d get just a glimpse of the text. I’m not looking into links and other stuff yet, but maybe in the future.

Mitter and the Future, part Troix: The Alternatives

(This is getting long, doesn’t it?)

One more point to analyze the future of Mitter: The Alternatives.

Right now, the space that Twitter fills is getting crowded. Not that Twitter was there first, but it surely is the widest, most recognized service in the area. And, most of all, I’ll list one the ones I have an account.

  • Twitter (me): Ok, you all know Twitter. 140 chars, used to have updates and notifications via IM (but is down for a very long time already), updates and notifications via SMS.
  • Jaiku (me): Was there before Twitter. Works almost the same way: Messages are limited to 140 chars, updates and notifications via IM and SMS. Also, it provides a proper “reply to” function, which allows you to do a reply to an specific message (Twitter always points to the last message from the user you are replying to.) The problem with Jaiku is that, about an year ago, it was bought by Google and they closed the service to everyone. Right now, to get an account, you need an invitation code by someone that already have an account there.
  • Pownce (me): Offers way larger messages (around 400 chars, if I recall correctly), proper replies, can share links, files and events. Doesn’t have IM or SMS notifications (or updates) but you can receive notifications via email.
  • Facebook (me): Although it is a social network thing, it have a “What are you doing?” field (originally, it was a “[Username] is …” field.) As far as I can see, the status can be longer than 140 chars (but I’m not sure how long.)
  • Identi.ca (me): The new Twitter clone, but completely open source. You can download the sources and run your own service. And, because it works with the Open Micro-Blogging Protocol, you can still reply to people using other servers.
  • Tumblr (me): Tumblr works a little bit like Pownce: You can update your status, post pictures, links, audio and video. One the nice things that Tumblr does is create a page that actually looks like a blog to you.
  • Plurk (me): Almost the same as Twitter (140 chars), but it can save some space with “actions” (you start you update with a pre-defined verb.) Again, like Twitter, they have IM notifications and updates, but it’s down for the moment. They have a timeline feature, which displays the “progress”

Now re-read the list and notice that every single alternative offers things better the Twitter. And, still, none of the them actually harm Twitter’s popularity. Heck, not even the FailWhale seems capable of harming that. But, still the point remains: There are alternatives to Twitter, which work better and/or offer more features.

Which brings us back to the point of “plugable” networks…

Mitter, Maemo, Identi.ca and the Future

When I started Mitter, my plan was to create a client capable of updating my Twitter status using my N800. Since I could carry it everywhere because of its small size, it would be perfect. And I could do that using Python and PyGTK (PyHildon, but it’s almost the same thing.) My plan was quite simple: write a client small enough but capable of using multiple interfaces. That way, I could write the starting code without using Maemo and later just convert it. It may sound a little bit weird, but first I needed the network bits in place and then, later, I could just plug the interface. Even as today, I still have to fight the network layer (mostly because I didn’t made good plans about all that and a little bit because Twitter changed since I started the project [mostly the limits and user behavior].)

A few weeks ago, Mauku, the Maemo client to Jaiku (the micro-blogging platform now owned by Google), announced that they will have support for Twitter. Now users have an option to update their Twitter status in their N770, N800 and N810. Basically, Mauku did was I was trying to do for a long time.

And all that around a time when Twitter is under, let’s say, “attack”. Users are getting annoyed by the Fail Whale (the message shown when the services are down), although the situation improved considerably in the last month or so (but still, the little glitches, like followers disappearing without any good reason, still happen from time to time.) At the same time, competitors in the Micro-blogging arena are emerging. While Jaiku is another service in the same model of Twitter, it’s now closed for new registrations and you need an invitation to create an account there. Identi.ca, an open source competitor, suddenly appeared and seems capable of “stealing” Twitter users.

So, what are the plans in the future of Mitter? At this point, honestly, I don’t know. What I would really like to do is completely split the network bits from the main application, so you could plug networks are easy as you can plug interfaces today. There is an experimental (although completely functional) status update for Facebook on a separate branch. The reason it’s there is because I didn’t find a way to split the network layers properly. If such split was something easy to do, you could post to facebook, Twitter and probably Identi.ca.

The fact the Identi.ca have it’s source open is something that really compels me. And, by that, I mean that the next fail whale I see I’ll stop using Twitter and move to Identi.ca.

And what about Maemo? Well, since the interface is still plugable, it’s just a matter of writing it. My current problem with the Maemo platform is the environment. Installing Scratchbox is a pain lately, due:

  1. I have a MacBook now and PyGTK development on it is pain. Most visualization tools are slow or behave badly (or, at least, weren’t so pleasurable to use.)
  2. PyGTK on Macs is slow and buggy (either the X11 version or the Quartz version.)
  3. Scratchbox insists in breaking every now and then.

I think the last point happens a lot ’cause Scratchbox virtualizes the Maemo environment (an ARM processor.) So, any small changes on the host operating system makes it behave badly. Also, the fact that Nokia decided to create their own widget set based on GTK instead of doing something like the Windows port does makes things harder. I’d love to write it in PyGTK and not having to deal with the conversion to PyHildon.

All that sounds good and all, but you must remember that I’m just one guy. Although Deepak helped me a lot with fixes to the PyGTK, it doesn’t increase the count that much. And he (and so I) have a lot of other projects going around. If we go for another interface and another network code, it would be really hard to maintain such beast.

I don’t want to stop working with Mitter. But, at the same time, things are less compelling in this space for now. Maybe if I really managed to split the network and make it generic enough to work with all the current micro-blogging options, but there is not enough manpower for that at the moment. The best I could do is fix the current Twitter network layer and then start looking at a way to split that.