Mongoid: Ultra Edition
The no-baloney fork of Mongoid. Made by the community, for the community.
Mongoid is the Ruby Object Document Mapper (ODM) for MongoDB.
This fork of Mongoid is not endorsed by or affiliated with MongoDB Inc. 👍
Installation
Replace gem 'mongoid'
in your application's Gemfile with:
gem 'mongoid-ultra'
(Do not install mongoid
and mongoid-ultra
at the same time.)
Compatibility
- Ruby (MRI) 2.7 - 3.2
- JRuby 9.4
- MongoDB server 4.4 - 6.0
Version support may differ from MongoDB's Mongoid release.
Purpose & Principles
This is a community-driven fork of Mongoid, intend to improve the following over MongoDB's Mongoid:
- Feature robustness
- Code quality
- Behavior rationality
- Developer experience
- Stability
- Transparency
- Community involvement
This fork will merge in changes at least once-per-month from mongodb/mongoid
as its "upstream" repo. We may backport PRs to upstream where it makes sense to do so, but cannot guarantee that
the upstream will merge them.
Releases & Versioning
Important: Mongoid Ultra is currently in alpha
state. The first full release will be 9.0.0.0
.
For the time being, version numbers will shadow those of mongodb/mongoid
with an additional "patch" number added:
X.Y.Z.P
Where X.Y.Z
is the latest upstream release version, and P
is the patch version of this repo.
P
will be reset to zero anytime the major version X
changes, but will not be reset when the minor or tiny Y
/Z
version changes.
We will also use -alpha
, -beta
, -rc
, etc. suffixes to denote pre-releases.
Semver: For the time being will follow the major version component of semver, i.e. not breaking or
removing functionality except in major (X
) releases. We may introduce new features in new patch (P
) releases,
and will use feature flags prefixed with ultra_
to allow users to opt-in.
All new versions will undergo battle-testing in production at TableCheck prior to being released.
Roadmap
Notable Differences from MongoDB Mongoid
- ✅ Use a publicly visible CI (Github Actions) as the primary CI. Remove Evergreen CI.
- ✅ Remove MRSS submodules and other MongoDB corporate baloney.
- More to come soon!
Documentation
The documentation of this fork will be hosted at: https://tablecheck.github.io/mongoid-ultra/ (not online yet!)
Support
For beginners, please use MongoDB's existing Mongoid support resources:
Issues & Contributing
Feature requests and bugs affecting both upstream and Mongoid Ultra should be reported in the MongoDB MONGOID Jira.
Please also raise a Mongoid Ultra Github issue in this project to track the fix. We prefer if upstream can make the fix first then we merge it.
Issues specific to Mongoid Ultra should be raised in the Mongoid Ultra Github issue tracker
Security Issues
Security issues affecting both upstream and Mongoid Ultra should be
reported to MongoDB.
Security issues affecting only Mongoid Ultra should be reported to security@tablecheck.com.
The email should be encrypted with the following PGP public key:
- Key ID:
0xDF7D22A0E8772326
- Fingerprint:
466C 56B9 E110 3CBA 2129 DBAD DF7D 22A0 E877 2326
We appreciate your help to disclose security issues responsibly.
Maintainership
Mongoid Ultra is shepherded by the team at TableCheck. TableCheck have been avid Mongoid users since 2013,
contributing over 150 PRs to Mongoid and MongoDB Ruby projects. TableCheck uses Mongoid to power millions of
restaurant reservations each month, and are personally invested in the making the best user experience possible.
We invite experienced Mongoid hands in the community to apply for co-maintainership.
Please raise a Mongoid Ultra Github issue if interested.
Reasons for Forking
Mongoid started as an open-source project created by Durran Jordan in 2009. MongoDB Inc. took over maintainership in 2015.
Since the transition, the hallmarks of user-disconnect and corporate fumbling have become apparent:
- Introduction of critical semver-breaking issues.
- Lack of a publicly visible roadmap or direction (when requested, it was said to be a "corporate secret".)
- Unwillingness to adopt basic best industry-standard practices, e.g. Rubocop linter and a publicly-visible CI workflow.
- Refusal to merge patches which would be of obvious benefit to the community.
- Lack of bandwidth and resources to review simple PR contributions.
None of this is intended to disparage the hard-working and talented individuals at MongoDB Inc., but rather,
to illustrate that the corporate rules, philosophy, and priorities of MongoDB Inc. are not aligned with the needs
of its Ruby users.
It's time to do better! 💪 We hope this project encourages MongoDB Inc. to improve its own offering.
Disclaimer
MongoDB, Mongo, and the leaf logo are registered trademarks of MongoDB, Inc. and are used in compliance with
MongoDB Inc.'s Trademark Usage Guidelines.
Any usage herein should not be construed as an endorsement or affiliation with this project.