-
-
Notifications
You must be signed in to change notification settings - Fork 361
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Version 3.0 Planning #1040
Comments
AWS SDK v3 is out for node |
@cko-moho-khaleqi Yep! Had a few blockers with it so kept it on there. Haven't gotten a chance to investigate resolutions that I was given yet tho. |
Really neat planning, great work so far from @fishcharlie and all contributors ! 👏 |
@HuEric What exactly are you hoping for here? It's important to know that everything in that video is possible with Dynamoose today. Big difference between I'd love to hear more about what you are looking for here. |
Sure ! |
@HuEric That is totally possible right now. When defining your model, just set an array of Schemas, one schema for Restaurant and another for Order. Then in your model you'll just have both of those schemas as an array for the schema argument. Then when making retrieving or saving documents, it will automatically determine which Schema to use depending on the data in the document. The major improvement we are looking at adding for v3 is changing the idea of a Model to represent an entity or type of data (examples: Restaurant, Order, Person or Movie). Currently, a Model represents a Table in DynamoDB. In v3 we are going to consider changing a Model to represent that entity or type of data. |
Thanks @fishcharlie for clarifying it ! |
@HuEric https://dynamoosejs.com/guide/Model
|
I'm looking for volunteers who want to help with Dynamoose v3. This will include the following responsibilities:
My only expectation is that volunteers are active in responding to discussions or questions when tagged, and that you put in effort into testing v3 in your own codebase. This is a great way to get involved in Dynamoose and ensure it continues to remain stable for your codebase without the responsibility that comes with being an active Dynamoose collaborator. Please message me or post here if you are interested in helping and I'll start tagging you in PRs and discussions related to v3. If for whatever reason you are unable to continue being active in v3 discussions, please ping me and I will remove you from the list of volunteers I tag in v3 related updates. |
@fishcharlie I'd be interested in helping you with this. Feel free to message me at any time. edit: I have an internal fork in a codebase at work so I have some idea of what's inside. |
@simlevesque All for the help! Next step is getting #1219 merged in. I just left a comment on that PR for what else needs to be done. Although you don't have write access to it, you could branch off of that branch, make the changes, and submit a different PR that merges your work into #1219. The other tasks that someone could work on currently (without much interference) include:
Then of course just fixing any issues in general on this repo, helps free me up to work more on v3. |
I'll see what I can do ! give me like a week |
@simlevesque If you happen to work on #1219, please do me 2 favors:
Reasons for this is that I might have time to work on it soon (not sure yet tho). So don't want you to be doing work and have me come in and finish it up, rendering your work useless. I'll be sure within the next week if I work on it to comment on the PR tho. Not sure if that is a concern, but the more communication and less pending work, the better. Let me know if any of that is a problem. |
No, none of this is a problem. I can let you know what I'll work on. I guess I'll start from the top of your list. |
Closing in favor of the v3 milestone. |
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 ofdefaults
? What doesset
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
getIndexAttributes
in another project, which is really bad practice and doesn't follow the Dynamoose guidelines, we should expose that), Awaiting ready status of models #1218, Public API to get HASH and RANGE key names using a Model instance #1286Model
to represent an entity as opposed to having it represent a DynamoDB Tabledynamoose.type.Constant()
helper method to easily create constant typesdynamoose.type.Combine()
helper method to easily create combine typesdynamoose.NULL
todynamoose.type.Null
dynamoose.THIS
todynamoose.type.This
internalSettings
to useinternalProperties
symbolAlpha
Beta
type
&schema
in Schema objects)set
/get
happen after type check)global
setting true on indexes by defaulttable.initialize
method to do this manually.set
,get
,validate
methodsCondition.requestObject
privatedynamoose-logger
&dynamoose-utils
back into primary repo and add system for deploying everything all at once. #1301//...
in documentationget
,scan
, etc) if table has not been initialized #1360.d.ts
files to.js
files to use for documentation. Basically we can take everyinterface
and turn it into an object and then use that to create our documentation.validate
methodsrangeKey
andhashKey
to not be settings of the property but instead be settings of the model (or table in v3)dynamoose.Table
util.callbackify
as an alternative?timestamps
on Model settings). Need to make sure this is compatible with plugins.Model
's having multiple schemasdynamoose.UNDEFINED
. This could be handled by havingdelete obj.a
have different behavior thanobj.a = undefined
. We can check this by usingobj.a === undefined
andobj.hasOwnProperty('a')
.Timeline
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 issueGoals
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.The text was updated successfully, but these errors were encountered: