Open Source For A Living

INTRODUCTION:

Today, looking at the corporate world and the software development industry many of you might wonder "Where do I fit in?" and with reasons. When you look around, what do you see? Software development companies left and right all busy creating either their next product or the next version of they existing product. You go to The Google Search Engine and do a search for something and more often than none it seems that there's already hundreds of software that typically do all, or very close to, everything you need the program do to.


If you've searched for applications in particular you might have noticed that Open Source Software seems to pop up a lot. More and more today it seems that Open Source Software is getting to be quite the popular alternative. Not too long ago, open source was viewed as something typically created in a programmer's basement, lacked any and all kinds of dedication, organization and any level of professionalism. They were viewed as code no one would ever want to use for anything serious and so did most Open Source Projects for that matter. With the creation of the Free Software Foundation and the Open Source Initiative as well as the creation of large scale development tools and business applications in the Open Source community it all served to bring great changes to Open Source in relation to the corporate world. It took a long time, just about two decades, but with patience and perseverance Open Source Software took on a new role in the Software Development Industry.


In this article, we'll look at where the professional developer fits in, not only as per the corporate world but also in the open source community all from a "making a living" perspective. We'll take a look at what you can do, as a software developer, to create an impact, make a difference and stand yourself out of the corporate and Open Source realms so that you can have a chance at making a good living from open source software projects and how you can mix the best of both worlds in your every day programming tasks to get you productive to a professional level. As such this article is for the curious software developers all around the world eager to start something that can help them make it in this industry and introduce you to the jungle that is the software development industry. But before we go into all that let's start with an overview of just what is going on today in both worlds.



TODAY'S SOFTWARE DEVELOPMENT AND OPEN SOURCE REALITY:

Just what exactly is going on today in the software development industry? A whole lot. The whole industry seems to be shifting and changing on a regular basis as it pretty much always has since it's birth three or four decades ago. We'll separate the commercial and the open source entities for now as we get a brief coverage of just what today's reality is.


  • The Corporate World:
    If you've looked around a bit, you might have noticed that there's a pattern emerging from the corporate world. The same kind of patter that happened with the television and telecommunication industry. Today, you can get television services from your telephone company and you can get internet and telephone services from your cable company. Likewise, in the software development industry, things are changing in that fashion. We're seeing companies that are diversifying their products and services into new fields. All this for one reason, to answer the need of the corporate world and the customers. How many of you knew that Microsoft™ made a Point of Sale software? And that of course is one of the big companies out there. Small companies are getting to have a hard time competing with the likes of Microsoft™ because these companies have so many developers working for them that it's hard for the smaller companies to come out with a product first. There are things that might have the potential to happen to help the smaller companies, we'll take a look at some later in this article.


  • The Open Source World:
    Because of the reputation the Open Source community has had over the years it became apparent that any Open Source efforts would be seen the same way unless something was done about the situation. With the creation of the Free Software Foundation and the Open Source Initiative and the event of development groups really taking the time to organize their efforts in their Open Source development projects completely changed the image and reputation of the Open Source Community to the eyes of users and most companies alike. With all this the Open Source Community established themselves as an entity that can maintain itself, grow and take it's rightful place in the software development industry and that didn't go unnoticed the corporate world. This was very beneficial to the Open Source Community and is now making quite the impact in both corporate and open source worlds.

This is pretty much, in a nutshell, how both words evolved over the past decades. The main reasons for this evolution was of course the growing needs of the users combined with the bigger and faster computers that kept on surfacing (specifically over the past 15 years or so). The needs and the industry itself has been evolving at a rather fast pace and both manage to follow these needs pretty well if I do say so myself. All these caused some barriers between the corporate and the open source words to break. Let's take a look at what happened on that side from both perspectives.



THE CORPORATE WORLD MIXES WITH OPEN SOURCE:

One of the first thing we can notice in the corporate world is that it seems that more and more companies are creating their own O.S.I. approved Open Source licensing schemes. For example, the I.B.M. Public Licence, The Intel Open Source License, the Microsoft Public License and the Microsoft Reciprocal License and there are others too. Likewise some computer vendors now distribute some flavor of Linux with their computers instead of the traditional Windows PC. This is just to show you how big an impact Open Source has on the industry.


There are more and more examples like this and needless to say that all this is great for both world. The Corporate world gets an OS (and an office suite as they typically install OpenOffice in those Linux systems too) and the open source world gets recognition for their hard work. It helps to both provide more tools that users can just go ahead and use in their PC and to get them renounced which encourages the development teams of these Open Source projects to develop the software even more. One of the many examples of a perfect marriage between the corporate world and the Open Source world.



THE OPEN SOURCE WORLD MIXES WITH THE CORPORATE WORLD:

On the Open Source side, one of the great example that really helped the Open Source Community is the fact that some companies are now fully supporting Linux, not just like I mentioned above by selling their computers with Linux installed, some companies officially distribute and support Linux, for example SuSE Linux and Redhat Linux are Linux distributions that are supported by the corporate world. There are others as well. Needless to say that the impact of this is that developers of these Linux distributions are even more active.


