What matters when, and the power of plugins and open interfaces
Mike Cannon-Brookes (CEO of the Australian ISV Atlassian which services the developer-tools market) talks about the notion of open access to data, and how in his view it is at least as important as open code. What are the differences, and how do they affect you in your applications?
Let's take opensource code. There are many reasons why you may want to either opensource a project at your company OR for working with opensource software. I will talk about these tensions in another piece.
While opensource development has changed everything, there has been a troubling trend that I have seen in certain areas of the community and some organizations. The trend is to go crazy for opensource:
If it is opensource, it is better
This attitude often comes from two different points of view:
- Peer Pressure: The person in question has read that opensource has to be used everywhere in CIO magazine
- Free: Opensource == Free == Better
If you use common sense you can quickly realize that you shouldn't just listen to peer pressure, and you can quickly work out that opensource does not actually == free. When comparing a closed source solution, to an open one, you need to weigh many factors.
In my consulting, I've found companies that chose an opensource project that was not necessarily a good fit, and the development team had to spend 6 months to integrate it into their system. Meanwhile, there was another solution for $1,000 that did everything they needed. Surely, having a team spend 6 months on something ends up costing more than $1,000. Unless, you have extremely cheap developers.
When choosing the right software for the job, make sure you compare all aspects of the various choices, and don't let just the price on the can fool you.
Note that I have also seen the opposite effect. There is often an idea that because you spend money on something, it must be better than something which is opensource, or cheaper. Marketers for companies which sell luxury items love this psychology, as it often makes people buy really expensive items.
Open source matters
One reason you should be looking for opensource software if you feel that it gives you a competitive advantage to build on source code that you can "see". This is often the case when building on a core framework. Building on infrastructure. You can take this core and add the features that your core business needs. You have to be careful about the licensing that the particular opensource packages employ. Some licenses require you to also opensource the pieces that you change/build on, with the same license. Others are much more liberal and allow you to have your way with them.
Open data matters
There are occasions when opensource code really isn't a big deal. Mike talks about an email client as a good example. Does your company need to see the Outlook source code? Would that give you a lot? (apart from maybe fixing some Outlook bugs!). No, with tools like these, I don't really feel that opensource offers a big win. This is where open data matters more.
You do not want your company to be locked in to a particular vendor or product. You want to be as flexible and loosely coupled as possible, allowing yourself to move in an agile fashion when it makes sense for the business.
Let's take a look at an example and see how we feel about things:
- Product A is opensource software. It uses a proprietary binary format for its data.
- Product B is closed source software. Its data format is very open though. There is an XML format with a published schema in which you can validate against. The format is also part of a standard, which other products also support.
In this case, although in theory it is possible look into product A to be able to munge the binary format, I would much rather be interfacing with product B unless I was wanting to extend product A to do something.
Mike Cannon-Brookes works for Atlassian, which is a software company that produces tools such as an issue tracker (JIRA) and a Wiki (Confluence). His company's Wiki is closed source, yet has more ways to interact with it that you have had hot dinners. Confluence supports HTTP, SMTP, REST, RSS, full XML-RPC and SOAP interfaces. Also, interestingly, if you purchase a commercial license you get the full source code under a developer license (so you are not just left with a black box. Take a peak).
So, open data matters. Or, really, I should rephrase this as:
Open Interfaces Are Good
Open interfaces can often manifest themselves as hooks to the application. This can be enabled via a plugin system. A well-defined plugin interface can allow you to extend a propriety piece of software, just as you would an opensource application. Of course, you do not have the ability to go back and 'fix' anything in the product itself.
What comes around...
So we come back around to opensource software. What you could be lacking is the community (although good companies create community too), or maybe participation in the opensource process itself. There are many reasons why you should be doing opensource, and participating. The key, at a corporate level, is to have an opensource strategy that makes sense for your business needs. I look forward to discussing these reasons later.