Finding alternatives in developing software

Comparing free development tools and libraries with proprietary ones

Download the whole article as PDF

Write a full post in response to this!


Developing software within the free software model can be achieved with all sorts of different tools, but choosing the right tools can make a big difference to the success of your project. Even if you are developing a proprietary solution, there are benefits to using free software tools to achieve it. But what free software tools are available? In this article I’m going to look at the development tools available, from languages and libraries to development environments, as well as examining the issues surrounding the use of free software tools by comparison to their proprietary equivalents.

Development languages

The languages used in your development are generally free. Despite attempts by companies to protect their language specifics from the development community, the majority of those used today fit into the free software category. A lot of these languages are free not necessarily because they were outwardly designed that way but because, like human vocal languages, there was a need for an agreed set of standards.

Choosing the right tools can make a big difference to the success of your project

Unlike the other components in the development process, the language you use must have a very specific set of semantics. This is because, as the basis and groundwork for your applications, there must be a commonly agreed structure. Now imagine if everybody that supposedly used C used a slightly different format for specifying a function. Essentially the structure of the language wouldn’t be standard, and if the structure wasn’t standard then we’d end up with thousands of different languages that might differ apart from the use of a semicolon to terminate lines.

Because of the need for standards, specific languages have specific rule sets and by their very nature these rule sets need to be published for people to program in that language. Ultimately, this means that most languages are technically free software or there is a free software solution for that language available.

Returning to the topic of the available free software languages, off the top of my head, I could probably list 15 commonly used languages that are essentially free, starting with C. C was originally developed as part of the Unix development process and the design specifics and semantics of the language were published; thus we have an open standard and one of the languages with the largest user bases and associated tools, libraries and environments. Most operating systems and their components are written in C and that includes both free software solutions like BSD and Linux and commercial offerings such as Solaris and Windows. This has the benefit that it’s possible to easily extend the operating system by writing more C applications without the need for brand new libraries for basic functionality. Even more ironic is the fact that most other languages now tend to also be written in C and, in most cases, the libraries for those languages ultimately interface to the C equivalents within the operating system.

Other languages which are free including C++, Perl, Python, PHP, Ruby, Pascal, Modula-2, ML, Fortran, Cobol, Lisp, Smalltalk, Tcl, awk/gawk and many others.

Now there are a couple of notable languages which I haven’t mentioned, specifically Java and the “sharp” series from Microsoft, including C# and J#. The first, Java, has free software compilers available for it (notably gcc), but the language itself is a proprietary project of Sun Microsystems. If you want to make full use of the Java language you really need the full Java libraries and associated compatibility, and that only comes from the Java runtime and development environment, which comes from Sun.

Languages which are free including C++, Perl, Python, PHP, Ruby, Pascal, Modula-2, ML, Fortran, Cobol, Lisp, Smalltalk, Tcl, awk/gawk and many others

Similarly, C# and J# are projects developed and managed by Microsoft. Both are object-oriented languages based on C, C++ and Java (and I really do mean a combination of all three, to varying degrees, in each case), which are specially designed to work with the .NET environment.

The Mono Project, .NET without Microsoft
The Mono Project, .NET without Microsoft

Like Java there are free software solutions available; the Mono project have developed a C# compiler and an almost complete .NET library suite which enable you to write, build and deploy C#/.NET applications on Unix and other platforms. But, C# and J# are proprietary languages with the development effort driven by Microsoft.

As you can see, on the whole the development language—the core of any development process—is a free software component, largely by its very design and existence. Now let’s move on and see the effects of other components within the development process.

Development tools

One of the key reasons I write and develop free software is because of the tools and environments available to me. After 15 years as a developer, 12 of them professionally, I still use the same environment I’ve always used; emacs, make or Ant and whatever compilers or tools I need such as C, Perl or Java.

Visual Studio .NET 2005 (Whidbey), currently in beta
Visual Studio .NET 2005 (Whidbey), currently in beta

This might seem a little archaic compared to some of the tools that are available; for example when developing under Windows surely the best choice is one of the various integrated development environments (IDEs) such as Microsoft’s Visual Studio. The problem with these tools is that they expect you to work in a specific way and they often tie you down to that way of working. Within Visual Studio for example you have to use their editor, particularly if you want to use features like code completion and expansion. Visual Studio also expects you to use the libraries and tools in the .NET framework for your development, and it also provides its own build and testing environment. All of these items become constricting components, designed to keep you using the IDE for all of your development and therefore allowing the proprietary developers to force you down a particular development and deployment route.

The benefit of emacs is that it’s an environment I’m familiar with, one which is supported on multiple platforms and one which, with a little more command-line work than others, provides a flexible solution irrespective of the language, and more importantly, the platform on which I am working.

For those that want IDEs there are numerous potential choices available in the free software space. Although emacs is not best known as an IDE, it actually has most of the IDE components available, including project management, source control and building tools. For many of these components, the functionality is actually provided by another free software tool. For example, when building an application you could use GNU make, source control can be managed by the Concurrent Versioning System (CVS) or Subversion and the actual compilation can be processed by gcc.

The Eclipse IDE in action
The Eclipse IDE in action
Don't miss out on the other pages!
12next ›last »

Write a full post in response to this!

Similar articles

0

Do you like this post?
Vote for it!

Copyright information

Verbatim copying and distribution of this entire article is permitted in any medium without royalty provided this notice is preserved.

Biography

Martin Brown: Martin “MC” Brown is a member of the documentation team at MySQL and freelance writer. He has worked with Microsoft as an Subject Matter Expert (SME), is a featured blogger for ComputerWorld, a founding member of AnswerSquad.com, Technical Director of Foodware.net and, and has written books on topics as diverse as Microsoft Certification, iMacs, and free software programming.

admin's picture

Finding the right software for the job

Submitted by admin on Wed, 2006-03-29 06:29.

Vote!
0

From: Shivan Jaikaran
Url: http://www.livejournal.com/users/shivanj
Date: 2005-06-22
Subject: Finding the right software for the job

Great article I must say. One important point was left out however.

When companies look for software solutions, they can choose between propriety software and free software. However, from a company's perpective, it is important to choose the right software for the job, be it propriety or not. Sometimes, just sometimes, free software is not always the *best* solution.

admin's picture

Thanks for your comment!

Submitted by admin on Wed, 2006-03-29 06:30.

Vote!
0

From: Tony Mobily (SUBSCRIBER!)
Url: http://www.mobily.com
Date: 2005-06-22
Subject: Thanks for your comment!

Hello,

Thanks for your comment Shivan!

Merc.

admin's picture

great article...

Submitted by admin on Wed, 2006-03-29 06:32.

Vote!
0

From: Markus
Url:
Date: 2005-06-22
Subject: great article...

Great article, but i think there is one mistake.

C# isn't a proprietary language, it's a free ECMA and ISO standard and not only defined by Microsoft.

admin's picture

Free software solutions and work style

Submitted by admin on Wed, 2006-03-29 06:33.

Vote!
0

From: Krista-Lee Bissoon
Url: http://www.livejournal.com/users/kbissoon
Date: 2005-07-03
Subject: Free software solutions and work style

Very nice article !

Very informative and well-explored points!

I was particularly relieved to see that the article dealt with the point/misconception that free software solutions lock you in to a particular style of working...because they dont!


From the FSM staff...

Odiogo