In many of my personal and professional projects inevitably comes the moment where we have to weight pros and cons of integrating third parties versus developping a home solution. I've always been a fervent user of open source resources and faced programmers I respect who were following other path. The arguments are complex and I often get lost in what are pros and cons of using third parties in general.

As an example one of the project I work for implements a message broker with a custom protocol. I am fairly sure it could have been implemented by using a 3rd party message AMQP broker. It would reduce the code base, and, although I can't be sure yet, may enhance overall performance and stability.

I'm still new to the project and probably missing something, but isn't this a case of reinventing the wheel, or is there pitfalls in using 3rd parties I am not aware of ? I am looking if there is a general guideline for "borderline" cases where both options (using a 3rd party or developing in-house) are realistic.

closed as too broad by gnat, Bart van Ingen Schenau, dagnelies, Robert Harvey, Thomas Owens Jun 29 '16 at 18:16

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 2
    think you might want to reword this a bit, to avoid 'asking for a list' and 'opinion' close votes. also can you elaborate on the particular problem facing you? its not clear what angle you are coming at this from – Ewan Jun 21 '16 at 8:53
  • I agree with Ewan. You stand a better chance of getting meaningful answers if you tell us about the specific situation you're in. I think this is a case where the general-form of the question is too broad, but a specific-form may still elicit generally useful answers. – MetaFight Jun 21 '16 at 9:06
  • OK, I added a few lines about my specific case – Arthur Havlicek Jun 21 '16 at 9:07
  • Hrm, message brokers are complex beasts. I can't imagine anyone getting them just right on the first try. That is definitely a scenario where I'd use a product that has an active community around it, that is still in active development, and that has hundreds (if not thousands) of usage hours behind it. You simply can't recreate the test coverage of an active community in-house. – MetaFight Jun 21 '16 at 9:17
  • Your question is a bit vague. In my opinion, the things to consider are: 1. is the license ok? 2. is the lib stable? maintained? 3. Is the lib ok or will you need heavy customization? If the three points match, you should probably use the lib and save yourself a lot of time/bugs. – dagnelies Jun 21 '16 at 10:18

There are many, many things that need considering that might make an off-the-shelf solution problematic. Some of the most important ones are:

  • completeness - does it do the job you need entirely, or are you going to be spending time learning its internals in order to extend it
  • robustness - does it do its job well, without needing constant workarounds for corner cases or outright bugs?
  • performance - does it do a job that's more difficult than what you need and which makes it too slow or too resource hungry for your needs? *.documentation.- is it adequately documented in a way that makes it easy enough to understand
  • compatibility - if you have legacy systems that might or will need to interface with it, will this be overly difficult? (Especially if you have applications in obsolete languages that are unlikely to have interface libraries)
  • licensing - will its licence require your company to do something it isn't willing to do / pay more than they're willing to pay?
  • ease of migration - if you need at a later point to change to a different system, how hard will it make that job?

And balanced against all of these:

  • how much time would it take to develop your own
  • how much better would the off-the-shelf system be than your own version?

Not the answer you're looking for? Browse other questions tagged or ask your own question.