- Internal inconsistencies w.r.t formatting -- sometimes there's newlines between functions, sometimes not.
- Docstrings are fairly haphazard. I remember seeing some somewhere, but can't find them anymore. I have no idea what the `ir` module does or what it's for.
- The custom ORM (`bin/osv/`) scares the daylights out of me. It only has 4 test cases that I can see (in `test/test_osv.py`). I don't see any test cases for the DSL that the `osv` module provides.
- It appears that the ORM uses raw SQL as an intermediate for composing queries, then uses regular expressions to extract data from these intermediates.
I've only spent 10 minutes thumbing through the code, haven't read the docs or anything, so the above is a very shallow analysis.
Generally, I find the code to be well-organized and easy to find (it's just a set of python modules for the most part). I can't speak to the syntax formatting or functionality of the ORM yet...
You can get an overview of the technical "core" in the Memento: http://doc.openerp.com/memento/OpenERP_Technical_Memento_v0....
Here's what I can find:
5000+ lines of ORM code: http://bazaar.launchpad.net/~openerp/openobject-server/trunk...
300 lines of tests: http://bazaar.launchpad.net/~openerp/openobject-server/trunk...
The ORM code is fairly shocking - really hard to follow, hundred line methods/functions and multiple one and two character variables.
That said, the addons I mentioned _are_ part of the core. OpenERP is an extremely modular system, where even some basic blocks are modules. But these modules come with the server, not with the "addons" set. See https://bazaar.launchpad.net/~openerp/openobject-server/trun...