Thoughts on Ubuntu
When I started in the linux world my first distribution was Ubuntu. It is a great distribution for new users and I still recommend it in that situation. Unfortunately, Ubuntu has shifted from a linux distribution to a giant set of patches and unportable software. While this may be the simplest way for Ubuntu to release their OS is the most hazardous to the linux desktop.
The number of patches is the reason I left to Ubuntu, reporting bugs was a nightmare because you didn’t have ProgramY 1.23, You had ProgramY 2.23-ubuntu (or more likely ProgramY 2.19-ubuntu because they are terrible at keeping the programs up to date because they have to check all of their patches). This isn’t that big of an issue for applications but the libraries are all of custom and some programs don’t work, or they only work on Ubuntu. Instead of working with the original developers of the libraries to fix the problems and implement the features they need they pretty much fork all of the software they need. This means that Ubuntu isn’t helping the community, only making sure their OS works.
This is only the tip of the iceberg. Why I have been referring to Ubuntu as an OS rather than a distribution is because that is what it has become. An example of this is the Unity desktop. With the Unity desktop they created a bunch of APIs that were very similar to what is already standard on linux. Instead of expending and updating these APIs they create their own, now to properly integrate with the most popular linux desktop you need to use non-standard APIs and your app has problems running on other distributions of linux.
I see Ubuntu becoming like Windows or Mac. Yes, it is open source, but there is still so much proprietary content that you are beginning to get Ubuntu apps and linux apps. This locked-in mentality is hurting the linux ecosystem as much as it is helping it by bringing more users.
After all I have said I don’t think it is too late for Ubuntu. They need to write a bunch of standard APIs for everything that they have created and push all of their improvements to other software back upstream, Ubuntu needs to become a distribution again, a collection of software being put together rather then a bunch of custom stuff. An example is their cloud integration where you can use address books from online services. This should have been implemented as a portable library with standard ways to add and access these services so that it could be used on all linux distributions. That way, instead of having Google contacts on Ubuntu you can have a google contact service that can be used on any distribution and other contact services can be added as backends without having to work their way into Ubuntu code bases. Also, more people would write software to these interfaces because they don’t have to worry about limiting their audience. This way everyone wins, which is one of the key benefits people get from free software.