Prototyping with COTS? Try FOSS

Hello everyone.  I’m the guy in the group that gets to advocate for open source software as part of this COTS discussion.  Don’t know what I’m talking about?  Read on and you might just find yourself saving your organization thousands of dollars in licensing fees and software development!

Let’s look at the traditional prototyping scenario alluded to in textbooks on software development:  You company needs to produce documents and purchase MS Office for document production.  Let’s say this solves 80% of the organization’s problems, but not the 20% where company specific requirements aren’t met by the COTS software.  That 20% of your company’s workflow is what makes your company unique.

So logically you’d like to modify the way the COTS system works to cover the 20% of the workflow, but your programmers can’t see the source code and modify it to add the features, it must do so via a plugin.  This means with every security update, patch or feature, the plugin that you depend on might no longer work.  

Then there are some things that you can’t just do by creating a plugin.  It involves actually changing the software.  Too bad Microsoft doesn’t release their code.  In fact the EULA for the Home and Business version (like all others) specifically states, “you may not separate or virtualize the components and install them on different computers.”

There is another way to get the job done and it can potentially save quite a bit of money in the long term.  

Let’s introduce Open source.  Open source software is extremely powerful (think netflix and ⅓ of all internet traffic, facebook, and google).  Open source software is developed by programmers who publish their source code online.  When you run MS Windows or Office you’re running a binary (source code that has been converted into the 1s and 0s that your computer understands).  People can’t read binaries very well and so it’s difficult (and illegal) to try and reverse engineer the code.

Odds are most websites you visit on a daily basis are using open source software.  My current university’s website is an exemption.  It’s running Microsoft-IIS/7.5 while the latest version is 10.  If anyone wants to exploit its vulnerabilities they’re conveniently listed here.  You’ll notice one vulnerability is listed as a priority 10 (highest) and has been known since 2010.  I bring this up because if this were your server vendor there’s absolutely nothing you can do about fixing the code that contains the vulnerability.  The usual solution is just to buy the latest version of the software (MS SQL Server is only $3189!).

If you were running open source software you could easily access the code and work with other programmers across the industry to fix the problem.  This is why as bad as heartbleed was it was fixed rather quickly across the industry once it was found (Google reports finding the bug 1 April, patch released 7 April).

Let’s put security vulnerabilities aside for a moment.  You have an 80% solution and it’s useless because you can’t configure it to close the last 20% of the workflow.

Thankfully open source document production has come a long way in the past few years and there are quite a few projects to choose from.  For this post let’s focus on LibeOffice.  This software suite allows your company to produce spreadsheets, presentations and documents in much the same way you would do in Word, PowerPoint or Excel.  Want your programmers to review the code and modify it to close the gap on the 20%?  No problem.  LibreOffice’s website proudly tells you about its source code and sends you to a git repository.

Free and Open Source Software doesn’t solve all the problems with COTS instantly, but it should be considered an option when moving forward.

When I need to prototype something I often go to digitalocean and spin up a server in less that 55 seconds.  I’ll run the configs and tests I need to, take notes on how I did it, then shut the server down.  At $.07 an hour that’s a pretty cost effective way to prototype.

Sorry if this was TLDR for you folks, but when you look at the price tag of COTS for Microsoft’s server solution it makes it impractical for a student to experiment if that’s the right solution to implement for a hobby project on the side.

For home use I run linux based desktop/server hybrids, but we’ll cover that in another post.