There is an unwritten rule on the internet: If a device has a screen, someone, somewhere, must figure out how to make it play the famous "Bad Apple" shadow art video. Or play Doom. From graphing calculators to oscilloscopes, it’s the ultimate "Hello World" for creative developers.
So obviously we needed to make this happen in Odoo. The result? Well, see for yourself.
Wait, isn't that just a video player?
Not exactly. If we had just embedded a YouTube link inside an Odoo dashboard, that would be cheating (and boring).
What you are seeing above is Odoo pre-processing the video, and then using Javascript to render it using some custom Odoo UI elements, and the standard Javascript Audio API, at a smooth 24fps. We probably could've gone faster, but this is an out of hours joke that got out of hand. We have to draw the line somewhere. We originally wanted to reuse one of the existing UI elements (either the Kanban or the Cohort view), but the issue we ran into was just "not enough pixels"!
It’s silly. It’s fun. But there's an important lesson here.
The Stigma: "All Customisations are Evil"
If you have been in the #ERP or #Odoo world for long, you have likely heard the warnings: "Keep it standard", or "Customisation breaks upgrades", and that customizing your ERP is a death sentence for your future maintenance. The fear is that as soon as you tweak the code to fit your specific business needs you are locking yourself into a version that will be painful and expensive to upgrade later.
And that's not always true. We want to push back on that.
In fact, the right customisations can be what gives your business its competitive edge. The problem isn't changing the software; the problem is how the software is changed. It's about being tactical and making wise choices.
Does this mean we'll say yes to every customisation? No. Will we be afraid to tell you this fits better as custom? No. Will we say "keep this custom" every upgrade? No. That's part of our job.
Our "Bad Apple" module was originally written for Odoo 18.0. We had intended to release this before Odoo 19.0, but we were very busy over summer and never produced the video.
We decided to port this module to the recently released Odoo 19.0. If the "all customisation is evil" theory held true, this should have been a headache. It involves complex Javascript and heavy data processing - surely something would break?
It took minutes. It didn't result in a headache, a refactor, or a crisis. Because the module was built cleanly, respecting the architecture of Odoo, and because Odoo (despite how fast it moves) does prioritise stability for it's core framework.
What does this mean for your Odoo installation?
We obviously don't recommend you use your ERP system to watch music videos (though, clearly, you can). However, the principle remains the same:
- Architecture matters: Good code survives upgrades. Knowing when to override Odoo core and when to create completely standalone modules is really important.
- The "warm" approach: We believe in building systems that fit you, not forcing you to fit the system. But this doesn't mean that we won't push back if you think you must have customisations. Are you the worlds most unique furniture shipping business? Probably not.
- Be wary of customisation: It's easy to over customise.
We will be releasing a follow-up video or blog soon for the developers out there who want to see the nitty-gritty technical details of how we achieved the rendering. Until then, remember: If Odoo can handle 4,000 or so frames of shadow art at 24 frame per second and audio, without breaking a sweat, it can definitely handle your unique business workflows.