The demise of Mitter

The first post I can find about Mitter was in 2007, which makes it about 3 years old. It is one of my longest living personal projects.

Or better, it was. As for yesterday, I decided I had enough of it. So Mitter is, officially, unmaintained.

I posted most of the reasons for that in this blog recently. The biggest one is the way Twitter is handling their broken implementation of OAuth and making it hard for open source developers to distribute their Twitter clients. Second, which was the real “ok, I had enough” moment, was when I pointed that blocked users still appear in the timeline and got the answer that blocking should be done in the client side.

So you have a broken implementation of a security protocol and a broken behaviour, all in a small package. Even as a simple user, I think this is stupid, to say the least.

It’s not that Mitter is tied with Twitter. Since december last year, the network layer was redesigned to support multiple networks and I had plans to add at least Identi.ca and pave the way to a lot more. But, in the end, I got so burned out with the constant problems with Twitter and their general lack of interest in helping the small guys that I don’t want to make another application where I depend on someone that doesn’t give a fuck about what I write.

Also, it’s not that I hate Mitter now. I surely love it. Some of the best design decisions (and some of the worst too) I had I put there. I like the way the data flows in the application. I learnt a lot about Python and PyGTK with it. Even now, I look at the code and it looks pretty nice (so nice that I had to put a piece of the code in the header of my blog — although that piece doesn’t say much.)

But, in the end, it’s a matter of continuously dealing with bullshit. If at least I could make a living out of Mitter, I’d deal with it, as I did my whole life. But I wrote and kept Mitter on my spare time and now it’s not fun anymore. So Mitter is now orphan and unmaintained, but its source code is still available for anyone who wants to keep it going. I’m even here in case someone needs help understanding my design or needs someone to do releases.

OAuth paranoia

One day after I posted the lack of respect for OSS apps in Twitter “ecosystem” (a word they seem to like a lot these days), they announced that the API request for trending topics will now return the promoted tweets.

As I was reading this announcement, the paranoid hat fell on my head.

As I explained before, OAuth allows Twitter to simply cut the access of an application at their own will because, as they say, it may “harm the ecosystem”. The problem is that since forever, the line of what is “harmful” to the “ecosystem” was never fully explained and seems to be a moving target: Every day, someone will post on Twitter-Developement-Talk about their applications getting rejected due some not explained reason and being pointed to the Terms of Use.

Now, since Twitter never really explained what the “ecosystem” is and can simply cut any application they want, what may stop them to cut the access of some application that removes promoted tweets in the basis that promoted tweets are good for the “ecosystem”?

Does this paranoid hat make me look crazy?

Porque o Tadeu Schmidt tem que calar a boca

Tudo começou como uma brincadeira no Twitter: O já “batido” cala-boca Galvão, que se murmurava por aí a tempos, conseguiu ser um “trending topic” mundial na rede social. Por uma coincidência, isso aconteceu um pouco antes do técnico da seleção discutir com um jornalista. Na mesma noite, Tadeu Schmidt veio à público com um editoral rechassando Dunga. Aproveitando o embalo e apoiando a atitude do técnico, apareceu o novo trending topic: “Cala boca Tadeu Schmidt”.

“A reportagem é um conteúdo jornalístico, escrito ou falado, baseado no testemunho direto dos fatos e situações explicadas em palavras e, numa perspectiva atual, em histórias vividas por pessoas, relacionadas com o seu contexto. A reportagem televisiva, testemunho de acções espontâneas, relata histórias em palavras, imagens e sons.’ — Wikipedia

Quando se ligou do que estava acontecendo, a Globo resolveu botar o Tadeu Schmidt e o jornalista envolvido na questão na geladeira. Ambos sumiram da telinha por uma semana e depois voltaram aos poucos à programação, com notícias e comentários curtos. O que eu vejo, é que o Tadeu Schmidt tem que calar a boca definitivamente.

“Jornalismo é a atividade profissional que consiste em lidar com notícias, dados factuais e divulgação de informações. Também define-se o Jornalismo como a prática de coletar, redigir, editar e publicar informações sobre eventos atuais.” — Wikipedia

