Do you build from scratch or integrate open source?

3 points by jjeaff ↗ HN
I'm curious what other developers do with their projects and startups. As the technical decision maker in a few different startups, I have had to make the decision to build features from scratch or integrate. There are a few commonly needed features of a lot of startups, like CRM, ticket management, knowledge bases and the like.

There are plenty of great, open-source CRMs out there (Sugar CRM at least) as well as knowledge base software, but it seems that even if we try to start with an integration into any of these, we end up spending more time trying to bend it to our needs and just abandon and start from scratch anyway.

Now, of course, we don't invent our own encryption or try to roll our own email service (I love mailgun) or build our own telecom infrastructure (Twilio is great) but it just seems so much easier in many cases to build a simple version of what we need and then add to it as we go, keeping a close integration with our software. I commonly get flack and pushback from those who are aware of the open source options out there and I have to defend those decisions.

What do you seem to do more often? Are you integrating with what is out there or reinventing the wheel in your own image?

5 comments

[ 3.1 ms ] story [ 23.1 ms ] thread
How much is your time worth? If it takes you $10K of engineering time to roll your own solution, and delays you from shipping your code by a week, is it worthwhile?

That options aren't only "roll your own with open source" or "pay vendors". Have you looked into paying one of the open-source developers for advice, or to do the integration for you, and push changes back upstream? After all, if you think you have to bend it to your needs, then perhaps you don't know how to use it right, or perhaps it's useful feedback where a simple change would help others as well.

I ask because in talking to people, many forget this option even exists. It's as if the idea of paying for open source is a foreign concept.

(comment deleted)
For ticket management or knowledge bases I would lean toward using open source or paying for a service.

For CRM (or anything else) if it's something unique/valuable to your business where spending some development time would bring value and time savings then go with something custom. It would help if you have a development team that can build it quickly (Rails/Laravel) so the cost/time doesn't get out of control. Building the basics and adding needed features would work well.

Create a business plan for your problem.

Outline solutions, timelines, 'new work' (stuff you've not done before r.e. custom, vs custom r.e. integrating an existing solution).

Use fact-based thinking and discussion, eliminating any per-emptive questioning you can think of in advance. Treat each other as equals, as by now, you should be on an equal playing field. Don't take or make anything as a personal hit.

You are vastly underestimating the effort required to build and MAINTAIN a "simple version." Usually open source software such as CRMs do what they should and do it well. If they don't full-fill a requirement a business owner has, it is likely that that requirement is a stupid.

In the best case, technical project managers can convince the business owner to drop the requirement or come to some kind of compromise. In the worst case, programmers spend months implementing the required feature which then goes unused as the business owner realizes it was a dumb idea after all.

Also see the Ohloh site (https://www.openhub.net/) for cost estimates for how much open source software costs to produce. Then you can get some kind of feel for how much writing simple versions from scratch would cost.