Friday, February 15, 2008

Applications are Open Source too

One of the advantages of combining public transport and mobile computing is that you can spend the time you’re commuting on something useful (if you consider blogging to be something useful of course). I’m using LyX to write this article, but Firefox, GIMP, LaTex2RTF, ImageMagick, Apache, MySQL, PHP, Graphviz, bash, GCC and my own 4tH compiler are installed as well. And no, this is not a Linux laptop, it is a Windows XP laptop. Yes, your deduction was correct, I’ve been providing MS-DOS and MS-Windows versions of 4tH for as long as I can remember, it’s not like Microsoft has recruited me lately. And no, it is not my laptop, it is my employers laptop. Since the Netherlands may be most retarded country in the world where Open Source is concerned it automatically comes with MS-Windows. Fortunately, I was able to install my own stuff as well, because a Windows XP laptop with MS-Office is less than useful to me.

Strangely enough, I get the same remarks from MS-fan boys. They never ask me if there are any useful word processors available (yes, LyX) but if it can run MS-Office. Of course you can using Wine, but there are so many fine other word processors available for Linux. But no, it has to be MS-Word and nothing else. I can understand why. Using another program, even if it resembles the one you’re used to, is like sleeping for the first time at the home of your new girlfriend. When you try to find the bathroom at night the chances are you’ll end up lying face down in the hallway. Of course, in time you will learn to find your way around, but it is frustrating (and humiliating) at first. So when people change Operating Systems the first thing they’ll look for is a way to run their familiar applications. They will only switch if there is no other way.

I remember when I switched from MS-Windows 3.1 to Linux I used Paintshop Pro for a considerable amount of time before I finally switched to GIMP. I used the Linux version of Wordperfect. I updated my diagrams with Novagraph Chartist at work. Finding, selecting and learning Linux alternatives took me a lot of time, time that I could have spent on creating content. Sometimes I was even forced to recreate or reformat content. But once I had familiarized myself with an application I had no reason to switch again. I’m never going to relinquish my LyX, Graphviz or Dia for that matter. In comparison, MS-Visio and MS-Word are applications of a distant past and do not offer me the versatility or comfort I’m used to.

LyX simply works, nuff said. Its format is simple enough to interface with and versatile enough for the most complex of documents. When I insert a picture it stays where I put it instead of jumping to different places or being overlaid with text for no obvious reason. The pages are automatically numbered and adding a Table of Contents is just a few clicks away. Graphviz automatically creates a diagram from a simple definition. I don’t have to place edges or nodes manually and it interfaces perfectly with LyX. Just like Dia, by the way. I must admit, I only use Open Office to read MS-documents, I don’t create too much content with it, but it is a wonderful application. GCC is my compiler of choice, although I rarely need it except to compile my own 4tH compiler, which I use predominantly to write programs. And who doesn’t use Firefox? Only those dwelling in the Valley of the Ignorant.

Some would like us to believe that Open Source applications are lacking in functionality, but I sincerely think they are wrong - or spreading FUD for that matter. I think Open Source offers great applications and I think the community should be more confident and proud of what they have achieved. If you’re using Open Source applications you’re using next generation tools, new and exciting paradigms, which will offer you a headstart once the MS-dinosaur has realized this and has implemented it in its products. And in the meanwhile you will enjoy having the advantage.

I haven’t touched MS-Word for anything serious in a long time - and when I was forced to do it I regretted it every single minute. I’m a writer, not a layout artist. I wanna type, I don’t want to be bothered by adding and maintaining the layout. LyX works like I want to work. This is a chapter, this is a section, this is an enumeration, here comes the Table of Contents - take care of it. And LyX does. ’A’ is connected with ’B’ and ’C’ and ’B’ is connected with ’C’. Put them in borderless, cyan boxes. Now make a diagram. And Graphviz does.

These are the things that make you productive. I’ve never seen anything MS-like do that. They believe in blue ribbons. I don’t. BTW, did you know that you can buy an add-on that makes the ribbon interface disappear and reverts you to an interface that was brand new when the dinosaurs roamed the earth? I guess there must be real market for it.

