When you are developing a new Rails application, is it preferable to build your own solutions or use third party open source packages instead?
For example, I could use Devise to implement my app’s authentication, but I could also do it myself since it is not really that complicated. I could use RMagick, but if all I need to do is resize some images I can integrate with ImageMagick myself.
The benefits for using the available third party packages are easy and speedy development. But the benefits of rolling my own solution is a more thorough understanding of of what is going on in my application, and I also end up with a solution that is optimal for my application, instead of having to bend my application to use the package.
Also, I am worried that when using a bunch of third party packages, upgrading may become difficult. If they don’t don’t update themselves in sync, I may be faced with version incompatibilities and other headaches.
Obviously the packages I have mentioned are popular and widely used. Are my worries about version compatibility unfounded?
Thanks.
This is quite a subjective question, and generalised to all languages.
My take on it is that you should use the available package when possible on the grounds that it should have already had much testing, and bug fixing, and the gotchas that they have encountered you would have to find yourself if you made your own.
That said you have some very important considerations:
A good system should offer a level of abstraction to keep you away from gory detail until you want to know. I know the base principles that python’s urllib works on – but mostly, I am not looking inside that source, I just use it.