Uploaded image for project: 'Go Driver'
  1. Go Driver
  2. GODRIVER-1787

Implement Go Driver 2.0: MongoDB Driver

    • Type: Icon: Epic Epic
    • Resolution: Unresolved
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: API
    • Labels:
      None
    • Hide
      1. What would you like to communicate to the user about this feature?
      2. Would you like the user to see examples of the syntax and/or executable code and its output?
      3. Which versions of the driver/connector does this apply to?
      Show
      1. What would you like to communicate to the user about this feature? 2. Would you like the user to see examples of the syntax and/or executable code and its output? 3. Which versions of the driver/connector does this apply to?
    • 11
    • 36
    • 39
    • 100
    • Hide

      Engineer(s): Qingyang Hu, Preston Vasquez

      2024-06-21: Updating target end date to 2024-07-19

      *What was completed over the last two weeks?

      • What's the focus over the next two weeks?
        • GODRIVER-3252: Update signature of Database and IndexView methods to return a slice of values instead of pointers
        • Write the 1.x -> 2.0 migration guide

      The team will be out for GopherCon from July 8th to 10th.


      2024-06-07: Updating target end date to 2024-06-28

      • What was completed over the last two weeks?
        • GODRIVER-3038 (merged): Apply CSE to IndexView operations.
        • GODRIVER-3023 (merged): There is no need to check for errors when cloning a collection, update the API to reflect this.
        • GODRIVER-3205 (merged): Make DistinctResult use the Collection's BSONOptions when decoding results
        • GODRIVER-2821 (In review): Don't return "ErrUnacknowledgedWrite" when using an unacknowledged write concern.
        • GODRIVER-3220 (In review): Change IndexView.DropOne to not return bson.Raw
      • What's the focus over the next two weeks?
        • Write the 1.x -> 2.0 migration guide

      Preston is on vacation from Jun 14 - 25th


      2024-05-24: On track for June 14

      • What was completed over the last two weeks?
        • GODRIVER-3038 (merged): Apply CSE to IndexView operations.
        • GODRIVER-3023 (in review): There is no need to check for errors when cloning a collection, update the API to reflect this.
      • What's the focus over the next two weeks?
        • GODRIVER-2821 (carryover): Don't return "ErrUnacknowledgedWrite" when using an unacknowledged write concern. The Go Driver is not aligned with other drivers in handling these cases, opting to use a sentinel error in 1.x. This change will lose information when performing DDL commands such as creating a index or dropping a collection, it's unclear if we should do this.
        • GODRIVER-2689 (carryover): Simplify the "readpref" API. The readpref package and types use a lot of unnecessary APIs that can be confusing for users. The goal of this ticket is to remove the functional patterns in favor of exporting all optional fields.
      • Impediments encountered over the last two weeks
        • None

      2024-05-10: On track for June 14

      • What was completed over the last two weeks?
      • What's the focus over the next two weeks?
        • GODRIVER-2821 (carryover): Don't return "ErrUnacknowledgedWrite" when using an unacknowledged write concern. The Go Driver is not aligned with other drivers in handling these cases, opting to use a sentinel error in 1.x.
        • GODRIVER-2689: Simplify the "readpref" API. The readpref package and types use a lot of unnecessary APIs that can be confusing for users. The goal of this ticket is to remove the functional patterns in favor of exporting all optional fields.
        • GODRIVER-3023: There is no need to check for errors when cloning a collection, update the API to reflect this.
      • Impediments encountered over the last two weeks
        • The last two weeks have primarily been focused on resolving PR issues with CSOT 2.0 and the new options pattern. These are two of the most complicated changes being made in 2.0 and the team has been very methodical in vetting the proposals.

      Engineer(s): Qingyang Hu, Preston Vasquez

      2024-04-26

      • What was completed over the last two weeks?
        • GODRIVER-2965 (in review): Internalizing the description package.
      • What's the focus over the next two weeks?
        • GODRIVER-3038: Apply CSE to IndexView operations
        • GODRIVER-2821: Don't return "ErrUnacknowledgedWrite" when using an unacknowledged write concern. The Go Driver is not aligned with other drivers in handling these cases, opting to use a sentinel error in 1.x.
      • Impediments encountered over the last two weeks*
        • Multiple complex help tickets have come up: HELP-58066 , HELP-58664

      2024-04-12: Updating target end date to 2024-06-14

      • What was completed over the last two weeks?
        • GODRIVER-2443 (in review): Make Distinct return a decodable struct, specifically a mongo.SingleResult. This type has been repurposed to generalize the return type for the Raw method, either a bson.RawArray or bson.Raw value.
        • GODRIVER-1639: Add bson.RawArray to the bson library to enable users to decode array types in the stable API. This also gives us the type used for the Distinct method update.
      • What's the focus over the next two weeks?
        • GODRIVER-2965: Internalizing the description package. This package unnecessarily extends the surface area of the stable API. Internalizing it will enable us to alter selector logic in the 2.0.1 package without causing a breaking change.
        • GODRIVER-3038: IndexView's Create, List, and Drop operations do not pass in the client FLE encryption data to the operation layer. This change is likely a breaking change and must be done as part of the 2.0 efforts. If it can be deferred, we will defer it to 2.0.1.
      • Impediments encountered over the last two weeks
        • Troubleshooting complex CSOT issues unrelated to 2.0

      2024-04-01: setting new target end date to 2023\4-04-19

      • 29/51 tickets completed
      • High complexity tickets are in review
      • Had to push 2.0 off for a week to work on CSOT

      2024-03-15: setting new target end date to 2024-04-12

      • 28/51 tickets completed
      • The highest complexity tickets are being finished up, in review
      • Options updates complete

      2024-03-01: setting new target end date to 2024-04-01

      • 20 tickets remaining in the backlog, mostly low complexity
      • Removed 8 tickets form the epic
      • CSOT work complete
      • Implementing options improvements

      2024-02-16: setting new target end date to 2024-03-15

      • 29/58 tickets complete
      • 1 ticket in code review
      • CSOT working coming to a close

      2024-02-02: setting new target end date to 2024-03-01

      • 29/58 tickets complete
      • 1 ticket in code review
      • CSOT major update is still in progress

      2024-01-19: setting new target end date to 2024-02-16

      • 29/58 tickets complete
      • 1 ticket in code review
      • CSOT is taking longer than expected, specifically using connectTimeoutMS to cover all blocking operations during connection establishment

      2024-01-09: No change to target end date

      • 26/58 tickets complete
      • 5 tickets in code review
      • CSOT discussions ongoing

      2023-12-08: setting new target end date to 2023-12-22

      • 21/55 tickets complete
      • 3 tickets in code review
      • Discussions around high complexity tickets are going well.

      2023-11-22: No change to target end date

      • 19/55 tickets complete
      • 3 tickets in code review
      • Continued involvement from outside contributors

      2023-11-10: setting new target end date to 2023-12-15

      • 14/55 tickets completes ~25%. Remaining:
      • 1 deprecation change
      • 4 high complexity & low risk ~ 1 weeks
      • 8 low complexity & low risk ~ .5 week
      • 16 high complexity & high risk ~ 2 weeks
      • 6 low complexity & high risk ~ 1 week
      • 2 follow up tasks ~ .5 week
      • 5 tickets in review:
      • Simplify GridFS
      • Make comment field type "any"
      • Make defining a majority write concern literal easier
      • Remove context.Context parameter to mongo.Connect
      • Don't return "ErrUnacknowledgedWrite" when using an unacknowledged write
      • 4 tickets in progress:
      • Make Distinct return a Cursor instead of []any
      • Rename gridfs errors
      • Convert session interface to a struct
      • Update options API

      2023-10-27: No change to target end date

      • Simplify GridFS timeout API in review
      • Add encryptedFields to Collection.Drop in progress
      • Un-export all result type BSON unmarshaling functions and BSON struct tags in progress
      • Fix ReadConcern logic on RunCommand up next

      2023-10-13: No change to target end date

      Status Updates:

      • Completed removal of deprecated code in main package
      • Started Migration Guide document
      • Started removal of deprecated code in bson packag

      2023-09-29: Setting initial target end date to 2023-11-03

      Status Updates:

      • The team had a kickoff meeting to coordinate work and decided on a branching strategy
      • Merged GODRIVER-2690, which removed vendored core library code
      • Nearing completion on GODRIVER-2617, which removes deprecated code
      Show
      Engineer(s): Qingyang Hu, Preston Vasquez 2024-06-21: Updating target end date to 2024-07-19 *What was completed over the last two weeks? GODRIVER-2348 was approved. What's the focus over the next two weeks? GODRIVER-3252 : Update signature of Database and IndexView methods to return a slice of values instead of pointers Write the 1.x -> 2.0 migration guide Impediments encountered over the last two weeks   GODRIVER-2689 and GODRIVER-2499 are still blocked on GODRIVER-2696 . The team will be out for GopherCon from July 8th to 10th. 2024-06-07: Updating target end date to 2024-06-28 What was completed over the last two weeks? GODRIVER-3038 (merged): Apply CSE to IndexView operations. GODRIVER-3023 (merged): There is no need to check for errors when cloning a collection, update the API to reflect this. GODRIVER-3205 (merged): Make DistinctResult use the Collection's BSONOptions when decoding results GODRIVER-2821 (In review): Don't return "ErrUnacknowledgedWrite" when using an unacknowledged write concern. GODRIVER-3220 (In review): Change IndexView.DropOne to not return bson.Raw What's the focus over the next two weeks? Write the 1.x -> 2.0 migration guide Impediments encountered over the last two weeks The remaining two code change tickets are GODRIVER-2689 and GODRIVER-2499 , which are both blocked on GODRIVER-2696 , which is in review. Preston is on vacation from Jun 14 - 25th 2024-05-24: On track for June 14 What was completed over the last two weeks? GODRIVER-3038 (merged): Apply CSE to IndexView operations. GODRIVER-3023 (in review): There is no need to check for errors when cloning a collection, update the API to reflect this. What's the focus over the next two weeks? GODRIVER-2821 (carryover): Don't return "ErrUnacknowledgedWrite" when using an unacknowledged write concern. The Go Driver is not aligned with other drivers in handling these cases, opting to use a sentinel error in 1.x. This change will lose information when performing DDL commands such as creating a index or dropping a collection, it's unclear if we should do this. GODRIVER-2689 (carryover): Simplify the "readpref" API. The  readpref package and types use a lot of unnecessary APIs that can be confusing for users. The goal of this ticket is to remove the functional patterns in favor of exporting all optional fields. Impediments encountered over the last two weeks None 2024-05-10: On track for June 14 What was completed over the last two weeks? GODRIVER-3038 (in review): Apply CSE to IndexView operations. What's the focus over the next two weeks? GODRIVER-2821 (carryover): Don't return "ErrUnacknowledgedWrite" when using an unacknowledged write concern. The Go Driver is not aligned with other drivers in handling these cases, opting to use a sentinel error in 1.x. GODRIVER-2689 : Simplify the "readpref" API. The  readpref package and types use a lot of unnecessary APIs that can be confusing for users. The goal of this ticket is to remove the functional patterns in favor of exporting all optional fields. GODRIVER-3023 : There is no need to check for errors when cloning a collection, update the API to reflect this. Impediments encountered over the last two weeks The last two weeks have primarily been focused on resolving PR issues with CSOT 2.0 and the new options pattern. These are two of the most complicated changes being made in 2.0 and the team has been very methodical in vetting the proposals. Engineer(s): Qingyang Hu, Preston Vasquez 2024-04-26 What was completed over the last two weeks? GODRIVER-2965 (in review): Internalizing the description package. What's the focus over the next two weeks? GODRIVER-3038 : Apply CSE to IndexView operations GODRIVER-2821 : Don't return "ErrUnacknowledgedWrite" when using an unacknowledged write concern. The Go Driver is not aligned with other drivers in handling these cases, opting to use a sentinel error in 1.x. Impediments encountered over the last two weeks* Multiple complex help tickets have come up: HELP-58066 , HELP-58664 2024-04-12: Updating target end date to 2024-06-14 What was completed over the last two weeks? GODRIVER-2443 (in review): Make Distinct return a decodable struct, specifically a mongo.SingleResult . This type has been repurposed to generalize the return type for the Raw method, either a bson.RawArray or bson.Raw value. GODRIVER-1639 : Add  bson.RawArray to the bson library to enable users to decode array types in the stable API. This also gives us the type used for the Distinct method update. What's the focus over the next two weeks? GODRIVER-2965 : Internalizing the description package. This package unnecessarily extends the surface area of the stable API. Internalizing it will enable us to alter selector logic in the 2.0.1 package without causing a breaking change. GODRIVER-3038 : IndexView's Create, List, and Drop operations do not pass in the client FLE encryption data to the operation layer. This change is likely a breaking change and must be done as part of the 2.0 efforts. If it can be deferred, we will defer it to 2.0.1. Impediments encountered over the last two weeks Troubleshooting complex CSOT issues unrelated to 2.0 2024-04-01: setting new target end date to 2023\4-04-19 29/51 tickets completed High complexity tickets are in review Had to push 2.0 off for a week to work on CSOT 2024-03-15: setting new target end date to 2024-04-12 28/51 tickets completed The highest complexity tickets are being finished up, in review Options updates complete 2024-03-01: setting new target end date to 2024-04-01 20 tickets remaining in the backlog, mostly low complexity Removed 8 tickets form the epic CSOT work complete Implementing options improvements 2024-02-16: setting new target end date to 2024-03-15 29/58 tickets complete 1 ticket in code review CSOT working coming to a close 2024-02-02: setting new target end date to 2024-03-01 29/58 tickets complete 1 ticket in code review CSOT major update is still in progress 2024-01-19: setting new target end date to 2024-02-16 29/58 tickets complete 1 ticket in code review CSOT is taking longer than expected, specifically using connectTimeoutMS to cover all blocking operations during connection establishment 2024-01-09: No change to target end date 26/58 tickets complete 5 tickets in code review CSOT discussions ongoing 2023-12-08: setting new target end date to 2023-12-22 21/55 tickets complete 3 tickets in code review Discussions around high complexity tickets are going well. 2023-11-22: No change to target end date 19/55 tickets complete 3 tickets in code review Continued involvement from outside contributors 2023-11-10: setting new target end date to 2023-12-15 14/55 tickets completes ~25%. Remaining: 1 deprecation change 4 high complexity & low risk ~ 1 weeks 8 low complexity & low risk ~ .5 week 16 high complexity & high risk ~ 2 weeks 6 low complexity & high risk ~ 1 week 2 follow up tasks ~ .5 week 5 tickets in review: Simplify GridFS Make comment field type "any" Make defining a majority write concern literal easier Remove context.Context parameter to mongo.Connect Don't return "ErrUnacknowledgedWrite" when using an unacknowledged write 4 tickets in progress: Make Distinct return a Cursor instead of []any Rename gridfs errors Convert session interface to a struct Update options API 2023-10-27: No change to target end date Simplify GridFS timeout API in review Add encryptedFields to Collection.Drop in progress Un-export all result type BSON unmarshaling functions and BSON struct tags in progress Fix ReadConcern logic on RunCommand up next 2023-10-13: No change to target end date Status Updates: Completed removal of deprecated code in main package Started Migration Guide document Started removal of deprecated code in bson packag 2023-09-29: Setting initial target end date to 2023-11-03 Status Updates: The team had a kickoff meeting to coordinate work and decided on a branching strategy Merged GODRIVER-2690 , which removed vendored core library code Nearing completion on GODRIVER-2617 , which removes deprecated code

      Epic Summary

      Summary
      Create a new major release with backwards breaking API changes

      Motivation
      This will address usability concerns in the driver that require backwards breaking changes.

      Cast of Characters

      Engineering Lead:
      Document Author:
      POCers:
      Product Owner:
      Program Manager:
      Stakeholders:

      Documentation

      [Scope Document|some.url]
      [Technical Design Document|some.url]

            Assignee:
            preston.vasquez@mongodb.com Preston Vasquez
            Reporter:
            kevin.albertson@mongodb.com Kevin Albertson
            Votes:
            0 Vote for this issue
            Watchers:
            7 Start watching this issue

              Created:
              Updated:
              44 weeks, 3 days