-
Notifications
You must be signed in to change notification settings - Fork 575
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
Release notes are difficult to associate with package versions #1331
Comments
This is a problem that I has been annoying me basically since this project started. Unfortunately I don't really know what we should do. Here's the crux of the issue. As of today, the Lerna let's you choose between independent and fixed vesioning schemes. In independent versioning, every package has it's own version number. In fixed versioning, every package has the same version number. This project uses independent versioning. The reason it does that is that a lot of the packages are totally decoupled. If we were to use fixed versioning then it would break semver on all of the packages. For example, updates to My suspicion is that it might be better if all the core packages (i.e. those scoped to Either way we should at least at the current In summary
As it stands, I'm kind of leaning towards option 2. I'm pretty much fed up with the current approach and I'm not sure I care about semver. There's a lot of advantages to going with the fixed approach (i.e. versioning documentation, identifying mismatched versions in your package.json) but it might be problematic. Worst case scenario we have to switch back. Should that happen it won't be that big of a deal. We're pre-1.0 so I'm willing to be a bit annoying. Right now I care more about the project being designed and managed well then I do in maintaining API so to speak. That said, I would love to hear your opinion @IronSean, as well as the opinion of anyone else who might be interested. |
@ncphillips you could pull off a double monorepo in a single git repo with Lerna by doing:
Where:
|
Yeah, I knew this would be a real dog of an issue when I mentioned it. There are so many decoupled packages involved there's no simple answer. I figured just associating the tinacms root package version like you mentioned in option 1 might be nice since everyone will have it, everyone will possibly be updating packages at the same time, and it'll probably update versions more often then not. But faces the limitation that some weeks it might not actually get any releases and suddenly the whole "one helpful hint" approach breaks down. It's definitely the simplest incomplete bandage. For option 2, I've used collections of packages before that use that approach: every package gets a version bump even if nothing has changed. As a developer it's easy to reference one set of release notes with one version number, and it's easy to know that all your versions are in sync. It's also fairly easy to just bump them all up at the same time. It definitely causes some release bloat though, where multiple package versions are the same code. It ends up being semver for the entire project ecosystem instead of individual packages. But npm should mostly handle that package version bloat. And although there are 35 packages currently, it seems most developers only install a handful in a given project. As a developer I don't find it unreasonable to go "oh library collection X has had a release, time to update them all to 2.2.3". I also don't know if semver for individual packages provides value in the context of tinacms. If That said, if @chrisdmacrae's approach above works, that might be a nice compromise of getting all the core packages on a fixed version scheme, and leaving the secondary packages that are unlikely to frequently update to do their thing. If Gatsby somehow goes completely out of fashion, you could stop updating those related packages and leave them at their final release. I think that approach could also work for a fixed versioning scheme, where Edit: Maybe a similar example could be the react ecosystem. |
This is some really great feedback.
This is definitely happens. Not super often, but sometimes we're totally focused on improving specific non-core behaviour.
This is the major benefit in my eyes. Seems like the downside is low, and the benefits to both maintainers and developers is high.
This is a really good point. Doing that is something someone might do in theory, but so far I doubt it would happen in practice.
If it really became that stale we could remove the package from the repository |
Sorry if I'm missing this context but it's not clear why these version bumps are happening? Does Lerna think there's a change when there isn't? As far as I know Lerna is able to look at the previous changes for a package |
With With |
The real issue though isn't the version numbers, it's how does someone using make sense of the version numbers? How can they use the version numbers and changelogs to figure out what changes they might have to make? |
Exploring in response to #1331 TODO: - [ ] Extract react-dismissible to it's own repository - [ ] Rename @tinacms/browser-storage-client to @tinacms/browser-storage It accidentally was bumped to version 1 which will cause problems - [ ] Go through and update all packages to have the right version number. Double check that that 0.23.0 is the highest of all version numbers
Fun fact: Shift+enter in github posts your comment instead of a line break. And I think it even chose "Close and Comment" over "Comment" A sort of out there idea would be a mixed mode: Packages always update to the same version, but the version only increment when there are changes. i.e. I can't decide if this is a good or awful idea. I'm probably just high on fumes since my mental gas tank is about empty for the day. It definitely isn't supported out of the box with Lerna. And it's not a pattern I've seen before so it's sort of confusing. But Tina release 1.1.0 would only update the necessary packages and npm would tell you if everything was at it's latest. |
Exploring in response to #1331 TODO: - [ ] Extract react-dismissible to it's own repository - [ ] Rename @tinacms/browser-storage-client to @tinacms/browser-storage It accidentally was bumped to version 1 which will cause problems - [ ] Go through and update all packages to have the right version number. Double check that that 0.23.0 is the highest of all version numbers
Hello, i thought it might make sense to drop my 2ct here as well - essentially another option to #1331 (comment) : I just upgraded to apollo-client@3 and have to say working with it is a breeze.
What exactly is the big advantage of shipping all these tinacms parts (from which in a lot of cases a big subset is used together at some point) as multiple packages? A medium post on that topic. |
Hey @sakulstra thanks for the input! I intend on writing more about this in the future but I'll answer in short here. The main thing is that Tina is a not meant to be a standalone application, but a toolkit for building CMSs. We provide many tools for people using Tina in different use-cases. One reason why this matters is bundle sizes. People using next-tinacms-github shouldn't need to use gatsby-tinacms-git, and vice versa. We even extracted react-tinacms-editor so you can leave the wysiwyg out entirely, or at least load it more efficiently. This idea extends even to some of the "core" |
While I was/still am following that thinking for some projects I think the point on bundle size is not true when using modern bundlers and side effect free code. When using parts of gql-client, lodash or material-ui, you only pay the price for e.g. popper.js in bundle size when you import sth using popper. Anyhow that's just food for thought. I realized that 100% of my private monorepo usage is in fact unnnecessary which got me thinking it might be the case with Tina as well. |
Having switched to fixed versioning I think this issue is resolved. Here's the first Release Notes post after switching Here's the project wide CHANGELOG |
Description
Currently release notes are sent out with every release in the form of a blog post. These blog posts are dated, but do not show the version numbers of the packages. The installed npm packages however use semver. To answer the question "have any released changes addressed a problem I'm experiencing, and are there any breaking changes I need to be aware of to update?" neither the github releases or the release notes posts provide all the answers.
By looking for the tag for the version I have installed I can determine what date it was released, then start finding the relevant blog posts. But it would be easier if this information was all in one place. Even including the tinacms package version in the release notes as a lowest common denominator might be helpful. A CHANGELOG.md which just contains a link to the blog posts might also be helpful to others.
The text was updated successfully, but these errors were encountered: