GPL v3 julkaistu – mitä se tarkoittaa vapaille ohjelmistoille

GPLv3
Uusi GPL suojaa ohjelmistoja patenttisodilta ja uusilta väärinkäytöstavoilta, taaten ohjelmistojen käyttäjille ja kehittäjille sekä reilut oikeudet että riittävät vapaudet.

70% kaikista vapaista ohjelmistoista on lisensoitu Gnu General Public License v2:n eli GPL:n alaisena. GPL:n version 1 kirjoitti Richard Stallman, vapaan ohjelmistoliikkeen pioneeri, vuonna 1989. Version 2 hän kirjoitti vuonna 1991. Molemmat olivat hänen itsensä (ja lakimiesten) tuotoksia.

Nyt 16 vuoden tauon jälkeen Free Software Foundation on 1,5 vuoden työn tuloksena saanut aikaan version 3. Kun ottaa huomioon kuinka paljon teknologia on kehittynyt 15 vuodessa, GPL v2 on kestänyt ajan hammasta yllättävän pitkään.

Useimmat ohjelmistot on tarkkaan ottaen lisensoitu “GPL v2:lla tai uudemmalla”, mikä tarkoittaa, että kuka tahansa ohjelmiston levittäjä saa päättää, seuraako versiota 2 tai 3. Tämä tarkoittaa, että valtaosa nykyisistä vapaista ohjelmistoista siirtyy puoliautomaattisesti uuden lisenssin piiriin.

Pieni osa ohjelmistoista on kuitenkin nimenomaan lisensoitu versiolla 2. Merkittävin tällainen poikkeus on Linuxin ydin, jota Linus Torvalds ylläpitää. Viimeisen vuoden ajan ovatkin nörtit ympäri maailman saaneet seurata eräänlaista nörttien kauniita ja rohkeita, kun Linus ja Richard ovat väitelleet asian ympärillä.

Noin yleensäkin GPL v3:n laatiminen on ollut todella avoin prosessi, johon kuka tahansa asiasta kiinnostunut on voinut tasavertaisesti osallistua kommentein ja ehdotuksin. Ja tulokset näkyvät: Oikeastaan kenelläkään (paitsi Microsoftilla) ei ole mitään negatiivista sanottavaa uudesta GPL:stä. Sen ovat hyväksyneet useimmat suuret ohjelmisto- ja laitevalmistajat, vaikka edellisen vuoden aikana monet ovatkin olleet epäilevällä kannalla.

GPL v3:ssa on kaksi erittäin merkittävää muutosta:

  1. Monet kuluttajille suunnatut laitteet, kuten matkapuhelimet, digiboksit ja GPS-navigaattorit, sisältävät avoimia ohjelmistoja. Jotkin laitevalmistajat ovat estäneet laitteissaan olevien ohjelmistojen muokkaamisen ja laitteet erikseen tarkistavat, että niissä on valmistajan oma ohjelmisto. GPL v3 kieltää tämän käytännön. Jos valmistajalla on vapaus laittaa laitteeseensa vapaita ohjelmistokomponentteja, on käyttäjälläkin oltava vapaus ottaa ne pois tai korvata ne toisilla.
  2. GPL v3 toteaa, että sen alaiset ohjelmistot eivät ikinä voi olla “tehokkaita suojakeinoja”, jolloin niiden poistamista ei voida estää Jenkkien DMCA:lla tai kotimaisella Lex Karpelalla (josta saatiin jo ensimmäinen oikeuden päätös).
  3. Microsoft on aloittanut avoimen patenttisodankäynnin vapaita ohjelmistoja vastaan tämän vuoden toukokuussa. Hiljaisempia uhkauksia on nähty jo vuosien ajan ja kun Microsoft tänä keväänä teki ensimmäiset liikkeensä, GPL:ään otettiin mukaan klausuulit vastaavaa hyväksikäyttöä vastaan. Jo vanha GPL v2 kyllä toteaa, että ohjelmiston tekijä antaa ohjelmiston käyttäjälle kaikki neljä vapautta (vapaus käyttää, tutkia, jaella ja parantaa), muttei erikseen sano, että jälkikäteen ei saa tulla lyömään patenttisalkulla päähän. Joten GPL v3 erikseen toteaa, että jos jakelet GPL:n alaisia ohjelmistoja, lupaudut samalla ettet hyökkää patenteillasi ketään kyseisten ohjelmistojen käyttäjiä vastaan. Microsoftin hämärä diili Novellin ja muiden yritysten kanssa nimenomaan pyrkii hajoita-ja-hallitse-periaatteella sirpaloimaan avointen ohjelmistojen yhteisön, antamalla patenttisuojan esim. vain Novellin asiakkaille, muttei muille. GPL v3:n alaisen ohjelmiston tapauksessa tällainen epäreilu patenttisuoja ei kelpaa – suoja annetaan kaikille.