I don’t even think it is the fault of Microsoft. For several reasons it is very hard to change human behavior. Knowledge is valuable. You don’t change from expert to newbie voluntarily. It diminishes your personal and professional value. People want to get the job done. They don’t have or take the time to learn a new tool, even if this investment makes them more productive in the long run. That behavior is one of the most important obstacles in the adoption of Open Source products. People are only willing to change if their applications don’t change. Most of them don’t know what a kernel is and even less why they should care. As far as they are concerned if it runs MS-Word it’s a kind of ’Windows’.

The Open Source movement can use this behavior to its advantage. If people use Open Source applications they will run Open Source operating systems. It is not a question of ’if’ anymore, but a question of ’when’. So when a friend asks you for a bootleg copy of MS-Word, install OpenOffice or Abiword. You can replace Photoshop or Paint Shop Pro with GIMP, Quark Express with Scribus, Visual Studio with GCC and so on. Now that KDE makes the jump to the MS-Windows desktop the choice of applications has become even wider. And then you wait. MS-Windows will fail at some moment in time and you know where your friend will turn to.

Closed source software is a wonderful thing, especially if you have to pay for it. While ’free speech’ is vitally important, I guarantee you that ’free beer’ attracts more visitors. Fortunately for us, Microsoft made it very unattractive to install MS-Windows. First you either have to pay for it or go through a difficult procedure to bootleg it. Second, their main attraction is not so attractive. Who wants Vista? Not even the most fanatic MS-fanboy wants that on his machine. Third, installing MS-Windows is going through hell. If you have old, vanilla hardware, a modern Linux distribution will probably support it. Pop in the DVD and off you go! Where a MS-Windows installation leaves you with a bare bone machine, Linux will already offer you a wide choice of applications. Applications your friend already knows, uses and loves. You don’t break the barrier by tearing down walls, but by dismantling them stone by stone.

There are developers that refuse to port their FOSS software to MS-Windows. There are even developers that deny others the right to compile their FOSS software for MS-Windows. Personally, I don’t think that’s a good idea. First of all from a public relations point of view. If you want to leave the impression that Open Source developers are a bunch of religious zealots whose next move will be the bombing of the Redwood headquarters, that’s absolutely the way to do it. Second, for what? Those who use or are forced to use MS-Windows and have the required know how will do it anyway. And those who haven’t will be frustrated. Nice going. You lived up to your principles and that’s it. Period. Your little pet project is not the killer application that will turn people to Linux. Tough luck. I’m afraid you’ll have to live with it.

What most FOSS fundamentalists seem to forget is that MS-Windows users can be converted to FOSS users. Even better, a large number of MS-Windows users are FOSS users. The simple fact that someone uses a Microsoft kernel doesn’t mean he has joined the dark side. Most people won’t even care. If there is a good, cheap alternative to MS-Windows they will use it as long as it doesn’t cause them too much trouble. Applications are the key factor here. So instead of trying to force people to change their kernels, we have to ease them into using our applications. Yes, maybe some people will continue to use MS-Windows kernels, because it is easier to run MS-Windows applications on an MS-Windows kernel than it is using Linux and Wine. Yes, maybe Microsoft will continue to earn some money by selling MS-Windows kernels. But in the end, when GCC, OpenOffice, Scribus, Inkscape, Dia, Firefox, GIMP and the new KDE desktop have become the applications of choice, who do you think has won?


George F. Rice said...

I agree whole-heartedly.

At the local computer flea market, one brave young man sells DVDs filled with free and open source software for Windows for just a few dollars. His friendly but aggressive marketing has brought in quite a few customers.

When one of those customers finds displeasure in Vista, or in Microsoft's strong-arm extortion-like tactics, how difficult will it be to move them to a free OS? The change will be virtually painless, because Gnome/Compiz and KDE/ et. al. are just as usable (and flashy) as Aero or OS/X, and thanks to free software on Windows, the applications are the same, too.


Anonymous said...

Great! You make a powerful point. However, I don't see people giving up their beloved MS Office for LyX, not that I am disagreeing with you. LyX is great.

"And who doesn’t use Firefox? Only those dwelling in the Valley of the Ignorant."

I find SeaMonkey much better. Since Firefox 1.0, Firefox has become very bloated and slow. I miss Phoenix.

Anonymous said...

I agree with most of this. But the comment about replacing visual studio with gcc? Come on, that not realistic. VS is a pretty good application. It great at debugging, it works for devices, desktops, server applications. Visual Studio is a pretty good application. I haven't found anything quite as good in the linux world. Although I hope that changes with Eclipse or MonoDevelop.

Anonymous said...