Another aspect of the Open Source world that is gaining popularity is huge projects. Things like the GNU Project and the The Debian Linux Distribution which are project that offer an organization and dedication to their efforts that probably surpasses most commercial projects. This kind of dedication doesn't go unnoticed on the part of the corporate world and as such there are more and more companies using Open Source tools and distributions such as these two in their every day tasks. Both the corporate world and the Open Source world are seemingly starting to work together on a vast variety of levels. This in turn defines our role as software developer into this new reality of today's software development.



THE ROLE OF THE SOFTWARE DEVELOPER IN BOTH THESE WORLDS:

When you look at what's going on today we can see that the corporate and open source worlds are following each other. More and more today we can notice that for much of the commercial application there is an open source counterpart either existing or in the making. This is true, at least, for the well known applications of our time which are the application we would typically use on a day to day basis. With this in mind there are still many other programs that dont have their open source counterparts. The software developer's role, I believe, is to take a look at what's out there, see what's missing (in both the commercial and open source worlds) and fill in the gaps so to speak. It's there that often you'll search for an idea or inspiration you have to see if has already been made and you might find that it has indeed already been made. But this is not true for every software idea.


There are big engines that are created, engines like G.I.S. systems, database environments and report generating engines. What is missing is applications that actually make use of these engines. Specifically G.I.S. related applications. And many of the existing tools seemed to be designed for developers, not for the actual users per se. Tools that would simplify the use of these big environments. This is true for many applications and engines out there. It seems the user is left out as the programs are either too complex to use or too simple to be of any use to the users.


In the gaming area, though it's hard to make a game, it's a long time investment but games will always be there. One thing that use to be plentiful back in the 80's, that seems to now have been very neglected is the field of educational games. And I'm not just talking about kids educational games either. There are a lot of games that test your knowledge, not that many that actually give you knowledge.


As a software developer, today, I believe that this is where the work resides. The gaps between the two ends of the chain so to speak. There is nothing stopping any developer from say creating the next popular GUI if they feel up to it. But the bottom line is one shouldn't expect to make a project as big as this to make a living. Quick tools will more than likely be the way to go. Things that take two big monsters engines and make them talk to each other for example. Or tools that have a niche market that simply hasn't been touched yet. There are many of them if you look hard enough, more than you might be thinking. Maybe all you need to do is take two seemingly unrelated programs and see what can be done with both of them or for both of them. Import/export of data between them for example. It's been done before and can still be done.



HOW THE SOFTWARE DEVELOPER CAN BENEFIT FROM THE OPEN SOURCE WORLD:

Let's give you a quick situation here that has probably happened before or you might be pondering on it as you're reading this. Let's say that you want to start a software development firm. You know 4 or 5 different individuals and they know 4 or 5 different other people. Say you end up with 16 people willing to give this project a chance. Now, what does the Open Source community have to offer you to help you out? You will probably be surprised to learn that there are a lot of open source tools at your disposal. We're going to look at some of them here to give you an idea on what's out there. The idea behind the company is to do both contractual work and develop a series of products that will be commercialized. Hence for the most part, you would need a good set of software design and software development tools. Here is a set of tools you might find quite useful in a situation like this one:


  • Open Office
    Most of you probably already know about this office suite. It's the most popular Open Source office suite there is. It's quite a capable package that offers a word processor, spreadsheet, database, presentation and the likes.

  • Open Workbench
    Here is an open source counterpart to Microsoft Project™. Much like it's commercial counterpart, it allows the definition of realization steps and manages the resources around a given project. It then presents everything in the classic Gantt chart view to give you an idea of what should be happening and help you stay on top of the development of a project. Very useful in bigger projects.

  • ArgoUML
    When going into large scale Object Oriented applications projects, a tool like ArgoUML can really prove beneficial to the success of your project. UML stands for Unified Modelling Language and is a visual tool that helps designs objects and entities as well as the relationships between two or more objects. There are other Open Source UML software tools but I believe this one is the most actively developed project out there and also the easiest to use.

  • GRASS G,I.S.
    The name says it all. a G.I.S. (Geographical Information System) offers a very unique means of presenting results to the user in a geographical/visual representation. when you're playing with the right set of data this representation can offer quite surprising and interesting results.

  • Eclipse Open Source Development Environment
    There are much more than one Open Source IDE out there. Eclipse, once installed and ready, is flexible enough to handle very specific development conditions and is expandable to suite the many different needs of developers. It might be a bit different than your conventional IDEs but once you're used to it you might not want to use anything else.

  • Jasper Studio Eclipse Report Generation
    Here is one of the better open source report generation system available out there. There are other good ones of course. These systems allow for great flexibility in report design and generation and help cut a lot of time it the development of these reports.

  • NSIS (Nullsoft Script-able Installation System)
    Ah yes, you have your application created and you now delve into creating an installation package for it. Make a CD (or DVD) send it off to a client who calls you only to tell you that either the installation didn't work or you messed up his computer with your installation. At this point the first two questions that pop in your head (after "why me?") is probably "how?" and "why?". There are many reasons why an installation might not work some of which are probably beyond your control. Installation scripting systems like NSIS are there to save you the brain power and time to take things like DLL version numbering, resource and other factors into consideration as it does it automatically and make the process of creating an installation package a breeze while making sure your installation works all the time, every time, on all target platforms. You never know just how much time something like this can save you (not to mention the phone calls and complaints).