Meu problema todo com o Tadeu Schmidt é o que ele representa.

Para ilustrar a questão, deixem-me utilizar uma parábola:

Quando o PlayStation 2 foi lançado, a Sony disse que poucas empresas conseguiriam tirar o proveito máximo de todas as capacidades do aparelho. 2 anos depois de lançado, o jogo “Shadow of the Colossus” foi aclamando pela mídia e, segundo a Sony, era (e ainda é) o jogo que consegue explorar melhor tudo que o aparelho oferece. “Colossus” é o ápice dos jogos para PlayStation 2.

E isso é o que é o Tadeu Schmidt: ele é o “Shadow of the Colossus” da “comédia esportiva”, o ápice da falta de jornalismo esportivo. Ele é a consagração máxima do “comediante esportivo.”

Eu sou do tempo que se ouvia jogos de futebol com comentários do Ruy Carlos Ostermann, que conhece o jogo, conhece a história do jogo e relacionava fatos novos com os antigos para demonstrar a visão geral do que estava acontecendo.

Outro exemplo de “jornalista esportivo”, embora em outra área, é o Reginaldo Leme. Quem nunca se surpreendeu com a capacidade que ele tem de buscar fatos na história da Fórmula 1 para explicar acontecimentos da corrida atual? Ou buscar as informações necess´rias para explicar porque o novo desenho de asa da equipe X dá à equipe um melhor coeficiênte de arrasto e que isso daria uma maior velocidade nas retas mas não nas curvas?

Mas, a tempos, essa visão do “jornalista esportivo” começou a mudar. Eu acredito que o primeiro passo (ou o primeiro largo passo) dado foi o Sílvio Luís e seus rebuscados jargões, numa época que o Galvão Bueno era bem comportado neste aspecto até. Como o narrador estrapolava, os jornalistas começaram a estrapolar também, e começaram a colocar pequenos comentários humorísticos nas suas reportagens. Até chegarmos no Tadeu Schmidt, onde “reportagem” é o que menos existe e piadas cobrem tudo o que ele fala. De novo, ele é o ápice do “humorista esportivo”, a profissão que atirou o jornalismo na lixeira e mandou reciclar em outro campo, mas não foi o primeiro.

Colocar palavras na boca dos jogadores, fazer “interpretação” corporal, falar com o replay em câmera lenta, tudo isso é o que Tadeu Schmidt faz. A preocupação com a informação fica num distante segundo lugar. A piada vem sempre primeiro. A falta de “reportagem” é tão grande que, num sketch sobre a copa (ou seja, não dá pra chamar de “reportagem”), Tadeu parou na frente de um fosso próximo do campo e falou:

“Este fosso deve ter… hm… hm… uns 2 metros.”

“Uns 2 metros”. Depois de parar para olhar. Numa “reportagem” pré-gravada, não ao vivo. Com funcionários arrumando o campo. Logo, haviam várias oportunidades para pesquisar, perguntar, verificar a altura correta. Mas, como a piada é mais importante, o fato real não importa.

Meu maior medo é que esta tendência de adicionar piadas e acabar se tornando mais importante que o fato central da “reportagem” acabe se espalhando por outras áreas. Se funciona no esporte, porque não iria funcionar com, digamos, as reportagens policiais?

Tadeu Schmidt é o primeiro passo para que a Idiocracia se torne realidade.

A bit about LOLCODE

Couldn’t help but laugh:

I can’t seem to find a LOLCODE (http://en.wikipedia.org/wiki/LOLCODE)
API wrapper for Twitter. I was hoping to write my next Twitter
application in LOLCODE, but its very hard to do so without one.

Can anyone help me get started with a basic program? My code so far
isn’t working

HAI
CAN HAS STDIO?
MAKE CONNECT TWITTER NAO
I HAS A VAR TWEET
IM IN YR LOOP
   UP VAR!!1
   GET UR TWEETS
   VISIBLE TWEETS
IM OUTTA YR LOOP
KTHXBYE

Thoughts? An API wrapper would make all this much easier.

David

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 and the Future Part Deux: Community

Still in the line “What will happen to Mitter now that there are more options around” let me say that one of the things that are driving me back from Twitter development (or, better saying, developing Twitter applications.) is the community of developers.

When I started Mitter development, as usual I decided to lurk around the Twitter Development Talk, a list created by the Twitter developer themselves to talk about the directions of the API and the service. Long before Twitter became the synonym of “it doesn’t scale”, the discussion was always productive, with very small traffic. But it went really downhill after that.

You could find people saying that Twitter decided to close their garden only to read, a few messages later, that they were really abusing the system; a lot of “Twitter is not sending data properly, you broke my product!” complains, when they should be ready for anything and should be way faster if they solve thing on their side. It goes way down, to the point of people almost demanding when Twitter will fix their side. And always almost demanding Twitter to fix their problems.

I’m not trying to defend the brokeness of Twitter. It’s annoying and recently was enough to made me do a quick release ’cause Mitter was crashing hard (due some really broken JSON result) but… demand a fix from a free service? Complain about a service “destroying their business plan” when they were actually abusing the system? Sheesh. People, it is a free service and they have the right to simply close the API ’cause people don’t behave properly. They have no responsibility for your client or your business model.

And the worst part is that Twitter would usually bend over to make those guys happy. It saddens me to see a product with potential being directed away from its original vision to something to make everyone happy. Honestly, what’s the point of developing something for a product that may not be what they pronounced it would be?

Don’t get me wrong about those two posts. I loved Mitter and I still think it’s the best Twitter client around. I surely still want to make it become better and better but, each passing day, I feel more and more disconnected with Twitter.

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.

‘Cause an idea is a terrible thing to waste

[2:23:32 PM] Julio Biason says: now I have two projects in my head
[2:23:46 PM] Julio Biason says: first one is a image gallery (much like Gallery), using tags, written in python
[2:23:51 PM] Gerald Kaszuba says: ooh
[2:23:58 PM] Julio Biason says: and something that I would call “Replicator”.
[2:24:02 PM] Gerald Kaszuba says: heh
[2:24:15 PM] Julio Biason says: replicator is my idea of “update all your social things in just one place”
[2:24:21 PM] Gerald Kaszuba says: nice
[2:24:43 PM] Julio Biason says: say, you want to update your picture? Just provide your password for, say, last.fm, facebook, orkut, twitter, pownce and it will upload to all of them and update all profiles.
[2:25:09 PM] Julio Biason says: want to write a blog post? no worries, we replicate it in your wordpress and last.fm (if you point that it is music related)
[2:25:15 PM] Gerald Kaszuba says: that’s quite cool actually
[2:25:18 PM] Julio Biason says: pictures? upload to orkut and flickr
[2:26:34 PM] Julio Biason says: i’m still not sure if I do it as an Gtk application, Cocoa application or a web application…
[2:26:49 PM] Gerald Kaszuba says: id go for web app myself
[2:27:22 PM] Julio Biason says: The good thing about being a web app is that all the other things are web apps too
[2:27:51 PM] Gerald Kaszuba says: well yeah… and accessable from anywhere
[2:27:57 PM] Julio Biason says: the bad thing is that i’ll have to save your passwords to access the other applications, and I’m not keen to putting my password somewhere (even if I wrote the app)
[2:28:16 PM] Gerald Kaszuba says: u can get them to type it in everytime! :)
[2:28:19 PM] Julio Biason says: Gtk would be a good choice, as I could (hopefully) easyly port to all other applications (using pygtk)
[2:28:33 PM] Julio Biason says: yeah, I could. but that would be annoying…
[2:28:38 PM] Gerald Kaszuba says: yeah

By the way, if you like those ideas, feel free to drop me a note and we can start working on them (I have everything set up for TAGallery, the web gallery, except that I don’t have any code yet.)

Mitter



Mitter, originally uploaded by Julio Biason.

After some fights, I finally managed to make Mitter look nice. Now I just need to add some menus, an update status window and port it to Hildon.

Edit 1: And the project page, if you are interested in the code of it. No formal release yet (I really need to created a distutil file for it before releasing.)