I wrote about this extensively here and elsewhere, but I'll add a few things. I ended up doing the posting in 3 parts. There is repetition, sorry, but I am tired of writing about this and each part has some new material I am too tired now to integrate properly.

>> But in the end, when GCC, OpenOffice, Scribus, Inkscape, Dia, Firefox, GIMP and the new KDE desktop have become the applications of choice, who do you think has won?

I don't see that happening, but if it did happen, at what cost? Opportunity cost is when you can get something one way, but could have done better through a different way.

The main issues I have is that developer time spent playing Microsoft's games is inefficient and the potential is limited. End users benefit more if apps develop quicker and better, ie, on an open platform like Linux not over Windows.

Additionally, porting FOSS to use technology that Microsoft already uses, understands, and controls, does make it easier for Microsoft to keep up with the best of FOSS and *ahead* of it since they have special access. MS will always have superior integration and performance and give away enough freebies to keep the FOSS stuff marginal.

Who makes FOSS what it is? It's the devs that code it and value it (not the end users that look at external stuff). And it is for a reason that these very devs decided for a very long time that the low level stuff was the most crucial. Why limit yourself unnecessarily? We can build a kernel and more. We have built a kernel and more. This is superior to relying on a black box you can't control or fix or redesign, especially, when that black box is the most important component of the system for getting the top on stuff to be of quality.

There is little more to worry about. Well, getting it to the end user of course. Linux has come a long way and the network effect does mean that at some point there is a very good chance of a quick and significant change in "government." If we worry *too* much about the end user, engineering quality will suffer. Yes, if you build it, they will come when everything else is inferior. Good things come to those who wait. You can't build a strong house without a solid foundation. Etc. ETc. There is no getting around these things, though with a superficial analysis it may appear so at times.


MS feels pressure because of wholesale movements to Linux and threats. It's the fact that you can't today get a comparable experience on Windows that Linux is attractive (for various customers, not for all). If the differences were minor, you would not see this. People would not gain by moving. Of course, you really can't build great stuff on Windows as it's done on Linux. And the porting efforts are inefficient, if perhaps done nevertheless by various individual for various reasons.

There is an important place for the more efficient and more featureful apps, and these will not be the ones that are written in a very generalized fashion. It will be the ones that pick a platform where they will specialize. And between dealing with Microsoft and opacity or Linus and transparency, well, there is no choice really. Not for me.

So would we win if 10 apps became popular on Windows? I would not consider that a win at all. I would consider it a loss if the alternative could be much better as I think it can. And of course, I don't think gcc has a chance in hell on Windows against MSVisStudio were a community version is given away by Microsoft but it matches gcc in many ways because gcc is fighting an uphill battle on Windows. In fact, does gcc + toolchain work on Windows? I don't think so, and it's for a very good reason. The best stuff on Linux are the whole environment and how you can integrate and dissect and get the performance and features you want at many levels. It's the ability to engineer with as few constraints and artificial badly design black boxes as possible. There are very important daemons that many apps rely on and don't underestimate the power of the kernel, an open kernel with open drivers.


We are not in the 90s. Then, Windows was more interesting relative to the competition. Perhaps that is the time of which you speak when you went through the transition. Today, Linux holds its own or moves ahead. Today, we have LiveCDs that keep getting better all the time. Today, we have virtualization and easier installations and better hardware support. We are in 2008 not in the 1990s.

The death of proprietary Microsoft is developers abandoning their platform and APIs (look at Vista). And the death of the closed source platform monopolist ushers in FOSS by the truck load.

If Vista wasn't lacking apps, we would not have so many hardware vendors pre-installing Linux today.

Linux is great today because of the large number of quality, interesting, useful apps (at least to many of those that have learned about them and use them).

So if apps make the difference, do you want to live 20 years fighting over Windows, or much quicker have Linux/BSD/etc take over?

Why do you think Linux was created? It was not part of a religion. It was for very very practical reasons. You can't do on efficiently many of the things that can be done on Linux (unless possibly if you are Microsoft and have inside access).

Remember that the computer savvy people have issues migrating. Jack/Jill are not in the same situation. And the professionals are the minority. This is why games are such a big deal (as is the browser and a *few* other apps that really should be ported to Windows). These are the things that hold the large number of users back.

