Updates on PyMODM

Hello, Pythonistas! Unfortunately, we have some news that will affect some of you - MongoDB is pausing our development of PyMODM. If you’re a user of PyMODM, you’ve probably noticed long before this point that our commit/improvements here have been sporadic at best.

We came to the decision to halt our development begrudgingly. The PyMODM project has relatively low usage, and there have been less than 1k users who visited the pymodm documentation year to date, but those who do use pyMODM have advocated for its improvement. Many of our top users for PyMODM are internal - that is, they are teams at MongoDB - so we are acutely aware that ceasing our development efforts here could be painful for our users.

The codebase will remain available to fork. If your team would like a replacement ODM, many Python users use mongoengine. One of our own developers, Ross Lawley, was previously heavily involved, and we know that this is an awesome open source project for the community.
As part of this announcement, we’d like to ask if there are any users who want to take over and maintain PyMODM, or if you just have questions, please reach out. Anything we can do to make this smoother for our users, we’re happy to do.

Thank you for using MongoDB, and for building great things with us.

7 Likes

Thank you for PyMODM!

I hope this is the right place to ask. I’ve tried switching to mongoengine in the past and, even though the API is almost the same, mongoengine was way slower than PyMODM. Does anyone have a similar experience? Anyone switching to mongoengine or others?

We found the same thing too. We ran some tests with a lot of referenced fields and checked the load/dump times. It was surprisingly slower, and this was like a year ago.

Same here, mongoengine is much slower than PyMODM for my application (required loading large nested documents).

couple years ago, I also switched to PyMODM due to this issue.
could you let me know, which version of mongoengine that you used ?

The lastest version, 0.20.0

I hope this is the right place to ask. I’ve tried switching to mongoengine in the past and, even though the API is almost the same, mongoengine was way slower than PyMODM.

PyMODM has an optimization built in such that Model fields are lazily decoded when they’re first accessed. This optimization means applications with large or deeply nested Models do not pay the full cost of deserialization when accessing a few fields. I believe that mongoengine has worse performance in these cases because it fully decodes the entire Model, including all embedded Models within. It may be possible to get this lazy decoding feature implemented in mongoengine.

1 Like

Thanks for the info :blush:.

if we follow these guides, will it solve our performance issue on mongoengine ?

Was this pausing covid related?

And are you any plans or conversations to unpause?

Welcome to the community @m_stemmons!

The decision to pause development on PyMODM was not COVID-related. The decision was driven mostly by lack of usage as @Rachelle pointed out in the original announcement. We are still looking for an interested member(s) of the community to take over ownership of the project and maintain PyMODM.

Hope this helps!

1 Like

Hi @Prashant_Mital,

If still available, I would like to volunteer to maintain PyMODM.

I am on GitHub at vladdoster.