One of those ideas that have gripped me recently is the fact that I no longer want to depend on a single operating system or a specific, restricted set of applications for my computing needs, be it open source or closed. For me, what matters is my workflow and not being dependent or tied down to one particular piece of software to do my work. While this might sound a bit woolly and idealistic, I have been consciously working towards the eventual goal that is, being able to use any open-source Operating System and get my work done.
Currently though, the ambition is tempered by several factors that make it impracticable. In this article, I attempt to explore some of the issues involved. Not all issues are directly related, but each issue has some influence on the question I ask: can I be as platform independent as possible? Can I replace my entire platform one fine day and still be able to continue working with my data and applications?
The Broad Concept
The broad concept can be summed up as follows: try to be as technology neutral as possible, and if at all you must depend on technology for your work, don't depend entirely on any single, specific technology. Even shorter summary: don't put all your eggs in one basket.
Why Open Source/Free Software?
I am unwilling to consider any proprietary solution because it is obvious that proprietary vendors thrive on vendor lock-in and proprietary file formats. This automatically makes my workflow dependent on a single software and prevents easy migration of data from one software to another. Another problem is that proprietary software can be abandoned one fine day, with nobody to pick up development. This makes any non-standard, binary data dependent on proprietary software extremely fragile.
Why not just rely on any single Open Source/Free Software Operating System?
For similar reasons as to why I don't want to be tied down to proprietary software. Any one Open Source OS and the software that are bundled with it may be abandoned by its developers one day and while this is not as serious a problem as with proprietary software, it still means that somebody else has to show enough interest in the project to take it over and develop it actively. I want to avoid being tied down to a single Operating System with its particular set of applications which may tie down my data to a particular format and make portability harder.
This is one reason why I am actively trying to avoid Desktop Environment-specific applications in Linux. Apps tied down to a particular Desktop Environment like KDE or GNOME reduce portability in general and also render themselves dependent on the complex libraries of those software. I prefer simplicity and apps not dependent on too many libraries. But equally I place a high value on applications that store data in well-documented, interchangeable formats.
Therefore with regard to Open Source Software which work on my data, I prefer to use:
- Actively maintained applications.
- Applications that are cross-platform and portable.
- Applications that store data in standard formats (preferably Open standards) and make data portability easier.
The Issue with Web Applications
Many may think that the web is the most platform-independent solution to application development. While this may be true to a large extent, the practical issues are data portability and reliance on an active, stable and fast internet connection all the time. Even with web applications, I prefer applications that store data in easily retrievable formats for offline storage/backup and provide a mechanism to do so.
Storing data on the cloud and relying on the cloud entirely is something I want to avoid as much as possible because of the aforementioned reason: being dependent on an active internet/network connection to access my data and the fact that I am dependent on the cloud service provider at all times. Hard disks are cheap these days and multipe offline backups are also cost-effective compared to data on the cloud.
Practical Issues: Or Why Platform Irrelevance May Be Hard to Achieve
While all the above theories may sound nice, I tried to achieve some measure of platform independence with my workflow. For the present, my limited ambition is to achieve a degree of platform irrelevance at least among the various mainstream Linux distributions and also other UNIX-like Operating systems, notably the BSDs.
However, I have found issues that I am unable to address at the moment. The biggest problem is not software, but hardware compatibility and drivers, particularly with the BSD operating systems. While Linux has advanced in leaps in bounds in supporting as many hardware and peripherals as possible over the years, the BSDs haven't kept up. This means, I lose functionality at the outset. Even if I accept reduced hardware functionality, I still have the issue of certain Linux applications that just won't compile or run on the BSDs.
Even among Linux distributions, I have had trouble getting software to compile on every distribution. This is mainly because some libraries on some distributions are compiled with slightly different options or the library versions don't match. Keeping up with the problem requires considerable time and persistence. One simple example may be of help here. Recently, when I installed Slackware Linux on my laptop (besides Debian), I found that I could not get MyPaint, an excellent paint program for Linux that supports Wacom tablets and a number of realistic brushes, to work. This was because pygtk (the Python GTK bindings), a dependency of MyPaint was not compiled with numpy (numeric Python module) support in Slackware. MyPaint relies on pygtk compiled with numpy support. This issue, of course, is an obscure one affecting very few software, but it illustrates my point above.
Sometimes even getting certain Linux-native applications to work on different distributions may be tricky because of dependence or reliance on distribution specific features or utilities. This doesn't affect the most popular software and for that reason, I feel that achieving true platform irrelevance may be difficult if one relies on non-popular or obscure software.
The larger issue is that of specialized applications that professionals have to use in their regular work and which require platform-specific features and use obscure or non-standard file formats that are not easily convertible to other formats. This problem is the biggest barrier to overcome and is not as easy to overcome as it appears.
- Cross platform irrelevance is nice theory, but much harder to achieve in practice. One doesn't realize how dependent one becomes on features provided by a particular software application, platform or OS until one stops using it.
- The best way to achieve a certain measure of platform irrelevance is to use file formats that are easily interchangeable and use open standards and can be used natively by different applications.
- Not relying on specialized tools or applications that rely on specific OS features is a start. This may be impractical for IT professionals and software developers whose job rely on specialized tools and apps, and impossible for people working in specialized areas like CAD/CAM that demand features limited to expensive proprietary software on high-end hardware, but a normal computer user can achieve it with some effort.
- Using popular and cross-platform Open Source applications that are in active development and using interchangeable and open file formats is definitely better than using less popular software that use file formats that aren't standard or easily interchangeable.