Ingenuity to get wine working well is money and time better spent than to port each and every complex app. Not to mention that with wine you achieve what is really important which is to get existing key Windows apps working on Linux. People don't have too much more than a few apps that they must have.

Now, no one controls developers but themselves. Some developers feel more effective working on a port than extending an app. That is how the mind works. I know that will happen, but that port will likely rot anyway in a few years if the developer gets tired. On Linux the shelf life is much longer. Maybe the developer will eventually give up porting because of learning rules and quirks through school of hard knocks and through much more effort than should be the case (eg, if over FOSS). What, file no bug reports?

Again, it's about being smart with one's time and effort. Don't work uphill and don't give Microsoft extra years. Look at Vista. The apps killed Vista. Microsoft had a lot to do with that, but we the FOSS community can save Vista if we make it habitable.

Speaking for myself, I feel good designing for FOSS platforms but terrible designing for anything that has to worry about connecting with Microsoft. It's a losing uphill battle. My time is too important to fight the platform and rule changes and the opaqueness of it all.

In fact, the apps that really are cross-platform are the ones supported by companies. It's tough to ask a FOSS dev (and some will do it) for free to deal with an inferior system. A closed system, from the POV of developers that write code that interacts with it, is an inferior system.

I'm not offended people disagree with me, but I do want to take the time to get some points across.

Developers, developers, developers, developers using MS tools and hooks. Yes, pseudo FOSS (tied to Windows for the most important functionality) avoids some of these, but at a cost in quality. And if the devs give in, they will have entered the treadmill. A losing and time-consuming proposition either way. The really good opportunity on Linux will be passed by while on that treadmill.

I think a major difference in pov is this: You see that the end user needs to be comfortable to switch (ultra comfortable) and also believe that the openness will be enough incentive at some point. I don't think it will ever be comfortable to switch if we play MS's games; meanwhile, we will slow down the growth of real FOSS on a good platform through wasted time and brain energy and ties porting. In the end, I view quality as the deciding factor and that will be enough to get the larger number of people to move (most aren't that attached to software because they have other lives, but they do like new things and fast growth). I don't think freedom and openness are that attractive to most users (that are not devs) if quality is inferior. As long as quality is inferior they will not move. OK, ultimately, each of these paths may lead to Linux, but I prefer 5 years to 20.

Anonymous said...

great article. as you mentioned if a program is linux and windows enabled it helps the transition. i'm on a vistaids due to the necessity of a quality video editor (and macfanbois dont start, apples hardware+software lockin is worse than m$'s software lockin). regardless, i've been systematically going through my programs and replacing them with cross platform stuff to make my transition smoother (or fuck it, if i cant transition due to necessity of a video editor i'll buy a box with linux preinstalled anyway). anyway my point is: developers, crossplatform is a great way to build userbase and when they hear about linux, they say to themselves, 'oh my fav program runs on linux too!', but at the same time, dont sacrifice too much quality of your main product just to support cross platform support.

Anonymous said...

>> anyway my point is: developers, crossplatform is a great way to build userbase

I think top-notch quality is a more attractive feature than cross-platform this or freedom that to most end users. If you could get wonder and then some from a LiveCD, you would play with them and not go back. Cross platform necessarily involves trade-offs of various sorts when the platforms supported are that different. This is not to say that following standards is bad. What is bad is the time sink represented trying to *port* to a platform that is opaque, shifty, and whose creators benefit from breaking standards and sloppiness.. and which does not follow the same standard (eg, POSIX/LSB). Windows never has and never will be standards friendly as long as there is a monopoly (monopoly income and power) to protect.

So a modest to small userbase acquired over a painfully long period of time (of "getting used to the latest greatest Windows app") while dealing with the headaches and timesink of fighting Microsoft's sort of platform and realizing the rug will be pulled out form under you tomorrow sending you back to square one (even today MS has a very aggressive push of OOXML on)?


Spend the time and energy to build higher quality apps over a much more friendly environment (especially long-term friendly) while making Linux/BSD/etc grow attractive and seductive at a faster rate with Windows growing stale at a faster rate leading ultimately to a much larger userbase?

Microsoft rules Windows. If you don't work for Microsoft, why bother? Linux really has come a long way and has a huge future ahead of it.

Build the great applications where you are safe and comfortable and have control, and let people like this do the work of bringing in the users. The time is getting close when Linux will be the preferred platform for most users.. I smell it, but I don't want to take it for granted or push that day off further into the future.