Odoo is the world's easiest all-in-one management software. It includes hundreds of business apps:
CRM | e-Commerce | Accounting | Inventory | PoS | Project management | MRP | etc.
We are interested in using Odoo but we would need to modify it slightly for our use case, for instance modifying partner by adding fields, and integrating with an external system.
Is it best to fork it or to make a module with the changes in? The changes would be quite specific to our use case and existing system so it's unlikely it would be useful to anyone else as a module/app.
My thinking is that by forking it would be easier to stay up to date with Odoo - we just have to pull in changes from upstream occasionally. It seems like with a module you would end up with lots of stale code that's difficult to update because you've moved it outside the source tree.
Edit: What I mean by this is that let's say you have to modify the code of a large function somewhere. With a module you have to inherit this whole function and overwrite it, but what happens if that function gets changed upstream, like some kind of bug fix? You will never know that it was changed upstream without going and looking at each function you've modified - your app will will always be patching this updated function with the old one contained in your module.
Whereas with forking method, it will be obvious when you pull new changes from upstream because you will get merge conflict with your customizations.
Although I may be completely misunderstanding how modules are created.
It also seems like it would be easier to deploy because you have all the code in one place rather than two.
In my opinion I would go with creating a module that you install on top of the base Odoo.
I'm not sure what problem you would have that could make your code stale? When you program an extra module on the correct way you will barely ever need to change things, typically only when migrating from one Odoo version to another (for example from V8 to V9).
When you create a new module with your custom code it is nicely separated, which won't be the case when you start adding code in it. By creating a new module that you add in on top it will be very easy to update your Odoo (the default Odoo code). It'll be as simple as running two commands:
git fetch origin 9.0 git reset origin/9.0That'll be all you need to do to download the newest code from Github. Then a simple database update will apply all new code and views to your database:
./odoo.py -u allYour custom module could still be maintained on Github in another repository and you could push/pull in the same way as with Odoo. If you'd move in the correct directory in your Odoo system you could even update your custom module through Github, just like with the Odoo base.
Please try to give a substantial answer. If you wanted to comment on the question or answer, just use the commenting tool. Please remember that you can always revise your answers - no need to answer the same question twice. Also, please don't forget to vote - it really helps to select the best questions and answers!
About This Community
This platform is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.Register
Odoo Training Center
Access to our E-learning platform and experience all Odoo Apps through learning videos, exercises and Quizz.Test it now
|Asked: 1/22/16, 6:29 AM|
|Seen: 677 times|
|Last updated: 1/22/16, 7:25 AM|