My thoughts on the current state of the Linux desktop

I was thinking about writing this post for long time, but I alway thought that time would fix the problems I have with Linux on the desktop. It didn't happen.

Before we begin, don't get me wrong, I still think Linux (and with Linux I mean "the half-dozen linux distributions I've tried") is a perfectly fine OS to use as a main development machine but for "casual" users is not.

You may say that casual users don't really need a good machine and OS, they only browser Facebook after all! On this issue I completely agree with Lukas Mathis.
If a well-known distribution starts to display ads when I search for files on my computer I know how to disable it, a casual user doesn't.
When I login to a 640x480 desktop after a kernel upgrade I know how to fix it, a casual user doesn't.
When I can't install an application because it requires a newer version of a system library... Well, you got the idea.

Applications

This is probably the issue that bothers me most. There is a lack of high-quality applications. Most of the graphical programs that runs on Linux are either a wrapper around a shell program, a programmer-designed application or a copy of a well-known OS X application.

Even MacVim is way better than GVim, for example it uses standard shortcuts so I can paste using cmd-v insead of "+gP.
And don't get me started on mail clients, the main contenders are at the polar opposite of the UNIX philosophy of doing one thing and doing it well. There is a depressing lack of clients focused on the needs of "light" email users, something that can replace Sparrow.app.

To conclude this paragraph let me say that I really appreciate what the gnome guys (and Canonical) are doing, they are shifting the focus from the code to the UX and I hope they succed, but to do so they will need to attract third party developers.

Developing Applications

I started developing for gnome not long time ago, so I can only comment on how it's getting started on the platform.

It's a mess.

First you have to choose the toolkit and language to use. Picking a toolkit is easy(in my case GTK+) but then you have to pick which language to use. I still don't know if the reccomended language for writing gnome applications is C or Vala, and I've read all the guides on gnome.org!

Then you start writing you application and realize you don't know which build system to use, a simple read to the wiki should be enough right? Wrong, the official projects use at least 3 differente build system and it looks like there are no conventions in place.

After an afternoon fighting with the tools you can start writing the application, the documentation is good and you can take a look at other applications if you encounter a particular problem. Also the community is really good, the people on IRC were really helpful. I can only complain about the lack of guides on how to do common things like writing a settings panel, again asking on IRC helped me.

I won't cover the distribution of the application because I didn't go that far, from what I've read you need to write a slighty different package for each system you want to support. Easy & fun! The good news is that if your application becomes famous enough you don't have to worry about packaging it anymore because someone will do it for you.

Why this post?

As I said at the beginnig, I had this post in my head for long time. Writing this helped me deciding what to do with my gnome-related projects (spoiler: I removed them from GitHub), it was an hard decision but I don't want to invest my time/resources in a platform I don't believe in anymore (I still believe in Linux as a development OS though).

This also means that the next projects will be developer-friendly over user-friendly, with a small and clean codebase over a GUI.