GPL:ssä on vielä liuta pienempiä parannuksia, kuten että se erikseen sallii peer-to-peer-verkkojen käytön ohjelmistojen levitykseen (koska P2P:ssähän ohjelmaa kopioiva samalla jakaa sitä muille, jolloin hänen GPL v2:n alla tulisi erikseen tarjota myös lähdekoodit saataville – hyvä esimerkki siitä, että uudet teknologiat voivat helposti rikkoa lisenssin tai lain kirjainta vastaan, vaikka lisenssin henkeä ei rikotakaan).

Todetaan vielä jälkikirjoituksena, että Microsoftin väitteet 235 patenttirikkomuksesta avoimissa ohjelmistoissa eivät ikinä tule kestämään päivänvaloa. Jos patentit olisivat oikeasti hyviä, ne olisi jo nimetty ja oikeusjutut isoja firmoja vastaan käynnistetty. Koska Microsoft tyytyy vain pelottelemaan eikä edes suostu kertomaan mitä patentteja muka rikotaan, tilanne on klassinen FUD. Avoimia ohjelmistoja tekevät tahot eivät voi itsekään alkaa tonkia Microsoftin patentteja, vaikka ne julkisia ovatkin, sillä tällöin riskinä on, että heitä voidaan syyttää selvemmin jonkin patentin tahallisesta rikkomisesta, jos heillä on siitä jotain tietoa. Ja muistetaan nyt sekin, että Bill Gates vuonna 1991 oli itse ohjelmistopatenttien vastustaja. Mutta ei taida Bill enää pystyä luomaansa kolossia hallitsemaan.

Otetaan esimerkiksi patentti 7016055, jonka Microsoft sai vuoden 21.3.2006. Nimeltään patentti on “Synchronization of Plugins”, mutta tiivistelmässä todetaan, että

“A system and process for ensuring the smooth flow of electronic ink is described. Dynamic rendering is give priority over other event handlers. Priority may be the use of one or more queues to order when events occur and may be performing dynamic rendering prior to other steps.” (sic)

Kuulostaa hienolta – miten virtuaalisen musteen saa valumaan luonnollisen oloisesti esimerkiksi piirto-ohjelmassa. Siihenhän voi kehitellä vaikka minkälaisia hienoja tekniikoita ja algoritmeja, mutta tuo tiivistelmä viittaa lähinnä etuoikeusjonoon (priority queue). Patentin lukemalla voi todeta, ettei patentti sisällä oikeasti mitään muuta. Microsoft on siis saanut patentin idealle, että digitaalinen muste leviää kivemmin, kun sitä tekee korkeammalla prioriteetilla kuin muita järjestelmän toimintoja. Samalla tavallahan Windowsin hiiren kursoriakin on liikuteltu yli 10 vuotta ja priority queue lienee tuttu käsite kaikille ohjelmointiin tutustuneille – ehkä siksi, että se on ollut peruskauraa jo vuosikymmenten ajan. Eli jos ja kun muutkin Microsoftin patentit ovat samaa tasoa, ei niiden kanssa ikinä uskalleta oikeuteen asti, josta ne naurettaisiin ulos alta aikayksikön.

