Open Source, Love It or Hate It
As the title aptly states, I have a love-hate relationship with open source software. From a business perspective I have decided that I mostly hate it. When it comes to making money, I need something to work right now. With open source, there are no guarantees that things will work out of the box. Configuration usually takes a lot longer than anticipated, and you are generally stuck without any kind of reliable support system. On the face, open source doesn’t have a pricetag, but it certainly isn’t free. It usually ends up costing me significant amount of money because of my wasted time (unless of course my time isn’t worth anything) or because the system is down. No… from a business perspective, I’d rather do business with someone who backs their product. That’s not to say that all software doesn’t come with it’s pitfalls, but at least you have someone to turn to when things go wrong.
From a developers point of view, I usually like and often love open source. Proprietary software is difficult to customize. Since I am a developer, I have a pretty good imagination about how I want my software to work, and I rarely find off the shelf products that do just what I want them to do. So open source works well, because I can customize it. The problem comes in finding a good open source project that is the best starting point for what I need. Then there is the learning curve in understanding how the code is organized. Often, things that look good on the front, start getting a little less pretty when you look under the hood.
I’m just a little frustrated right now because I’m trying to implement a shopping cart. I’m using nopCommerce shopping cart, because I liked the rich set of features that are available out of the box. I am doing some custom coding which will allow me to bulk import products, categories, images and so on. I imported several thousand products that I got from a supplier, only to find that now, when I want to add new or edit existing products, it takes between 3 – 5 minutes to load. I certainly don’t have that kind of time to waste when managing products. I ran a SQL Profiler trace to see if they were pulling the entire products table at once and then filtering it on the web server. It turns out that that was not the problem, there was a filter so only one row was being requested when editing a product. However, the request was repeated several dozen times per page request. In other words, the Admin site was bombarding my SQL Server with the same request in some sort of loop. I didn’t have time to look into the code that deeply, so I just decided to write a windows app that uses a web service to add and edit my products. Amazingly, it runs much faster, and my database has fewer problems. The app isn’t done yet, but it works better for me anyway because of the customizations I have made to the structure.
All in all, I still like open source, but right now, I definitely don’t love it.