r/Python • u/19c766e1-22b1-40ce • 1d ago
Discussion Is Odoo nice to work with?
I might have a new project at hand and they settled on using Odoo. While I know Python and a couple of web frameworks such as Flask and Django, and I will dive into their documentation, a question still remains: from a developer's side of this framework, is Odoo nice to work with?
15
u/AxisFlip 1d ago
I really like it for its ERP capabilites, but as a (public-) website framework it is pretty terrible imo.
13
u/fiskfisk 1d ago
It's an ERP framework and it works in ERP ways.
So "nice to work with" depends on what you expect. It can get confusing really fast, as most modules can hook into different parts - and the documentation for what you can hook into and what to expect isn't always clear (it wasn't when I worked with in around Odoo 11/12).
After a while you get used to it.
But it's not a great initial development experience unless you already have experience thinking in ERP terms. Upgrading between versions is a hassle and require significant time.
So it all depends on what you want to get back - if you're actually doing ERP things, it works for that. If you're going to use it as a general framework, you're on the wrong platform.
2
u/divad1196 1d ago
Hi,
I worked on Odoo for version 8.0 to 17.0. The framework was changing a lot until 12.0 and there was massive rewrite on modules like accouting. But this doesn't happen all the time.
For migration, you don't have better options than dumping the database, sending it to Odoo, and restoring it. This renders your ERP down for a while, but that's not uncommon.
What takes time is the script running on Odoo side. But even for your biggest (and most bloated database), it took about 1h30 for the whole upgrade if you are prepared (indeed, migration preparation takes a bit of time). In this case, they jumped from 12.0 to 16.0 which had other involvments. If you need any pre or post treatment, just create scripts to be ran using the "Odoo shell". For most client, it would take less than 30min wifh almost no preparation.
17
u/Richard_Rock 1d ago
Get out while you c...
2
u/19c766e1-22b1-40ce 1d ago
That bad, Hu? Any anecdotal pains you might want to share? You happen to know a good alternative I might look into/suggest?
5
2
u/Richard_Rock 1d ago
Python gives you the opportunity to program on any platform or device, any application you want. And from that world of possibilities you choose Odoo. That's kinda like beeing in Willy Wonka's Chocolate factory, and choosing to taste the skitmark in an Umpaloompa toiletbowl.
5
u/Responsible-Sky-1336 1d ago
Odoo is great at a lot of things !
Unfortunately for web dev I don't see why you would need the extra hoops unless you're not comfortable with developing
1
u/19c766e1-22b1-40ce 1d ago
We are not aiming for it’s web dev. Capabilities for as an ERP system. With my text I just wanted to point out that I have python experience, although I can see that this might send confusing messages.
2
u/Macho_Chad 1d ago
We jumped from 12 to 16 a year ago. Starting to run into performance issues (300 users). More compute isn’t helping. System can’t handle concurrent operations.
Odoo is great imo for SMB or growing companies, but it can’t handle being fully utilized.
1
u/divad1196 1d ago
Truth is: Odoo isn't slow, but often badly configured. I have a few clients that used Odoo has their source of truth getting queried by thousands of devices per seconds while having 100-200 internal users connected and thsir shop in use.
Odoo natively doesn't scale horizontally but vertically. The main aspect as the number of user grows is the number of workers, not even the CPU and RAM directly (even though, the soft and hard limits per workers involves more RAM and CPU). Just increase the number of workers and adapt the CPU/RAM and limits accordingly.
Odoo provides a ratio based on the number of users but that's an approximation. Sadly, SaaS Odoo is invoiced per worker
For example, we had a customer complaining that Odoo was slow in the morning, but there was ome of their employee that was opening like 30 deliveries for the manucturing (with an heavy customisation) in different tabs, then he would go through all of them and clicked a custom "process" button than could run for minutes. Basically, this employee alone was monopolizing all the workers.
Therefore: 1. Don't let newbies code complex tasks and don't implement any dumb customer request 2. Long running tasks should be ran in the background (see the "job" module from the OCA), and not be runnable simultaneously. Also, a limited set of people should be allowed to run them
There are a few community modules that can be used to scale Odoo horizontally.
Also, python doesn't provide speed improvment through threads for CPU bound tasks, but you will often seen bad developers trying to improve Odoo speed by using them..
1
u/Macho_Chad 1d ago
We are using odoo best practices as far as worker spread by user and memory per worker. Odoo checks in periodically. We have odoo sitting on 5 application servers, with the 6th as a cron host. Each host has 64 cores 128gb ram, Postgres has 64 cores 128gb ram. All on AWS.
Odoo tried profiling the issue, but came back with a “we have some work to do before our next release”. They’re aware.
1
u/divad1196 1d ago edited 1d ago
I don't get your complete setup, if your apps are on the same node or not.
But 64 vCPU and 128GB RAM seems excessive.. and that's even worst for the database. For the biggest customers I mentionned in my previous message, 16GB RAM and 8vCPU was enough.
Again, there are no "best practicises", that's at most a rule of the thumb and even Odoo employees clarifies that on their forums. Something that is often wrong with the workers are the limits (soft/hard and timeouts): - too low: your workers die and is slow - too high: your workers will fight.
Again, long running tasks are not ideal for an ERP.
One other scenario of slowness we faced was due to Odoo studio usage, and this can indeed slow down your instance by a lot. The worst example was a view that took 7minutes to open because of studio referencing each others.
Another mistake is when developers do queries in loops: this is really slow and monopolises the database lock. This can make the code slow for all users, and increasing the number of workers won't solve this issue (of database lock). Again, this is not an issue specific to Odoo.
Odoo is not necessarily "aware". Their customer service can be bad, and you are an edge-case to them. Therefore, they put little effort into it, makes you wait in the hope your just drop the case. Do you have a business licence at least? If you are not hosted by them, it's a pain for them to deal with you. If you have a licence, they will at least give you some consideration. If you use the community edition only, they won't do anything.
I am not saying that Odoo never mess up, they do and even quite often IMO. That's why we offset the updates of our customers and acted ourself as guinea pig for a few weeks (except if there is a security breach). But if they mess up, this is usually fixed within the week.
1
u/Macho_Chad 1d ago
We’re licensed. Working with a provider as recommended by Odoo. If you’re interested in taking a look, I’ll pay you for your time. But it seems like a new ERP is the solution
1
u/divad1196 1d ago
The issue wouldn't be the money.
Looking into these stuff can take time and this might expose company information, .. that's a lot of involvment. Also, even if I were to find the solution, the point would be that neither your integrator or Odoo helped you in the first place. If you want I can still check quickly your customization if you have any and/or if you tell me what specific action is slow?
I would personnaly try to ask another integrator first. Moving to another ERP costs a lot of money you have no guarantee that you won't have other issues.
Odoo isn't the right tool for everyone and there was a few customers that we recommended to use something else than Odoo (usually, Odoo was either too big or too small for these customers, or they wanted a custom app from scratch)
So, if even changing the integrator doesn't help, then I would consider another tool.
1
u/Double_Cost4865 23h ago
I work for an Odoo partner and very curious about this. Are all host servers fully utilised when Odoo is running slow, i.e is the load well balanced? What part of Odoo is slow, is it navigating between views, or some specific server actions/buttons? Personally, I think profiling custom code should be the first step, as in looking for poorly designed queries. 300 users is more than we have worked with but it’s not that high. Also, do you use any external visualisation tools like PowerBI that connect directly to Postgres? I’ve been working with Odoo for more than 4 years and absolutely love it, so keen to hear more about limitations!
1
u/divad1196 21h ago
I guess you wanted to ask the comment directly and not my response to it?
But for your question about the load: from the setup described here, there is no loadbalancing of any kind. Workers don't do balancing or job-stealing in Odoo. And tools like PowerBI don't take a lock on Postgres so it's unlikely to be the issue.
About the profiling, we tested 2 tools (cProfile and another one): - many issues won't appear on test instances until you find the exact cause, and testing in production slows Odoo down even more. - at the end of the day, the profiling won't show things related to Odoo studio, or inefficient IO (like .search in loops), cpu-wait (or not clear enough), bad algorithm (I once saw a dev that wrote a mean using 3 nested loop, so O(n3)) or configuration
Having the infrastructure and configuration quickly checked and having an experienced dev following the path of the code is, from my experience, the more reliable method.
→ More replies (0)
2
u/Wayne_Kane 1d ago
Try Frappe as well.
Frappe is more customizable and more developer friendly than Odoo. Its plugin system (hooks) is very flexible to override default framework code.
2
u/divad1196 1d ago
It's like OP wants to learn it.
And btw, Odoo is 100% extensible. Any function can be extended. The issue is when people create functions that does everything without any function call. This forced the developer to rewrite the function instead of just extending it.
Since version 14.0, Odoo SA started to rewrite more and more of their functions by following guidelines that offers better hook points and removed the need for rewrites.
2
u/Koecki 1d ago
I do think that Odoo is nice to work with, but keep in mind that with any ERP the main challenge won’t be from a development perspective, but mostly knowing how the system works and finding smart ways to integrate your extensions into the existing framework. Once you find that out, coding will not be much of an issue.
2
u/CallumD027 12h ago edited 12h ago
Don't mistake Odoo for something else. Odoo is an ERP application with the capability to add functionality using modules, not a web framework comparable to Django or Flask.
If you're trying to setup an ERP and want to extend it with some custom functionality, Odoo is great for that and you should be able to do what you want. If you're trying to build a brand new application using web frameworks (whether it interfaces with an ERP on the backend or not), then you should be considering something else. You can use the OdooRPC library to query Odoo in external applications.
-6
u/16lr 1d ago
It is not used by big companies so it will not be a good practice to master it because you wont use it. For research and general knowledge, it will be helpful.
5
u/divad1196 1d ago
Kinda wrong.
True: many companies will neber switch as they are too commited to another ERP (Sap, dynamics, salesforve, ..). But: Odoo has started like 2 years ago to target SAP customers. They have an agressive advertising with really low prices, many companies did the switch from other softwares. You can find a lot of companies using Odoo.
But the ERP itself doesn't matter: - working on an ERP (whatever the ERP is) gives you valuable non-technical skills - knowing an ERP as value for the employer: quicker to adapt to the companies' ERP, will have an external opinion on how to do things, ...
I only applied to 7 job interviews after my Odoo job, got 4 job offers (1 refusal because of salary requested too high and 1 job I told them I had found a job already before I got their answer). In each interview, they asked me about the ERP. And I know it was the same for my colleagues that left the company.
So, don't underestimate what learning it will bring you.
26
u/divad1196 1d ago
I worked 5 years as lead for the company that was the 1st Odoo partner in Switzerland and 5th worldwide at that time
Odoo framework is really unusal but very easy to use for 99% of what customers needs. The apprentices I managed their were able to do most tickets with little supervision after a few month of teaching them.
Now, there are traps: - Don't consider Odoo as django or other framework. - Don't try to do things by yourself (like html for the views or widgets). There is a way for that (when you get better, you will have their "Owl" framework, but don't rush on it) - There are many implicit stuff, like a model always need at least 1 permission, and that changed through versions. - Permissions are on the model level (or model-attributes), which is a lot better than what other framework propose security-wise with little performance downside. It also makes the code easier to read and maintain.
Odoo is so easy to use that I still use it as a framework for some of my project years after changing job.
On the experience side, you won't get much experience on the technical side as Odoo is easy and most of what you learn cannot be transposed to other techs. But you can get a lot of experience on the project and customer management side. If you worked for different companies as I was, you get to see, understand and compare many companies and their needs. This is really valuable on a resume. Also, knowing an ERP is also by itself valuable.
Anyone having questions about Odoo can contact me in private, I will always be glad to help.