Enemmän yllä oleva esimerkki kyllä kertoo USA:n patenttitoimiston surkeasta tilasta. Onneksi meillä EU:ssa ei vielä ole softapatentteja – Microsoftilla on kyllä pitkä jono niitä odottamassa läpipääsyään EU:ssakin. Lisätietoja softapatenteista on vaikkapa EFFIn sivuilla.

MacBook+Linux, suomalaiset näppäimet

Moni muukin lienee huomannut, että MacBookista puuttuu se AltGr. Hakasulkujen ja piippujen etsimisessä meneekin pieni tovi. Mac OS X:ssä ne löytyvät Alt-napin takaa vähän hassuista paikoista, mutta löytyvät kuitenkin. Linuxissa asia ei ole näin hyvin ainakaan automaattisesti. Tarvittavat muutokset tehdään xorg.conf-tiedoston InputDevice-lohkoon, jossa määritetään näppäimistö.

Okei, pari vaihtoehtoa: Jos tykkää Mac OS X:n sijoitteluista, voi xorg.conf:ssa sanoa

Option "XkbModel "macbook79"

ja asia on sitä myöten selvä, joskaan ihan kaikkia erikoisnäppäimiä ei ole suomalaisittain odotetussa paikassa. Tämä vaihtoehto tekee oikean omppunapin oikealla olevan toisen enterin toimimaan AltGr-nappina, eli sillä saadaan ne erikoismerkit, jotka Mac OS X:ssä tulevat Altin takaa. (Huom: Voipi vaatia aika tuoreen Linuxin, mielellään Ubuntun, jossa tuo macbook79 on mukana.)

Jos tykkää normaalista suomalaisen näppäimistön sijoittelusta, voipi sanoa

Option "XkbModel" "pc105"
Option "XkbLayout" "fi"

jolloin kaikki toimii kuten norminäppiksessä, mutta tällöin näppäimistöstä puuttuu se AltGr. Harmillista. Tilanteen voi korjata lisäämällä toisen seuraavista riippuen siitä, haluaako AltGr:ksi oikean ompun, vaiko sen vieressä olevan turhake-enterin:

Option "XkbOptions" "lv3:rwin_switch"
Option "XkbOptions" "lv3:enter_switch"

From Linux to Mac: Days 5-7

I installed XiphQT to enable Ogg Vorbis, FLAC and other better than mp3 music formats. I also installed subversion using MacPorts so I can access my work files and other documents on my server. Subversion in combination with the sshfs allows for pretty good file sharing already, but I’ll need to look at nfs sharing still. SSHKeyChain is a good free piece of software to replace Linux’s ssh-agent, and a bit more.

Regarding iTunes, I also tested the podcasting and videocasting features of it. So far my podcasting has happened via a Linux server that downloads new entries from my feeds every night, and I just copy new stuff into my player when I’ve listened to everything in it. I don’t use the player for music, just for podcasts.

I stumbled upon another recent Mac convert, and his gripes about Mac. Good reading, especially the comments, where most of his problems are addressed. My main problem still is that a windowing system controlled by a mouse is just too clumsy and slow. I find myself spending much too much time just juggling the application windows around. So while Mac is definitely something I’d recommend to any normal computer user over a Windows machine (due to both usability and security issues), but the possibilities of tweaking the UI to match a power user’s needs just are insufficient, just as they are in Windows. The next release of Mac OS X should have virtual desktops, so that might help a bit. But I guess I’ll need to do a triple boot system with Linux and see how much of the hardware I can get to work in a pure Linux system.

Well, as I complained about this, my colleagues pointed out QuickSilver, which should allow me to do more using just the keyboard, and not having to bother with the mouse. Let’s install and see.

From Linux to Mac: Days 3-4

During the weekend I managed to start using iPhoto and iTunes. Very impressive pieces of software, I must say. No wonder so many people use iTunes. I did import most of my music and photo collections into the applications. There are some aspects where I’d like more control over how they operate, but I guess I’ll just try them out for a while.

I also installed MacFuse so I can mount files over ssh. Didn’t have time to test it out, though.

After some tweaking I also turned off FileVault – it was just too cumbersome to move files around, and with the ultra-slow (and ultra-secure, I guess) deletion logouts were a bit of a pain. After all, I do open source work, and publications, and such, so there are no classified secrets on my machine.

The Finnish keyboard layout is a bit of a hack. Important special characters needed in shells, like “|”, “@” or “$” were a bit difficult to find, but at least they are accessible. Special characters in file names are also a bit problematic. Apparently Mac uses UTF-8, but the Terminal, of course, cannot handle unicode. So I need to find another terminal for that.

Of course, the Ubuntu Linuxes I’ve installed work quite nicely. I’m starting to think that VMWare has handled Linux support better than Parallels. On the Windows side there isn’t much difference. I’ll post the details later when I’ve gone through all combinations extensively.

From Linux to Mac: Day 2

Restoring the contents of my previous laptop’s hard drive was a bit more complicated than I thought. I got a firewire/usb box I could stick the hard drive into, and Mac OS X easily showed the FAT partitions of the drive when I plugged it in using firewire. However, there was no way to make that firewire drive visible inside VMWare or Parallels to actually access the Linux partitions. An attempt with USB failed because USB doesn’t provide enough power to the drive, and of course the external power source was nowhere to be found, since “firewire is superior”. OK, today I got a new box with two USB connections, one to just provide extra power. Excellent! Now when I plugged it in, Mac OS X showed me the FAT partitions. I unmounted them (dragging them to Trash, which currently is clever enough to look like an eject button when you’re dragging a drive into it), then in the settings of my VMWare’d Ubuntu, selected the USB drive and checked “connect”. Click on Apply, and lo and behold, Ubuntu started mounting the partitions and opening them for me.

OK, nearly there. However, I was using LVM2 on most of the partitions, so I needed something else. Specifically this:
vgscan
lvmscan
vgchange -a y

Then I could just mount all of my logical volumes, and start moving the data to my new laptop.

Meanwhile, I installed NeoOffice, Transmission and Kiiboard. KeyJNote is distributed in source form, so I’m still figuring that out – seems I need to install quite a bit of Python using MacPorts.

From Linux to Mac: Day 1

I’ve been a happy penguin for years now, but my personal laptop (Asus M3000N) died last thursday. Took it for a checkup, and the motherboard is busted. It’s nearly 3 years old, so no point in getting it fixed. Happily, I was promised a new laptop by my employer, MediaLab of UIAH. MediaLab is full of designers and new media professionals, and virtually everyone here uses a Mac. So I was given a brand new MacBook: 2.16GHz, 2GB, 140GB, DVD-RW, WLAN, Bluetooth, IR remote, iSight, and the works.

Obviously, since I’ve worked for years on Linux using ion, I wasn’t going to be very happy with a track pad and a conventional windowing environment, even if it was designed by people who understand something about usability. So my first tasks were to build ways of running Linux on the machine.

What I’ve seen of Macs, they have remarkable energy saving capabilities, plus they plug into practically any peripherals out there. So I figured that at least for now, I’d be happy running Mac OS X natively, and then Linux as my working GUI in a virtual machine. So I went ahead and downloaded and installed the preview versions of both VMWare and Parallels.

Here are the tips I got from experienced Mac users at MediaLab:

  • Do not pay for a .mac account, but get the free account anyway. That way you’ll get an account for iChat, and it doesn’t matter that the .mac account expires in 60 days.
  • Use two fingers on the track pad to scroll.
  • Get a developer account at connect.apple.com. It will allow you to download XCode and other beta and preview software. And you should install XCode and MacPorts, which will allow installation of POSIX software onto the Mac.
  • For installing software, remember to drag-and-drop.

