Guest post by our mentor, VP of Engineering at Eldarion, Patrick Altman.
Early in the life of your startup a key decision you’ll have to make will be the choice of a technology stack. A facet of this choice will be choosing whether to build everything yourself or integrate with pre-existing components. For these pre-existing components there are closed source, proprietary options as well as those of the open source variety.
There is obviously a spectrum here as you don’t have to be 100% open or 100% closed. I’d like for you to consider being as open as possible, keeping only core IP private where it is strategic to do so, and use as much open source as possible. There are many reasons for this open source strategy.
As a new startup one of your most precious resources is time. As much of your time as possible should be focused on product. Whether that be marketing, customer development, or coding, if what you are doing is not moving the product forward it is waste.
Waste is necessary. You have to keep your books. You have to setup a necessary legal structure. There are always some bits of infrastructure you must code. However, you should seek to minimize these activities whenever you can to free more time to push your product forward.
One way we have done this at Eldarion is to use existing open source components for infrastructure (user registration, authentication, password resets, email confirmations, gamification features, referral systems, etc). If the components didn’t exist or failed to work like we wanted, we built them. Then, the next client (or our own site) that had a similar need had a simple plug and play solution available. This has yielded more and more time for focusing on core value rather than reinventing the same tired wheel.
Conserving cash is a necessary skill to develop for any business, but it is especially important for a startup. If you can accomplish a lot with a little (both in man-hours as well as capital expenses) you will give yourself a better chance at an “investable story”. You need to be able to generate revenue of course but the lower your costs, the better your margins will be.
By using open source software you are free to make good technology decisions rather than burdened by the restrictions of affordability. As a developer in the age of GitHub your options for open source packages are extensive.
I have generally found higher code quality that is open source than that of closed source. This is especially true the more popular the project. There seems to be extra care given to quality when code is public rather than where no one will see it and deadlines trump all long term goals such as maintainability and readability. The more popular the component the more it’s getting exercised in different scenarios by different people. This means bugs are found faster. Since its open source it’s easy, if not customary, to submit a patch or pull request when reporting the bug.
When you buy licenses to proprietary software you need to track and audit your compliance to the terms of these licenses. The more software you purchase the more you have to maintain. It can create additional due diligence issues upon potential investment or acquisition.
It must be noted that you still need to pay attention to open source licenses. Some are worse than others. For instance, I normally shy away from anything that is not BSD or MIT. I generally run from GPL. The reasons why are beyond the scope of this post, but hit me up online if you want to discuss.
Community is a powerful force that should not be discounted. Every open source community is different but in my experience, I have grown the most as an engineer through my involvement in subsets of the Python and Django communities.
In getting involved in Boto and Pinax and writing open source code in various projects in these communities, I got amazing feedback from experts. This was much better than learning from a book or huddled in a cubicle all in my own.
When there were issues that I faced in production or emergency development, I didn’t have to get a support request into an Oracle or Microsoft and pay through the nose, I was able to hop on a mailing list, IRC channel, or Twitter and was able to find incredible help from great people volunteering their time and expertise. This is invaluable to you as a young starter.
You are going to learn more, grow faster, and often find better support if you leverage open source. The parts of your system that come from open source are likely to be of higher quality and you will have better access to updates. There may be legitimate reasons for not choosing open source. However, you owe it to yourself and your investors (current or future) to consider open source options first.
Photo from Flickr by: Benjamin Gray
Posted on October 18, 2012