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.
Any thoughts?