orlandos-nl / MongoKitten

Native MongoDB driver for Swift, written in Swift

Home Page:https://orlandos.nl/docs/mongokitten/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

Hardcore issues

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.