Showing posts with label open source. Show all posts
Showing posts with label open source. Show all posts

Sunday, September 07, 2008

Has Linux lost the ISV battle?

For as long as anyone can remember, one of the big problems with Linux has been the lack of commercial applications. Independent software vendors (ISVs) are generally sticking to Windows or OS X, resulting in very little commercial software being available for Linux. Free software ideologies aside, there are many commercial applications that Linux would benefit from being able to run.

As a cross-platform software developer, there are many challenging issues that are unique to developing on Linux. First and foremost, there is the issue of binary compatibility.

In order to build a x86 Linux binary that runs on as many desktop Linux distributions as possible, the most widely documented procedure is to simply build your application on the oldest distribution you can find. Most Linux libraries are backwards-compatible, meaning an application compiled against older version will run with newer versions of the library. In theory, this seems like a reasonable way to make a universal Linux binary. In practice, things are very different - Do you statically link or dynamically link and bundle the libraries? How exactly does one do all of this? Is it practical to roll this procedure into your build system? Furthermore, where is the official documentation for this procedure? What are the best practices for producing a universal x86 Linux binary?

Another issue is software distribution. As a commerical software developer, how do you distribute your software to as many customers as possible? You'd need to create DEB and RPM packages, and probably have some generic graphical installer package as well. On Windows, a single installer .EXE will install on 2000, XP, Vista, etc. On Linux, you either need to create tons of packages, or you have to limit your customer base by creating packages for only the most popular distros. Already you've multiplied the amount of effort required to develop for Linux manyfold.

Additionally, you're fighting an uphill battle against open source software. If Adobe made a version of Photoshop for Linux (and allowed you to buy DEBs from their site), most people would still just install GIMP through Synaptic or Ubuntu's Add/Remove Applications dialog. Even worse (for Adobe), GIMP is installed on every Ubuntu system by default. The best Adobe can hope for is to offer DEBs via their site, and hope that people have a priori knowledge of their product, and go to their website to buy it. There is no "App Store" for Ubuntu, and perhaps there should be because distributions certainly don't make it easy to sell your software for Linux.

Many of these issues that are hindering independent software vendors from developing applications for Linux could be alleviated by much better organization by the Linux Foundation. When I originally heard about the Linux Standard Base (LSB), I was excited at the prospect of finally having universal x86 binaries for Linux, and perhaps it would finally open the door for more commercial Linux applications, I thought. However, to date, I can count the number of LSB certified applications on one hand. Mass adoption of Linux by ISVs did not happen, and I can't say that I blame them. If I were a developer coming from Windows, I wouldn't know where to start. The Linux Foundation's getting started guide includes an article on porting your application to the LSB, but that's for existing Linux applications, not for applications that already run on another platform.

If I were a developer looking to write a new application on Linux, I would not know where to begin. Do I use GTK or QT? wxWidgets? What are the standard system libraries on Linux? Where is everything documented? There is no central documentation repository that guides Linux developers and provides answers to this question. Windows developers have MSDN, OS X developers have Apple's Developer Connection, Linux developers have nothing but a bunch of scattered webpages, each trying to convince you that their library is the best one to use. This is not a productive approach, and an organization like the Linux Foundation should make a serious effort to give developers the information they need to develop their applications quickly. You can't expect developers coming from Windows to know what libraries to use by googling for answers - There needs to be some centralized site that provides developers with the answers they need. To me, this highlights the lack of leadership in the Linux desktop community.

In the kernel, it's very clear who is in charge. There is a clear structure of command, and this allows the kernel developers to work as an effective organization. Within the userspace (ie. libraries and software applications), we do not see the same command structure. We have Freedesktop.org creating "standards" and backend software for the Linux platform, but of the software hosted on it, it claims:

None of this is "endorsed" by anyone or implied to be standard software, remember that freedesktop.org is a collaboration forum, so anyone is encouraged to host stuff here if it's on-topic.


