As many of you are aware, the FreeDesktop.org project aims at bringing together some common aspects of the free desktop. However, when developing applications, one is still forced to focus either on GTK or QT and in doing so direct their product at one audience predominantly. QT apps can run in Gnome (or Xfce) and GTK apps in KDE, however they don't look fully integrated. Furthermore, because of the fundamental coding differences between GTK and QT, we often have redundant efforts into relatively mirror software programs, one aimed at each major desktop.
I'm certainly not the first to suggest this, but isn't now specifically a good time to consider more fully merging the two technologies? With the major refactoring of KDE 4 and QT 4, there are some major new core technologies that any developer should be excited about. KDE is also embracing Tango, DBus, and many of the FreeDesktop.org concepts.
Furthermore, one of the major arguments for keeping GTK and QT separate technologies has been C vs C++, however both now have diverse language bindings. Developers should be able to develop in any language they choose, and not have the language be mandated by the toolkit. Honestly, the only good reason to keep them separate is in design. People who prefer GTK styles or widgets opt to develop with GTK, and vice versa. Couldn't there be a universal library that is capable of operating in appearance and usability like both GTK and QT when it comes to widgets and visuals? In fact merging the two might extend both and not only enable developers to reach a broader audience easier, but unlock more power and potential for everyone.
Choice is important, and one should never lose the ability to run their desktop how they see fit. Neither Gnome nor KDE should lose all their efforts into developing their vision of the desktop, however further merging core technologies and libraries means opening up these powerful tools to developers for all free desktops.
Imagine any application being able to tap into the potential merged technologies of:
- Cairo - A sophisticated 2D vector graphics library.
- Pango - A library for laying out and rendering of text, with an emphasis on internationalization.
- D-Bus - Interprocess communication system.
- GStreamer - A multimedia framework.
- HAL - A specification and an implementation of a hardware abstraction layer.
- Poppler - A PDF rendering library.
- Tango Desktop Project - Which aims to provide a common visual standard across different platforms.
- Solid - Making a universal hardware layer is CRUCIAL. Given that both projects utilize Hal and DBus, taking it one step further isn't a huge stretch. Further developing Solid could tie into working with kernel developers to examine how to best handle hardware from the kernel into userspace, and reexaming exactly what portions belong in each space.
- Phonon - I hate to sound like a dissenter, but audio on the FreeDesktop leaves much to be desired. Phonon aims to fix this.
- Sonnet - An advanced dictionary that I believe will be the successor to ASpell
- Decibel - Project providing a service architecture to make chat and phone communication universally available to desktop applications
- Plasma - Plasma would have to be extended to support and operate like Gnome's deskbar and desktop, but it is a powerful tool to create widgets and plasmoids that would offer great flexibility to all parties.
- Strigi - I know there are many search technologies, and I'm assuming the best aspects of each could hopefully be factored into Strigi
- Semantic Desktop - I am familiar with NEOMUK, and perhaps there are other projects that could be brought to this table.
- Gnome VFS - The Gnome virtual file system.
- Gnome Keyring - For storing encryption keys and security information.
- Bonobo/KParts - Again, merge the best features of these two technologies to create a powerful universal component model
- LibXML - The XML library.
- ORBit - The CORBA ORB for software componentry.
- A merged composite technology for nifty eye-candy. Compiz and Beryl merged though many thought it wasn't possible. Now Kwin is being rewritten with many of the same features that Compiz would provide, but is duplicating efforts. No doubt Gnome, KDE, Xfce and all the rest will want to retain separate WM's, but a core unified underlying base for composite extensions should be established.
- Translation - Obviously different desktop projects each have different apps, and a bunch of different text, but many of the core terms and documents could be brought together to simply translation on the free desktop.
I know KDE is developing an icon-caching system given that KDE 4 is going to heavily utilize SVG to better scale everything on the desktop. I'm not sure if Gnome has a similar system.
Integrating core technologies involves on getting people who currently see things differently to come together. Some may dismiss this as an impossible goal, however that isn't the case. Ideally these technologies should be flexible enough to achieve the results that everyone is looking for while providing a unified base to avoid duplication of efforts.
Lastly, what I'm proposing is no small task. I fully understand that it involves a great deal of work, and in doing so, it would temporarily pause/strain development of projects like Gnome and KDE from moving forward in their current separate ways. However, the initial work may be daunting but imagine how much time and effort would be saved in the long run when we drastically cut down on duplicating efforts.
In many ways this is a win-win, and really such an obviously beneficial move, it should at the very least be revisited and given considerable thought. The sooner such a merge of core technologies takes place, the more time you save in the long run, and the easier such a merge takes place. As duplication in code continues, the more time consuming it will be to examine all the duplicate code and agree on how to merge the two.
At the very least, I hope existing efforts can continue and the FreeDesktop.org project should choose one or two new areas to focus on in bringing everyone together, like Strigi/Beagle or Solid. So please, before dismissing this out of hand, at the very least look over the above list and consider if any of those technologies could be or should be merged into a FreeDesktop standard library for everyone to use.