The last piece of advice was maybe the most important one. Basically most Mac software comes in a dmg file, which is a disk image. It will be mounted automatically if you use Safari, and it will usually contain an icon of the software, plus some graphics that apparently are meant to tell you that you should drag the icon into your Applications folder. Right. Well, the first application that I happened to download had some extra magic in it, so it was enough to just drag the icon on top of an installation action to the right of it. This confused me quite a bit, since no other software did that – they had similar graphics with arrows and symbols, but nothing happened no matter where in the area I dragged the icon. Double-clicking on the icon just ran the software, so it wasn’t immediately apparent whether or not the software was installed. OK, so here are the different installation scenarios:

  • dmg with a drag’n'drop application icon in it: either run it directly to evaluate it, or drag’n'drop it to Applications
  • dmg with pkg in it, or a pkg file: double-click the pkg, it will run an installation wizard. Just keep pressing Continue.
  • zip file: it will open semi-automatically, and usually contains a pkg file (double-click that) or a simple application that you drag’n'drop onto Applications
  • tar.gz file: will contain source code for a program – no idea how to handle this, yet.

Well, I managed to install Firefox, VMWare Fusion Beta, Parallels for Mac, OnyX, XCode Tools and MacPorts. I also installed both Ubuntu and Windows XP Professional onto both of the virtual machines, so I can start testing how they perform.

At the end of the day, I installed BootCamp which allowed me to repartition the hard drive and make room for Windows XP. I might be able to use that space for a stand-alone Linux later on.

The final challenge for the day was getting the data from my old laptop’s hard drive, which I’ll write about tomorrow.

Getting Java plugin to Mozilla/Firefox on Debian

I needed to get the Java plugin to work with Mozilla Firefox on yet another Debian workstation. Here’s the (currently updated) instructions:

  1. Get the latest Java Linux self-extracting file (not the RPM)
  2. Become root: sudo -i
  3. Make a folder for the Java environment: mkdir /usr/local/java.sun; cd /usr/local/java.sun (or wherever you want)
  4. Extract the package: sh /path/to/downloaded/jre-whatever.bin – it will extract everything into a subdirectory in the current directory
  5. Make a symlink to ease things: ln -s jre-whatever java.current
  6. Change permissions: chmod -Rc go+rX .
  7. Make symlink to Mozilla’s plugins folder:
    • Personal install (only for your user account): Leave root and make the symlink into your personal mozilla preferences: ln -s /usr/local/java.sun/java.current/plugin/i386/ns7/libjavaplugin_oji.so ~/.mozilla/plugins/
    • Global install (for all users): Continue as root and make the symlink into /usr/lib/mozilla-firefox/plugins, but be prepared to take care of that plugin after every Mozilla or Firefox update.

Recovering a hard drive

The hard drive started showing symptoms already two weeks ago – while I was on a business trip in Hungary! There were more and more unreadable sectors, and the SMART daemon kept complaining about them daily. When I finally got back to Finland the server was still standing, but barely – many libraries had already been corrupted and starting new programs was pretty haphazard. But the currently running services, such as Apache, Zope, Exim, and sshd, were working.

The original disk had been in continuous use for over 5 years, so I guess it was about time for it to fail. It was an IBM Deskstar, and a good quality product it was. OK, I quickly replaced the disk with two hard disks that had some mirrored space on them, and a preinstalled Debian GNU/Linux on them. The backups were for the most part ok (done with flexbackup), but some important files I hadn’t included in the backups. So I needed to try to recoved the data from the failing disk.

I got a copy of Recovery Is Possible, a small Linux CD image that boots up in just about any decent machine with enough RAM and a bootable CD drive, and which contains a good selection of recovery tools. So I set up an old machine with the broken disk and a brand-new disk, and booted up RIP. After adding more memory and replacing the very old CD drive with a more modern one I got the system to boot properly.

The basic tool that did all the work was ddrescue which was bundled in the RIP distribution. DDrescue needs some place to write its log files to, so I created a small partition on the new disk for this purpose, and mounted it, and then created empty partitions that matched the sizes of the partitions I needed to recover. Then it’s just a matter of running

