17
May
I have mentioned it before, and I will repeat it here again: any commercial software vendor pondering to sell his product or service on the Linux platform is horrified by the complications he has to deal with.
As you might know, I am involved with FreeNX, the project to make remote GUI access fast. FreeNX is based on the core NX libraries and utilities which are developed by NoMachine.com (a commercial company), but released under the GPL.
Now, releasing code under the GPL, and for free, doesn't sustain a commercial company. What NoMachine does for a living, is to compile their code and bundle it into an "NX Server" product, put some good propietary addons into the bag and sell the thing, while still releasing the core parts as GPL-source code. Their source code is an invaluable gift to the Free and Open Source Software communities -- but it requires an experienced user to compile, install and use. NoMachine's server products are easy to handle. FreeNX makes the source code gift from NoMachine usable for a broader user base.
NX and FreeNX are pretty cool, because they can help you to gain remote access to your own company desktop while you are "on the road" or working from a home office -- and it works amazingly well even over a dial-up modem link. Or they can help to create and run a Linux (and Cross Platform) Application Server Farm for Thin and Fat Clients much more efficiently than by using traditional means like LTSP. NX and FreeNX provide the fastest remote GUI experience that is out there, and the most secure one (using SSH) over the internet.]
But this is not an editorial about the technical merits and features of NX. I'd rather take it as example to hightlight another topic: the pains any ISV has to take upon himself if he decides to support the Linux OS with his products.
Look that the download site of NoMachine.com, look closely on the list of NX Clients they offer (for free as in beer, I should say -- NoMachine only charge for their server licenses):
- there is exactly 1 MS Windows executable for download,
- while there are 16 (in words: sixteen) different packages for Linux for download.
Moreover, I know that this one Window NX Client executable works, and works fine on Windows 95, Windows 98, Windows ME, Windows 2000 and Windows XP (don't know about Windows 2003) -- MS operating system spanning over a decade. And it sports an easy to use installer.
Enter Linux. There are 7 different packages that support SuSE. (SuSE versions 7.3 - 9.2, RPMs as well as statically linked versions in tar.gz format). There are 6 different packages to support Red Hat and Fedora. There are *rpms, *.debs and *.tar.gzs package formats... But the versions supported span not even 5 years.
Can you imagine how much blood, sweat and tears (let alone time, money and other resources) it takes to create a single new release of their software? Create all these packages, test them, upload to the website and adapt the website too to reflect the new versions?
Now, NoMachine for sure is a very Linux and Unix-affine company. They and their workers have already some tradition and experience in developing and packaging for Linux. But what about ISVs pondering to move from their current "Windows-only" realm into a "Linux-too" world?
The NoMachine download website does highlight in a nutshell the problems any ISV has to solve before he can offer his products for the Linux platform.
Ah, I hear voices saying "Linux Standards Base!" Oh, yes. The LSB is great. But is its version 2.0 already something that can satisfy a software vendor interested in Linux? When will version 3.0 be ready? If soon -- how long will it take for the Linux distributions to adapt it? How long will it take to re-create or re-compile all the software that by now runs fine on their current hosts so that it complies to the LSB? How long will it take to provide a KDE version that complies to LSB 3.0?
Now imagine you are an ISV (independent software vendor) who wants to offer his software on a Linux desktop. You don't want to do the ugly thing -- you want to integrate it as tightly as possible into the environment it runs in.
"Easy", you say. "Take KDE!". Yes, KDE is a great platform to develop for. But what about the other desktop environments? You sure want your app to run there too, and to utilize their infrastructure (or at least what they offer for one).
An ISV new to Linux does not want to decide for one of the two desktops. He wants his products to run on both. He does not want (or he can not afford) to package 16 different versions for each point release of his software. And he wants an assurance that his current release will run and work well even in the KDE of 2008.
How can we solve that? How we can offer ISVs an entry point to the Linux desktop platform that is manageable for them?
The future of the Linux desktop, in terms of adoption, offers two different alternatives:
- either it basically remains what it is now: a desktop system used by
geeks and nerds, and a few ambitious industrial or governmental
early adapters, where there is no major buy-in from the
traditional ISVs, and where there are substantially less than 5%
of workstations running a Linux desktop. - or it evolves into a platform that conquers not only a few corners
of the market, but a substantial chunk (say, at least 25%), and where
each ISV ponders for each if its new products to offer a Linux version.
The fate of the Linux desktop is tightly coupled to how we can solve the fundamental problem highlighted by the example I gave above.
There are a lot of ISVs out there who already invested a lot of time, money and energy into going towards a platform independent direction. But they didn't go for Qt, despite its technological leadership. They did neither go for Gtk. Both, Qt and Gtk are a minority. The overwhelmingly big part of ISVs aiming for "platform independence" have embraced Java.
There is a whole big ecosystem of Java programs out there. There is the big community that has formed around the Eclipse framework and plugin system.
How can we make these programs first class citizens in our desktop environment?
Note, I do not mean that these programs should simply run. (That we already had with Acrobat Reader 4). What I mean is that they should, to the user, feel native, look native, behave native and fully utilize the native infrastructure of KDE. What I mean is that we should give an ISV who has years of Java development experience to develop a Java application that is a KDE program as soon as it runs on a KDE desktop.
Our current assets on this front are things like the QtGtk library and the Gtk-Qt Theme Engine. These are nice -- and certainly better than anything else there is for other desktops. But they are not enough.
Recently it came to my mind what the Ghostscript folks invented for themselves, already a few years ago. (Actually, the development was originally initiated by HP). And I wonder if this could be something of a model that could be used for the desktop as a whole.
Ghostscript previously has had all printer drivers compiled in. 200 or 300 different drivers (depending on your version of it) all statically linked in! Ghostscript is a beast... For every new printer model/driver to support it would require to be newly compiled.
The solution was to create a core Ghostscript and a plugin interface. The interface is able to ingest external driver plugins, which add functionality to the core Ghostscript. The thingie is called "IJS" (InkJet Server) -- but the "inkject" in its name has historical reasons. Ghostscript still supports older drivers (compiled in) -- but future work will more and more lean on utilizing external plugin drivers. IJS is more than a oneway pipe. It is a two way communication channel. It is a protocol. It is meant to remain stable and unchanged for many years. It is the new native way of executing modern printer drivers. But it is also meant to allow innovation, inside the Ghostscript core as well as outside of it, by whatever the printer driver developers may come up with, where the stable IJS interface accomodates both needs.
I am not a developer. I am not sure if what I imagine can become true. (One can dream, eh?) Someone with more knowledge will have to think hard about it. But tell me: why can't we create an intermediate layer for KDE that enables 3rd party software to run natively in our environment? We have "language bindings", which enable non-C++, non-Qt languages to create KDE applications. Why can't we have a "KDE Desktop binding"? Think of it as an analogon to the IJS interface of Ghostscript. The "KDE Desktop binding" would have to provide a well-defined, longterm-stable interface and protocol for ISVs to code towards. It this intermediate layer should in turn empower the application to gain as much native feel (not just look) as possible. And if we win the Gnome camp to support it via Freedesktop.org, it would guarantee that each and every application would run natively inside each desktop environment -- ISV products included.
- pipitas's blog
- Login or register to post comments
- 559 reads

Comments
Desktop binding / LSB
A KDE Desktop binding would be a good idea indeed. Even better would be a "Linux Desktop Binding" that autodetects the enviroment and integrates with whatever desktop is running at the moment.
As far as LSB goes, people are working hard to get LSB 3.0 done. There are also plans for both Gtk and Qt based LSB parts aimed to cover desktops. Qt licensing is a problem here as well, but there is productive dialog going on so there is hope that that can be resolved.
We can of course help the people that are working on LSB by providing them with information about the libraries that KDE uses. I started http://wiki.kde.org/tiki-index.php?page=LSB for that, unfortunately I haven't had much time to add much too it.
Java and KDE
Based on my knowledge of Java I guess it would be a good candidate for KDE integration.
Almost all relevant parts of the Java classlib can be configured by configuration file or commandline parameter.
AWT, Swind Look&Feels, Printsystem, Sockets, etc.
I think the KJAS framework uses this to have Java applets access KIO without them knowing about it.
Not sure if the KDE Java bindings could be used to accelerate any such replacement implementation or if this would be one indirection to much.
g++ ABI ?
Amen.
Hmm... wouldn't the first step be a stable g++ ABI ?
I remember reading on autopackage.org about how gcc 3.3 and gcc 4.0 generated binaries are not compatible and cause random crashes.
If _that_ could happen, then only things can proceed from there.
--
Swaroop
http://www.swaroopch.info
Not so obvious answer
Note: following hypothesis can be very weird for you, so be warned. :)
This may be funny, but a very special licensing terms can solve a few problems. Imagine entire KDE (and a few other) developer community agreed on following license addition (let's forget obvious problems with *GPL that can arise):
"Distribution of this software in binary form is permitted if and only if binaries were build using official source code delivered by KDE Team. Any changes and fixes made to the source code outside of the KDE Project (read: distribution makers) must not break official KDE's Binary Compatibility and Behaviour Tests. In a case when any of these requrements are not met, distributing binaries outside of an organization is not permitted."
Yeah, this is utopia, a modified flavour of "freedom as in... what?" Don't know. After years, we're dependent on Qt, other hundreds of other packages with solid licenses (except for BSD-like). And there's no single person/organization able to tell/ask/force you and me to go this way. For now, many of us are more and more annoyed by making use of "freedom to breaking compatibility", no matter if that's thoughtless "for fun" activity (read: free distributions like that) or to actions performed to differentiatiate from a competition (read: commercial distributions like that).
The question is: can we adopt a piece of such "Binary Compatibility and Behaviour Tests" in the future? You may ask "why? -- we still have incompatible C++ ABIs". Hmmm. This is entire industry's fault, not only FOSS.
What would be changed? Current state is that, e.g. Mandriva dev says "I want be a hot distro so I will include all unofficial tweaks here". SuSE dev: "me too, and I want to make the code faster, so I am gonna to tweak entire compilation process". The state after "the change": "Mandriva and SuSE: ah, we really can't drop KDE from our offer... so we need to comply... whit these requirements". But we have still Gentoo, with it's ecosystem incompatible with the new way...
Of course even if mentioned "tests" were delivered even in a small piece, what can be unlikely, we will need to wait another 2 or more years because existing distros' installations are not going to disappear.
We're not in 1995. So it's utopia. What do you think?
freedom as in...
Freedom as in "prison court". But yes, I understand you very well and I even subscribe. Will never happen. Not enough education.
SEP, sort of
There are a few problems here:
In a nutshell there's no silver bullet here. Building packages is hard; there's nothing to motivate the non-commercial elements of the community to standardize and there's a reason for the largest Linux distributions to not want standardization.
Even the packaging systems themselves really aren't set up with ISVs in mind.
Looking at it I'd say it's a commercial opportunity waiting to happen -- a company that takes a source tree and handles the package generation for a certain set of Linux distributions.
In essence, this is a problem that ISVs have and it's a problem that ISVs will have to influence the solution on. ISVs are nice, but generally speaking the Linux community doesn't and won't fix their problems for them. When they want this sort of thing solved they have to step up and be part of the solution. In fact that is happening with major ISVs getting behind things like the LSB, Linux kernel development, etc.
license problems, as always.
The first question you ask; is why eclipse stuff can't work with KDE better. There are a lot of problems with the framework including the swt widgetset that it uses. It only works really well on Windows and moderately using gtk. There is a Qt version available, but thats illegal since swt and eclipse are licensed in a bsd-like license and therefor can't use the gpl version of Qt.
But you ask several questions here; a good second is how we can create a library that an ISV can program to and be guaranteed to work on all linux-boxes. Well; Qt is such a library, Gtk is another. Creating a layer on top of them is not a smart thing to do from a maintainance point of view. (though I'm sure there have been attempts already). With Qt and KDE already in place I don't really see what problem will be solved with such a solution in the first place. The current problem I hear about is that companies go for GTK since its cheaper to build on top of, only to find out halve way through that it would have been cheaper to use Qt instead, including paying the license. There need to be better total-cost-of-project papers out there for KDE versus Gnome. And not from open source projects either!
I've been doing Java for work for a long time; you can see the results from my work in a recent blog of mine.. Note that that screenshot is JavaSwing.
More importantly; it uses QtDesigner for most of its UIs and I wrote an application to parse the xml-based .ui file and spit out Java code. In fact it can spit out just about any code you want, so creating Java SWT code is an option, but spitting out Java code that uses the kdeJava-bindings is another, if only someone will program that :) See also this email on an option. Maybe thats something worth persuing?
Personally; I'm not even sure why LSB does not help the situation...
not quite
There is a Qt version available, but thats illegal since swt and eclipse are licensed in a bsd-like license and therefor can’t use the gpl version of Qt.
BSD'ed software can link to GPL'ed software without problems, it's just that you'll still be restricted by the terms of the GPL. For Eclipse this creates a problem because they're essentially distributing a toolkit as well and they don't know in advance which applications will use that toolkit.
So, for example, if someone writes a proprietary application on Windows using Eclipse they can't move that over to UNIX using the Qt bindings because they don't own a Qt license.
For IBM that's obviously a show-stopper since they can't require everyone who wants to develop with Eclipse to buy a Qt license.
are you sure?
if someone writes a proprietary application on Windows using Eclipse they can’t move that over to UNIX using the Qt bindings
They use SWT, how does it affect them which version the user has installed?
I think that the licence SWT is under contains something that makes it explicitly incompatible with GPL code, also GPL'ed application code.
step by step
Ok, here's the step by step:
- FooCorp develops Foomatic with Eclipse
- FooCorp releases Foomatic under a proprietary license
- John Userman downloads Foomatic
- John Userman is using the Qt bindings
- The Qt GPL license has been violated because it's now linked to a proprietary library and FooCorp isn't allowed to link their proprietary application to Qt without a commercial license
This isn't a made up case -- this is why the Qt version was never released.