Basically, these tools are there, at your disposal, and as you can see from this small sample they can cover a lot of ground in the software development phase, from the design all the way to distribution and installation phase. The point is there are there and one might one why developers invest so much time in tools as sophisticated as these given away for free. Some do it for simple recognition, to get known in the software development industry some. Others have a master plan that includes Open Source contributions. There's no doubt in my mind that the open source projects are visited by the commercial world probably a lot more often than you may believe. There is a whole bunch of very interesting projects (today more than ever) in the open source community and when they are organized and represent a lot of serious time investments on the part of the authors of a project, it doesn't go unnoticed.



IDEAS FOR SOFTWARE DEVELOPERS:

Here I thought I would give suggestions on how you can use Open Source for a living specifically. This doesn't just mean to use the tools I suggested in the section above, far from it. These suggestions are based on a research did and it's related observations. You just might find something useful here especially if you're thinking about starting such a project.


  • Sell the software, give the support:
    This is often a classic scene. In order to offer the support for free. At this point, if the users wants things like customization or modules added to your software that can all go into custom development and should not be seen as a support issue. A simple statement that clears this up is often all you need to not come into the situation where the customer things he's entitled to this customization just because you state that support is free.

  • Give the software, sell the services:
    The idea here is to have an open source application (or set of applications since you're not limited to making just one program). Offer that freely as expected for an Open Source project. And sell your support and services for this program. Think this doesn't work too good. You might be surprised to know that companies such ash Ada Core Technologies and others seem to be doing quite fine, in a very niche market, doing exactly that.

  • Give the Standard Edition, Sell the Professional edition:
    This is another situation I am seeing more and more of. For example OpenMFG mentioned above has it's open source report generator available for free, but they also have an Enterprise edition that is available for a nominal fee. The best trick I can give for this to work is to make sure of two things. First, that the standard edition does answer a complete need and second, that the professional or enterprise edition of the same product has enough useful extras to warrant the price asked for it. Often some simple common sense will be enough to achieve these two goals.

  • Bridging the two worlds:
    it's true that today a lot of companies might not want to work directly with an Open Source solution. at least not at the level of what they call their "critical" data storage needs. For example, if they use their Oracle database for data, it doesn't mean they won't want to use your tool to do searches in their databases especially if your tools offers a very different insight on their databases. So often, for example, making an open source database querying tool that works with commercial databases as well as open source ones might be something they are looking for. This can be true in many other situations and types of applications as well. Maybe your open source report generation tool can create Microsoft Office™ spreadsheets or documents for example. A great way to blend (or bridge) the best of both worlds.


These are 4 of the more wide spread open source related commercial possibilities at your disposal. from these you can probably think up something that might mix one or more of these possibilities. I think today, there's nothing stopping anyone from doing anything like this. the best advice I can give is to be broad. To not be afraid to delve into the unknown so to speak. If you don't try something in a given field you'll never know if it can work or not and you shouldn't assume it won't work. You can make something that can be used by just about anyone or you can make something that can be used by a specific group of people and you can do that in just about any type of applications (or games) that you can imagine. Just because it hasn't been made definitely doesn't mean it shouldn't be made. It could be as simple as it just hasn't been thought of before. So the key is to not limit ourselves by what we see in the search results and say that well I can find something so i has been made, why should do another? Chances are, the less number of different applications that do a same given task, the more likely the need hasn't yet been completely answered.



THE FINAL WORD: (THE BOTTOM LINE):

Basically, it doesn't matter which programming language you use, commercial or not, BASIC or not even. Today, a software developer can't go through is career path without having to hear about or work with either or both commercial and open source software engineering and development tools. In my opinion Open Source is here to stay and as such it's an endeavor that is definitely worth investing time into. I suspect a lot more projects will be started (and completed) in the Open Source community as well as the corporate world because the needs of the users are still changing and evolving. We will soon embark on a new wave of completely new software development projects that we just haven't thought about thus far and the more ready for this new phase the better things will be.


Of course, this whole article represents my research, observations, it is based on my past experiences as a software developer along with the development of my own personal projects (some of which I plan to commercialized when they are done). Some of you might have a very different or very similar view on all this than I do. I'd love to hear from you and find out what you think of these commercial and open source worlds, how they have affected you so far and how you believe they will affect you in your software development future. My email is in my name (below in blue) so feel free to click on my and share your stories and visions. Until next time, happy coding, open source or not.