I want to make my Fedora Linux capable of following :

  1. Use Linux for complete development platform without requiring any other OS installation but still able to build and test programs under different platforms.

  2. Completely replace Windows machine for all the other work e.g. Office, Paint, Remote Desktop, etc.

Can you suggest open source projects and tools for achieving above objectives ?

  • You want to test your program on other platforms with having them installed? Or am I misunderstanding that part Commented Aug 11, 2010 at 17:16
  • 3
    This question is phrased very general and hence not easy to answer. It would help if you could specify a little closer what exactly you want to do. It might be that certain platforms are supported by one solution, but not all possible platforms. Furthermore, do you accept VMs?
    – txwikinger
    Commented Aug 11, 2010 at 17:32

5 Answers 5


Define "platform". You can't reasonably test software meant for use on Windows or Mac without actually running those operating systems, even if it's possible to use cross-compilation to build it on Linux. For real testing on other operating systems, VMware is a great tool.

The second part of your question should probably be a totally separate question. But you can use OpenOffice.org or Google Docs to replace MS Office, Pinta or GIMP or whatever to replace Paint, VNC or Empathy+Vinagre to replace Remote Desktop, etc etc.

It would be easier to answer these questions if you gave some more specific use cases.

  • You may want to remember that Apple only licenses MacOSX to run on Apple-brand computers. Or you could disregard that, depending on how you feel about shrink-wrap licenses. Commented Aug 17, 2010 at 21:45
  • Right, you could of course use OS X as your host OS and run Linux and Windows with VMware Fusion.
    – Sandy
    Commented Aug 17, 2010 at 22:14

You can easily do cross-platform development whether you are a systems programmer, a web developer or a desktop application developer. If you are into systems, then any utilities and/or drivers you write for linux are likely to work well for other *nix with very minimal modifications. Provided that you write standard C code and don't use too many system specific calls, they may be even easy to port to windows.

If you are a desktop application dev, you can target GTK, QT or wxWidgets and your app will likely work well across the major 3 platforms today (*nix, Windows, Mac). Again, keep system specific calls to a minimum or isolate them into a wrapper library that's going to be system specific. You call also target a Virtual Machine like the JVM and/or CLR which will allow application to work across the board.

If you are a web dev, then you are likely to run into too many different alternatives to choose from. I prefer a little web server called Cherokee and I develop and run ASP.NET (mono) and Django apps that run on it and use a PgSQL backend.

So the conclusion is that cross-platform development in Linux can be done, provided that you can compile the code on the target platform and you keep that in mind while writing your code or if you target a VM. The other point is that you may run into The Paradox of Choice and not know what to use. For that read below my answer to the second question.

As to the second question, the best resource I have found is called Open Source Alternatives. This web site lists out commercial software and their open source alternatives. Almost all the alternatives run on Linux and FreeBSD.

  • 1
    Alternative useful websites: 1) alternativeto.net 2) osalt.com 3) linuxalt.com 4) linuxappfinder.com/alternatives 5) ubuntuguide.org/wiki/Alternatives 6) similarsites.com
    – Alex Bitek
    Commented Aug 12, 2010 at 10:54
  • 1
    Sorry, but device drivers are very, very much dependent on the kernel (and even the exact version of it). The pieces that interact directly with the kernel do depend more or less intimately on it (stuff like glibc, ps(1), mount(8)), other "system" pieces much less so (for example, sort(1) or bash(1) are "just" run-of-the-mill C/C++ programs, which will compile and run exactly the same on assorted Unices). The whole GUI stuff is kernel-independent, but has its own rules.
    – vonbrand
    Commented Jan 15, 2013 at 22:21

Weeeeeeel, #1 is quite the doozie, sir. I don't know that there is any way to achieve this goal. Cross-compiling to other *nixes can be done (with a bit of a headache) on your development box, but how exactly are you supposed to run that code without the appropriate OS and architecture? There are extensive forays into system emulation out there, but ultimately this is a cludge. If you want to test software on an OS/architecture, run it on that OS/architecture!

Now, on the other hand, there are tools out there that make it simple to build the same project in vast ranges of configurations. Cmake is probably the most well-known and well-tested. At least this will assist you in testing your project on other systems, or encourage others to do so for you.

To be fare, I'm pretty sure this is impossible on other Operating Systems as well.

#2 is much much easier

and on and on. I would help more, but your questions acuity sharply drops off.


It depends on your target platform. If you are developing for a virtual platform (Java, or even .NET) you should be more then fine. There are some platforms that are even friendlier on Linux than on Windows (e.g. Ruby).

As for Linux as a desktop, you just have to list the software you are looking for. There are hardly any windows desktop software nowadays that does not have a Linux alternative.


MonoDevelop should be able to help you get a handle on the development side:

MonoDevelop is an IDE primarily designed for C# and other .NET languages. MonoDevelop enables developers to quickly write desktop and ASP.NET Web applications on Linux, Windows and Mac OSX. MonoDevelop makes it easy for developers to port .NET applications created with Visual Studio to Linux and to maintain a single code base for all platforms.

(emphasis is mine)

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .