How Open Source Changed Enterprise Software - Part 1. Developers
In the last five to ten years, free and open source software (FOSS) has made a huge impact inside corporations (a.k.a. “the enterprise”). However, there are still many companies that haven’t yet realised the benefits that FOSS can bring. In what will be an occasional series of blog posts, I’m going illustrate some of these benefits. In this, Part 1, I’m focusing on how FOSS has impacted the tools that enterprise software developers use.
Many people outside the world of commercial software development don’t realise just how much custom software is written inside corporations, for exclusive use inside those corporations. Companies from sectors as diverse as manufacturing, banking & financial services, and pharmaceuticals employ huge numbers of software developers that are focused on building computer systems that solve problems that are unique to each individual company. What, then, does the “typical” tool set of an enterprise software developer look like? Well, there’s really no such thing as “typical”, because some companies have historically invested significantly in tools for their developers, whereas others have invested almost nothing. Why have some companies invested almost nothing in developer tools? The answer is a simple one: cost. Enterprise developer tools can be expensive. Some companies simply don’t want (or can’t afford) to make large investments in tools for their developers.
Five to ten years ago, equipping a developer with a complete set of Enterprise-class software development tools would have cost high-single digit thousands of pounds/dollars. As an example, here are the main parts of software development tool chain we used five to ten years ago:
- Relational database modelling and implementation: Platinum ERwin (now CA ERwin). Cost - thousands of pounds per developer.
- UML (unified modelling language) and Java source code editing: TogetherSoft’s TogetherJ (now called Borland Together). Cost - thousands of pounds per developer
- Multi-language source code editor - xemacs. Cost - free
- Data Persistence Tools. TopLink (now Oracle TopLink) object-relational (O/R) mapping. Cost- thousands of pounds for minimum package. Interestingly, we didn’t use this much - it wasn’t that great a tool back then, and our needs were quite complex; which pushed TopLink beyond its limits
- Rich graphical user interface (GUI) development: hand-coded in xemacs/TogetherJ. Cost - free
- Microsoft-specific development (C++): Visual Studio. Cost - hundreds of pounds per developer.
- Configuration Management: CVS. Cost - free.
- Build system: Apache Ant. Cost - free.
- Desktop OSes for development and testing: Solaris, Linux, Mac OS, Windows. Minimum of two workstations per developer.
- Desktop Virtualization: None. Note that while virtualization in the form of early versions of VMWare was around, we couldn’t justify the cost of the licenses.
There were other pieces of software used too, but I think that covers the major tools. Five to ten years ago, the trend towards FOSS had started - witness the use of cvs, xemacs, ant and Linux. However, it wasn’t possible to use a completely free tool chain if high-productivity was an important goal. The expensive options back then were: relational database modelling; UML modelling; O/R mapping; and desktop virtualization.
Note that, because of the licensing costs, we couldn’t justify every member of the team having access to all the tools we used (and we couldn’t justify the cost of virtualization tools for anyone). We had one copy of ERwin on a single user license, which meant that one member of the team was responsible for most database design; and we had floating licenses for TogetherJ - so not everyone could use the software concurrently.
Today, FOSS provides options for almost all parts of the enterprise developer tool chain. For example, this is what our tool chain looks like now…
- Database modelling: Sun Microsystems MySQL Workbench. Cost - free
- UML Modelling: Sun Microsystems Netbeans. Cost - free
- Multi-language source code editor: Sun Microsystems Netbeans. Cost - free
- Data Persistence Tools - Sun Microsystems Netbeans. Cost - free. (Interestingly, the TopLink persistence engine is still playing a role, now as FOSS)
- Rich graphical user interface development: Sun Microsystems Netbeans (Matisse). Cost - free
- Microsoft-specific development (C#): Microsoft Visual Studio. Cost - hundreds of pounds per developer
- Configuration Management: Collabnet Subversion. Cost - free
- Build System: Sun Microsystems Netbeans. Cost - free
- Desktop OSes: Windows XP, Windows Vista, Linux, Solaris (and soon to be Mac OS X)
- Desktop Virtualization: Sun Microsystems xVM VirtualBox. Cost - free.
With the exception of Microsoft-specific development (we do quite a lot of C#.NET work), the developer tools we use today are FOSS (even the embedded programming we do for the custom electronics in robotic products we develop largely uses FOSS tools now). Importantly, the big ticket items are now free; which means that the overall tool chain costs are down by at least one order-of-magnitude today compared with five years ago. Also of note is the fact that productivity has increased as the tools have become more sophisticated. For example, the time taken to build graphical user interfaces in Java has been massively reduced by using Netbeans Matisse instead of hand-coding. Simultaneously, the quality of the user interfaces has improved, too.
Looking at the above two lists, it’s interesting to see the impact that Sun Microsystems is making on FOSS developer tools. Five to ten years ago, even though we had a huge technology focus on Java, Sun Microsystems contributed nothing to our developer tool chain. Today, it’s a totally different story. Sun provides the tools we use in critical areas: database modelling; UML modelling; data persistence; source code editing in multiple languages; building GUIs; and desktop virtualization. That’s a huge amount of developer mind-share. It’s also interesting to see how the tool chain has simplified, with a single tool (Netbeans) being used where multiple tools were used before: graphical IDEs have really come of age in the last five years (no more emacs/xemacs for coding - that’s truly the end of an era in software development).
It used to be the case that developers inside companies were often hindered from working as effectively as they wanted to, because they didn’t have access to the right tools. Today, when corporations adopt FOSS tools, all their developers are able to access all the tools, all the time, and all at zero cost. Price isn’t everything though. The question arises - are FOSS tools always best-in-class? The truth is: sometimes, they are; and sometimes they’re not. The trend, though, seems to be for FOSS tools to become the best over time. Why? Because, over time, FOSS tools are developed in collaboration with a large community of users… and also because, in the end, it’s incredibly difficult to compete with “free” as a price tag.
If you’re not using FOSS developer tools at the moment, there’s never been a better time to investigate whether or not they meet your needs.
Asam Bashir wrote:
Given that a lot of enterprise has been moving to Apple hardware, especially laptops, what about Mac OS X specific development tools? Which are also free, along with open-source Darwin. Apart from initial cost of hardware, as a developer all the tools are free, you only pay if you want help from Apple, or access to developer builds of Mac OS X.
If you’re a large company that has invested in new Apple hardware, and are then planning some specific internal software, you’d want native code for your machines.
Only need Xcode to develop for Mac…
Posted 21 May 2008 at 5:38 am ¶
simon wrote:
Good point about Apple’s free developer tools like Xcode for Mac OS X. They’re not open source, but they are zero cost, which is very important.
Not sure how much development of Mac OS X specific applications has happened historically in the Enterprise. However, one really interesting future area, of course, is the development of internal business applications for iPhone.
That isn’t free though. I’m not sure of the precise details - Apple isn’t very clear on this - but I think being part of the Enterprise iPhone developer program (i.e. for developing in-house apps) *might* cost $299 per year per developer.
That’s a price tag that would impact adoption in terms of numbers of developers inside companies that develop iPhone apps. If it was $299 per year per company, that’s a different matter. As I say, I’m not sure what the precise terms are. The smart thing to do would be $299 per company (or even free) - that could drive significant sales of Apple hardware.
Posted 21 May 2008 at 11:36 am ¶
Neil Benn wrote:
One quick question Simon, I’m about to launch an open source project in lab auto. One thing that I have noticed is that the majority of the existing skill base lies in C# - therefore I think we will eventually end up developing in C#.
I had naturally assumed to use SharpDevelop for that (free and OS) but yours is the second source of data where I have seen people selecting Visual Studio. Previously I thought it was just because the person I was speaking to/reading from had not investigated beyond Visual Studio because they just hadn’t bothered with FOSS. What is the reason you use Visual Studio?
Posted 22 May 2008 at 8:57 am ¶
simon wrote:
Hi Neil. I think C# and Java are both good choices for lab automation software in general - so, IMHO, either would be good choices for your open source lab auto project. Also, there are some benefits for choosing Java over C# for automation control in general e.g. the fact that there are real-time versions of the platform available that work really well.
To be honest, I’d prefer that we used Java more than we do for our automation work (simply because we have standardised on Java for high-end analysis software, and we have to port an maintain APIs in both C# and Java, which creates added work). However, much of our automation conrol software is written in C#. There are two major reasons for that:
o A lot of the hardware we control is driven not through serial ports, but through more advanced interfaces. The low-level APIs for the more funky comms simply don’t exist in Java (e.g. CameraLink) and even support for interfaces like USB is pretty new and untested in Java.
o Some of the hardware components we use are quite exotic, even if control does go through serial ports e.g. piezoelectric actuators. Given the timelines and budgets we work to, it doesn’t make sense for us to write SDKs from scratch for these kind of pretty complex components. Instead, we integrate manufacturer SDKs for the high-tech stuff.
A minor reason for using C# is that .NET has pretty good serial comms support out-of-the-box. No third-party libraries required.
Which brings me to your question: why Visual Studio and not SharpDevelop for C# work? The truth is: I don’t have a good answer!! I haven’t looked at SharpDevelop. My assumptions (which may be totally incorrect) were that: a) while MS does a lot of things badly, it does dev tools really well; and b) that MS tools would have the best support for integrating legacy technology e.g ActiveX.
Also, it’s worth noting that there are free (as in beer) versions of Visual Studio available in language specific editions e.g Visual C# Express. These are richly featured and useful versions.
So, my bottom line answer to your question is: “because I think Visual Studio is a good IDE, and I haven’t looked at SharpDevelop”…
If you do some extensive work with SharpDevelop, please share your experiences…
Posted 22 May 2008 at 11:14 am ¶
Sum wrote:
Hi,
Thanks for listing the open source development tools. I am particularly interested in the entire stack of open source software for enterprise development. I seriously want to use these for enterprise development and since I am migrating from a Microsoft environment to a J2EE environment - want to be abs sure of the pieces I need.
Thanks
Posted 12 Jun 2008 at 7:54 am ¶