ddrescue /dev/hda1 /dev/hdb1 /work/rescue_hda1.log

to start the rescue of /dev/hd1 into /dev/hdb1, writing the log file into /work/rescue_hda1.log. DDrescue will try different ways to read problematic areas and can usually read lots of sectors that in normal use would just be classified as unreadable. However, a single run usually doesn’t get everything out, and several runs are required. ddrescue stores in its log file which parts of the drive had problems, and subsequent runs just retry the parts that have not been recovered yet. I noticed that after the hard drive heats up, it’s not working as reliably, so letting the machine cool down between attempts helped. Also, adding the parameter “-n 10″ will repeat the process ten times, so you can leave ddrescue to do its work while you go do something else.

Another good trick was to throw the broken hard drive into the freezer. Just wrap it up in a static-protective pouch, let cool off in room temperature or in the fridge, then put it in the freezer and let it stand overnight. Then take it out, let it slowly return to room temperature, take out of the pouch, hook up to the machine and rerun ddrescue a few times. This helped me with one of the partitions, where the errors were right smack in the ext2 inode tables (equivalent to the file allocation tables of Windows disks) meaning that locating files was a bit of a problem. I did work a bit with lde and recovered some critical files manually, but in the end, after two visits to the freezer, ddrescue was able to get the inode tables recovered as well and I got the data out much more easily.

The recovered image on the new drive is of course partially broken, since not all data is usually recovered. You can either just copy the data you need, mounting the partition read-only, or you can try what fsck will do to repair the partition. In any case, you then have most of the data in a working disk where you can copy them to wherever you need them. I had two partitions that weren’t fully backed up, and of the 11GB and 6GB partitions only 15 and 22 kB were left unreadable (while after just the first ddrescue run something like >200kB were unreadable).

Server disk crash

This server’s old hard drive failed last week. “Did you have backups?” Yes, I did. “Had you tested your backups?” No, I hadn’t. Seems my backup routine did not have enough access to all the files that needed to be backed up, so restoring the server has been a bit of a task. But about everything is now more or less coming up. And at the same time I decided to get rid of the old static xstl pages and replace everything with just this blog. At least for now. I’ll write more on the restoration process a bit later…

So why did the backup not work completely? All of the servers I administer have a centralized backup location on one of the servers. There’s a raid 1 stack that receives all backups. The backup software is “flexbackup”, which quite nicely does backups of remote machines over the net. The problem was that I had decided to use the “backup” user account to do the backups, and of course this user did not have enough access to some of the more secure files. The lesson: add the backup user to the groups that have access to stuff that needs to be backed up. Eg: users, staff, www-data, zope, mysql. You get the idea. Also, after setting up the backups, take a look at /var/log/flexbackup (or wherever you’re saving the flexbackup logs) and look for “access denied” messages and see if those files and folders should be included in the backup. If they should, then you need to grant more access to the backup user account.

Disrupting innovations: Linux and mobile phones

Thoughts based on Clayton M. Christensen, and his book “Innovator’s Solution”. The basic tenent is that product (or service) quality increases faster than the consumers’ ability to utilize it. This is true of most industries. This has two major consequences:

  1. It’s possible for a company to start with a poor product and develop it to be better than what’s necessary.
  2. When a product line overshoots (becomes better than needed), a flip in the value chain will happen.

The first consequence means that a startup firm with a new low-quality product (like Sony’s first transistor radios) should not attempt to immediately develop it to match existing alternate solutions, because the cost of development will be huge. Instead it should target the market that currently cannot use the existing solutions – even a low-quality product is better than none. As the product improves in time, it will start taking over the existing solutions’ market shares.

When a product is not good enough, it needs to be improved and optimized. That means that the product layers above and below must be modularized (or commoditized) for the optimization to be possible (to optimize a CPU, the motherboard needs to be modular, as well as the silicon chips and transistors that are used in CPUs). When the product overshoots, it will be commoditized and modularized, allowing for the layers above and below it to start optimization increasing quality (when mobile phone architectures become good enough (as they soon will), they will become modular, which allows the subsystems to be optimized, as well as the services built on top of the architecture).

