question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Version 3.0 Planning

See original GitHub issue

Version 3.0 Planning

The time has come to start thinking about what the next version of Dynamoose will look like.

Overview

v3.0 is planning to be pretty light in terms of breaking changes compared to v2.0. The main priority for v3.0 is to get an extremely solid foundation to be able to iterate on for a long time to come. I envision all future major versions of Dynamoose to include maybe 1 or 2 breaking changes that are relatively minor in scale. The goal is for this to be the last major version that requires any type of substantial changes to users codebases to get working with the new version. I also envision future major versions of Dynamoose to possibly take place more frequently due to the smaller amount of breaking changes that will occur.

This really includes things like solidifying the concepts of Dynamoose. What does a Model really mean? What should be the behavior of defaults? What does set mean (ex. should it occur before or after type checking, etc)? Lots of foundational questions like that I hope users will ask and discuss as part of our v3.0 process.

Goals

Alpha

  • #900
  • #1093
  • The v3 documentation for Model is incorrect, it shows a lot of settings that are no longer valid

Beta

  • #932
  • Any type (this should work for both type & schema in Schema objects)
  • #1023?
  • Make FAQ about what order Dynamoose processes events (ie. set/get happen after type check)
  • Setup automatic dark mode for documentation based on OS setting
  • #1129
  • Consider making global setting true on indexes by default
  • https://github.com/dynamoose/dynamoose/issues/1306
  • #1002
    • Foundation code
    • Add tests for adding new instances
    • Add documentation
  • Consider only initializing Table when request is made (get, update, etc). We could also add a table.initialize method to do this manually.
  • #1320
  • Rename Initalizer to be correct spelling
  • Add object/item/document wide set, get, validate methods
    • Set
    • Get
    • Validate
  • Make Condition.requestObject private
  • Make Serializer properties private
  • Promote to beta
    • Need to figure out how to merge publish changes made in v3 into v2
    • Create new v2 branch based on main
    • Update README branch strategy
    • Merge v3 into main
    • Publish new v3 release
  • https://github.com/dynamoose/dynamoose/issues/1321
  • Make more schema properties private
  • Make more item properties private
  • #1301
  • #1155
  • Remove all instances of //... in documentation
  • #1361
  • #1360
  • Add more JSDoc documentation
    • Build system to convert .d.ts files to .js files to use for documentation. Basically we can take every interface and turn it into an object and then use that to create our documentation.

  • Plugin Support
    • Need to figure out how this is going to work with TypeScript
  • Allow for schema and model prioritization to be impacted by validate methods
  • Consider changing rangeKey and hashKey to not be settings of the property but instead be settings of the model (or table in v3)
  • Add more functions to dynamoose.Table
  • Look into more single table design improvements
  • Drop native callback support and encourage users to use util.callbackify as an alternative?
    • After considering this more, I don’t think this is going to happen in v3.
  • #977?
  • Take TypeScript out of beta? (Will be easier if we move to Jest and write tests in TypeScript)
  • Throw warnings for invalid settings (ex. timestamps on Model settings). Need to make sure this is compatible with plugins.
  • Disallow Model’s having multiple schemas
  • Consider removing dynamoose.UNDEFINED. This could be handled by having delete obj.a have different behavior than obj.a = undefined. We can check this by using obj.a === undefined and obj.hasOwnProperty('a').
    • This can’t be done due to how update works. There is no way to pass in a single object and determine between reverting to the default, and using removing the property.

Timeline

  • Discussion/RFC/Proposals - Now
  • Development Starts - Now
  • Beta Release - TBD
  • Final Release - TBD

Blockers

FAQ

How can I submit ideas/goals for v3.0?

Create a new issue and include v3.0 right after the ] in the issue title. Make it clear it’s a proposal for v3.0, and I will add it to this issue Goals section above. Your issue you create is where discussion will occur about the proposal.

How can I support v3.0?

Right now, submit feedback! What would you like to see in v3.0? If you could have complete control over Dynamoose and could break everything to make it work better, what would you change? No ideas are off limits here. Even if I shot down an idea in the past because it was a breaking change, now is the time to bring it up again.

As this process moves forward, the ways you can support v3.0 will change. This will include submitting PRs, testing beta versions, etc.

I have an idea for v3.0, but I’m not sure if it’s good.

Follow the steps above for How can I submit ideas/goals for v3.0?! Even if you are unsure about it, it will lead to discussion which will benefit Dynamoose.

What does the timeline look like for v3.0?

This is definitely a 2021 project at the earliest. The reason I’m starting discussion now is to keep breaking changes organized. I also want a very extended period where users can comment on ideas for v3.0. Right now, I don’t anticipate development starting in 2020. However this could change and I might decide to start minor development in late December.

Can I submit PRs for v3.0 right now?

Yes! Feel free to submit PRs to the v3 branch. It would be a good idea to comment here and tag me so I’m aware and don’t overlap with your work.

Issue Analytics

  • State:closed
  • Created 3 years ago
  • Comments:15 (8 by maintainers)

github_iconTop GitHub Comments

5reactions
cko-moho-khaleqicommented, Jan 8, 2021

AWS SDK v3 is out for node

1reaction
simlevesquecommented, Sep 11, 2021

I’ll see what I can do ! give me like a week

Read more comments on GitHub >

github_iconTop Results From Across the Web

Book Title: - BIM Project Execution Planning Guide, Version 3.0
BIM Project Execution Planning Guide, Version 3.0. Authors: John Messner; Chimay Anumba; Craig Dubler; Shane Goodman; Colleen Kasprzak; Ralph ...
Read more >
Buy Microsoft Project Plan 3 - Microsoft 365
Get powerful project management and publishing in the cloud, plus keep projects, resources, and teams organized and on track. • Use easy and...
Read more >
Version 3.0 released - Node-RED
As happened with 2.0, we've overrun our plan for getting 3.0 released in April. But the series of beta releases we have been...
Read more >
Genshin Impact version 3.0 update now available - Gematsu
miHoYo has released the version 3.0 update for Genshin Impact, which adds new region Sumeru, playable characters Tighnari, Collei, and Dori, ...
Read more >
Developing and Maintaining Emergency Operations Plans
CPG 101 shows how emergency operations plans connect to planning efforts in all five mission areas2. Version 3.0 of this guide emphasizes the...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found