MongoKitten 5 improvements
Obbut opened this issue · comments
This issue is meant for tracking the progress and goals of MongoKitten 5. The comments on this issue may be used for discussing MongoKitten 5 development.
@Joannis and I have limited time to work on MongoKitten 5. If you are a MongoKitten user, you are encouraged to help wherever possible. This issue should provide a general overview of the tasks that need to be done for MK5, but if you're not sure where you can help, feel free to comment here or reach out to one of us directly.
We documented our general architecture and philosophy.
General Development Information
- Development takes place on the
master/5.0
branch - There is no time schedule. It is done when it is done
- MongoKitten 5 is a from-the-ground-up rewrite
- The target platforms are macOS, Ubuntu versions supported by the Swift team, and iOS
- The target Swift version is 4.1 and later
High level goals
- Remove unneeded bloat
- Fully async with Swift NIO (but with sync helpers where possible)
- Embraces Codable where applicable
- Support modern MongoDB features (change streams, new MongoDB 3.6 protocol), while providing support for MongoDB 3.2 and later
How to help
- The most obvious way you can help is by contributing code. We will try to maintain a list of tasks in this issue
- Tests are never good enough
- Improve the documentation comments or write tutorials
- Provide us with feedback on our code and API. All feedback is very welcome, whether you think some behaviour is unexpected, not immediately obvious, code is unclear or ugly, but of course also when you do like something
- We are also looking for someone to improve our website. The website should be simple and provide links to OpenKitten projects and documentation
Todo list
Easy issues
- Expose drop database and collection as a helper
- Add text search helpers to Query
- Collation support
Medium issues
- Read/Write concern practical and unit tests
- Respect MongoDB's 16MB query cap in the old and the new protocol
- A proper way of dealing with protocol parsing errors (I.E. not crashing)
- A hell of a lot of documentation and unit tests
Hard issues
- X509 certificate based auth
- Authentication mechanism negotiation
- Automatic selection of mechanism for older servers
- MongoDB-CR auth
- Decimal128 support in BSON
- Swift NIO ZLib compression for the wire protocol
Hardcore issues
- Sessions support in the driver
- Transactions
- Retryable writes dependent upon sessions
- Custom Root certificates for NIO SSL (so IBM bluemix can be better supported)
- DNS based server discovery
- Server Discovery and Monitoring
- MongoKitten internal connection pool for SDaM
- Server Selection
Internal research points
The remainder of open points are relatively little work. Since MongoKitten 5 is released this implies these points are not (completely) done yet. If you're unsure how to help out with one or more of these points, give us a heads up in slack and we'll help you along.
Is there support for Decimal128 yet? Seeing it's not checked off here and had a hard time finding any useful references in the code.