The organizational changes in the value-chain change radically when a flip occurs as a product becomes modular. Profit is always best made in the layers that are being optimized – since they are not good enough yet, customers will pay for improved versions. The modular layers, however, do not gather great profits, since they are good enough and anybody can produce them.

What does all this have to do with Linux, then? Well, Linux is a modular and open OS, unlike Unix and Windows. Windows and Unix have provided good revenue to their makers, since they’ve been integrated products with good profit margins – the producers of the subsystems have had to build deoptimized products, to fit the proprietary OS. Also the producers of higher level applications have had to adapt their products to fit into the OS. Linux (and OpenSolaris as well) is now changing that playing field: a modular OS is allows its subcomponents to be optimized, and also allows the applications to be optimized to specific uses. Instead of the development happening in the OS, the OS is now the modular architecture, that allows improvement of the subcomponents (drivers and lower level services) as well as applications (building Linux-based customized solutions, such as the Nokia 770 Internet tablet).

Why can Linux do this? Because it is not targeting the users of Microsoft Windows (even if Microsoft likes to think Linux competes with it, it actually does not), but the users that Windows does not serve. On the one hand Linux is good for geeks that need extra control of the OSs, but more importantly, Linux is good for those who cannot afford Windows. There’s a couple of billion people in southern Asia that can’t afford Windows licenses. While a Linux desktop might have problems and not be as good as Windows, it’s better than nothing, which the users have had before Linux.

Another area where Linux is gaining is in the web server sector. There’s no way Linux can compete with mainframe OSs, but the web servers are a new area where the traditional OSs can’t cut it.

And because technology always evolves faster than the users’ ability to use it, Linux will catch up. In some years (maybe a decade), it will be good enough for the average consumer and for corporate mainframes. But right now the modular Linux platform allows the optimization of services (like Apache, MySQL, the GNU C compiler, and countless others) as well as applications (Google, Yahoo, eBay, Nokia 770, and many more).

Linux is a good example of a disrupting innovation – it will disrupt the existing products and services, forcing them to either flee away (to concentrate on their own high-fidelity customers that demand the best) or to disintegrate (become modular and allow competition to form in the adjacent layers). Disintegration is the inevitable outcome for older players, and since modularization means lesser profits, they also need to change tactics – move up the value chain, to be specific. Microsoft will need to start concentrating on services that can be used on top of any OS. There’s no money to be made in OSs in a few years, since Linux (which cannot generate revenue as it is free as in beer) will take over the OS market. Money will be made in producing and selling better subsystems and better applications (the adjacent layers). Whether or not Microsoft can make this transition pretty much decides its fate. And the companies that have been creating added value to a modular OS during all this time will have an advantage.

The same trend is also happening with mobile phones. Nokia is a strong player in mobile phones, which have been proprietary, optimized products. It has has large profit margins, while its subcontractors have had no profits to talk about. But the mobile phone architecture it getting good enough. This is when the flip will happen: the phones will become modular, and the profits will move to the subcontractors who will start optimizing their components that any phone assembler can then use, as well as those who will start creating added value based on the modular mobile phone platform. Looking at the higher level, this has already started to happen – there’s only a couple of standards that can be used to create applications. But the challenge for Nokia is to survive the transition at the lower level. When the profits move from the phone assembler’s level to subsystem developers, Nokia’s current business model will be gone.

Nokia’s strategy has been chosen already: they’ve given away the OS for free, which means that they will start buying their component suppliers soon – not to integrate them into themselves, but just to get a hand on the profits they will get when their products start having better margins. Another possibility is to just stay at the integrator role, buy components (and encourage very high competition in that market to drive the prices down) and provide added value in the way of services and software components built on the modular, open OS that they’ve released. Time will tell.