What desktop Linux appears to have is a plethora of organizations acting independently (creating libraries, etc.), with no clear cross-organization leadership. Freedesktop.org has been successful in getting many of these organizations to cooperate and has undoubtably resulted in an improved desktop Linux (see HAL and DBus), but it doesn't seem to be preaching a clear vision to those organizations, nor providing any guidance for new developers wishing to take advantage of the new technologies it has fostered.

Many of my views presented here have been shaped by my experience writing proprietary software on an embedded Linux platform. I've worked with engineers who've never written software for Linux, and they have a hard time answering the questions they have because Linux doesn't have something like MSDN. It's very easy to make bad decisions about what libraries to use on Linux due to the lack of centralized documentation.

The nightmare of binary compatibility, lack of support from Linux distributions, and the absence of centralized documentation and guidance for Linux software developers make it a difficult and expensive platform to develop on. It's a great platform to slap together little applications on, but when you have to deal seriously with the issues that independent software vendors have to deal with when developing desktop applications, Linux as a platform simply isn't worth the effort.


* Update: According to Phoronix, CyberLink DVD playing software appears to be for sale for Ubuntu in the Canonical Store. Two thoughts on this:
  1. Might this be start of the Ubuntu app store?
  2. CyberLink is just experimenting with this, they don't expect to make a lot of money from it. They make their money from distribution deals like getting bundled with DVD-ROMs, or more recently, getting bundled with Linux-based Netbooks/MIDs, not from selling their software in stores. I suspect this is also an experiment on Canonical's part, as they gauge the response of Ubuntu users and find the optimal way to integrate this into Ubuntu (hopefully in Add/Remove Applications one day).

Tuesday, May 15, 2007

Dear Lazyweb: Software patent lawsuits?

Dear lazyweb,

A Microsoft exec recently remarked that they're "not litigating". Some people seemed to interpret that as meaning, "we're not going to sue users", although Microsoft wasn't explicit about who they weren't going to sue.

My question for anyone law-savvy is: Can Microsoft (or any other software company) sue users for using software which allegedly violates software patents?

For example, if I buy a DVD player which was manufactured and sold illegally without royalty payments to the DVD consortium (etc.), it's the manufacturer of the DVD player that violated the patents. If I bought and use the DVD player, how on Earth am I the one that broke the law?

Following that logic, how on Earth are users liable when it's the developers who allegedly violated the software patents?

Update: Interesting twist, which supports the growing evidence that Microsoft's statements were/are FUD.

Wednesday, February 07, 2007

Visio, and another reason I love Linux


Today I had a nice reminder of one of the things I like best about Linux.

I've found myself being forced to draw some UML diagrams in Microsoft Visio 2003, and to be quite honest, I've been totally disappointed with the software. One of the things that bugs me is that Visio seems to have absolutely no intelligence whatsoever when it comes to laying out labels on associations - It'll blindly draw numbers on top of your classes and other diagrams.

You would think after Visio 2000 and Visio 2002 that stupid stuff like this would be fixed, but nope, this is Microsoft, and this is exactly why I love Linux.

Stupid bugs like this get fixed in open source software, because the users are the developers. With each release of Ubuntu (and other good pieces of open source software), there are not only new features added, but also a ton of bug fixes. I've yet to be affected by a bug in Ubuntu that's persisted across releases, and these guys release a new version every six months - not every couple of years (a la Microsoft). That's pretty damn good.

I think another reason why problems get fixed in open source projects is because their software development processes sometimes leave big companies like Microsoft in the dust. Quite honestly, Launchpad and other bug trackers (and the way in which they are used transparently) seems to play a large role in many projects' rapid success by providing developers with organization and a strong continual link to their users. It's this constant interaction, an excellent feedback loop, that some companies seem to lack.

Sure, many open source projects don't follow strict development processes, but you know what?
They not only get their software built, but they get it built faster and better.


Note: If you're looking for a good open source Visio replacement, here's some good ones: