open source – thoughts from the trenches

in essence i'm a software developer, what i think i do better is produce code! i'm so passionate about coding… that after while coding (10 years) i got involved into open source development "world".

after "living" in this community for a while i started to see that are some misunderstandings around the expression: "open source". people from different areas (ie. programming, marketing, sales, government, etc…) understand open source differently, even people from the same area have different opinions about open source.

and this misunderstanding/misconception are spread out there… there are people that support open source (even without realizing what it really is), there are people that just don't get it, there are people that hate it (usually after an explanation about what it is, they change their position), there are people that uses open source as a sales argument, there are people that use open source as an argument to *not* buy something, there are people that dress "che guevera" t-shirst and say that open source is the new communism and there are people that believe on it… in resume: open source concept is messy, everybody has its own.

during this post i'll try to expose my thoughts about open source, a point of view of a passionated software developer and a start-up co-founder that is creating his venture creating an open source tool.

first of all… let's remove from our path some myths around open source, the first and most important, what is it? open source is just a way of build software – a development model, period. nothing more… it's just a term that enables you say to the world that your code is open and everybody can *see* it. just that! simple isn't it?!

so… as you can see, in my point of view all developers (that usually are passionate about coding) should love open source… they can show to the world what they are doing (for the good or the bad).. they can see what other developers are doing… all of us can learn from each other (do you know a better way to improve programming skills than reading and writing code? i don't!)… and once the result of our work are open… we usually care more about its quality… you'll try to write a clean code 'cos, in the end of the day your code gonna be your business card (i said it so many times and i'm not alone… github is promoting it).

now let me remove another myth: open source does not means free of charge, period. people and companies are making money with open source… and its fair! do you know anybody (that is not rich) that can work all day long without a salary in the end of the month? i don't! but if the code is open and everybody can download and use it… how can you make money?! in the same way all software related companies does (open or closed): through services! or do you think that is common a big company adopt a technology, build all its i.t. department to use it and don't care about: training, support, stable releases, particular features and etc… marten mickos (if you are not familiar with this name… let me mention that he was the ceo of mysql that sold it for 1 billion to sun) recently said: the best thing that we can do for open source is making money! once you make money you can invest more on software development!

so… could you see: open source is not communism, period. its not free of charge (you can start for free… but if your business need it… you will, or at least should, buy services like training and support for it).

other point is that people, that don't understand open source, may concern about security… people use to say: if its open source, anybody can modify it, where is the security?! this is a myth… open source means that people can *see* your source code, *not* modify it, in fact few people have the right to commit code. and as people can see the source… what happens with security is the opposite: it became more secure. developers can find bugs easily (reading the sources)… and report it to the development team.

so… open source is usually more secure, period. people can see the code, its easier to find new bugs 'cos there is much more people looking at source code.

now let's talk about community, a word that is always related to open source. first of all… let's make clear that open source projects aren't based on democracy (yes.. its not!) most of them are based on benevolent dictator governance model, in general words it means that the project lead has the final word. the project lead is responsible to drive the project… he decides the new features, release dates and etc. in the same time open source projects are usually driven by meritocracy, if you are an active member and contribute with relevant things, you have more respect and, in some time, you may have the right to commit code (usually it takes time to you reach this level).

other important truth needs to be said: its difficult to build a community around a project (open source or not) – we have lot's of project that have a strong community around it (lucene, jboss, hibernate, couchdb, etc..) but we have much more projects that have almost nobody except the lead and one or two contributors. if the project is sponsored by a company (alfresco, jackrabbit, mysql, jboss, etc..) is rare to have people contributing from outside the company.

so… if its difficult to have external contributors, what can you extract from the open source community?! many things… most relevant for me are: continuous feedback, testing and early adoption.

now… let me talk about business around open source: there is a lot of it, period. i've already discussed a lot about it with many friends… most that are involved on selling use to say that open source is a business model… it is a huge mistake. it can be used as a business tactic.. the same kind of tactic that makes people sell their product for lower prices or execute a freemium model. the business model itself just uses open source as a strategic element, nothing more. except if you are trying to sell a methodology to someone (which is odd for me)… you can't sell "open source" per se, 'cos its a development model.

in terms of business, what you can do is take the advantage of your development model. which advantage?! for me, this is the real point around open source, one of the best characteristics that a company or person can have nowadays (specially in business): transparency! you can use this transparency to facilitate your selling (usually you can stimulate your selling with a go to market strategy like lower prices). the most important asset from you is open! can you imagine a more transparent model?! i don't!

and based on this advantage, i advocate that start-ups should invest building their software as open source, it can be a huge competitive advantage once you are transparent! you can show to your potential customer your quality… and this transparency enables you to convert it to a trustworthy relationship. and can you see a better way to do business once you're on a trustworthy relationship between you and your customer?! i don't!

so.. if open source is so great.. why microsoft, oracle, sap and other traditional closed source companies aren't opening their sources?

first of all… they are ;) – ok, they are just starting… but they are getting involved. check by yourself here:

but if we talk about those companies open their main products source code… its bit harder. first of all… if all these companies wish open their main product source code, it would be really difficult, 'cos several internal components of their products are from third party and they aren't allowed to do it (and if they do, they will have to pay tons of money for all those ip). second reason: they created their products closed… until now they weren't thinking about open source… can you imagine how messy are those code base? how it could affect their image? if an open source project (that is created with the openness in mind) "sometimes" are complicated and messy… can you imagine a proprietary/closed code? so… open their well know products is not an option (and its reasonable and easy to understand).

but it does not mean that their aren't investing in open source software… all those companies are supporting some foundation (like apache), all of them (may be not all, but the majority) are creating open source projects. most of those companies are interacting with open source community… sponsoring events, trying to understand our ecosystem…

nowadays its hard to understand clearly the market…. but one think is for sure: open source is here to stay and those companies know that… they are just trying to figure out how to deal with (some companies are understanding it faster than others).

my final point is about interaction: here in brazil we are experiencing a new era of technical events. events that bring to the same place java, .net, ruby, python, c++, php and others, aside that  jokes got funnier, people respect each other and more: learn from each other! yes! we learn from each other…. 'cos, in the end of the day, we are all geeks/nerds/developers… we have problems to solve, the language is just a tool. and when you have all those different people in the same place sharing experience (java and .net for instance) you see that they choose different paths in their career but, usually, both have the same wills and needs. and this message (interaction) those companies are getting! interact with open source community is becoming vital (do you remember that visual basic developers enabled microsoft expand windows adoption?)… in a sense we, developers, are important drivers of the technology scenario… and as developers we use to love (or should) open source…

i hope that this post helped you understand a bit about open source… at least what it is and what its not.

that is it for now, i'll blog more about this theme soon ;)

cheers!