-
Notifications
You must be signed in to change notification settings - Fork 566
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
[RFC] New changelog process #4499
Comments
The new system based on PR descriptions sounds like it would be the most intuitive way for engineers on other product teams to follow best-practices around maintaining the changelog. You guys have already done the work to standardize PR descriptions and have been using it consistently, so this approach seems like an extension of those efforts. One suggestion would be to clarify on what "consensus" means for resolving this RFC, and whose consensus you would like to gather. I assume that this means a majority of attendees at the Mobile Practice where this is voted upon, but I could be wrong. |
This seems reasonable to me. The only concern I have would be with the Dev changes section that would include mainly android specific changes over the next few weeks. But I think that’s fine since we don’t show dev changes to users. It’s also good to know that this will help us fix the issue with the changelog merge conflicts. |
I suppose by 'consensus' I mean 'nobody is against the idea of implementing the PR-based workflow'. And anyone in the engineering org is welcome to offer their opinion. I'll publicise this RFC at team standup on Monday. We can also discuss further at the mobile practice next week. |
That's a good point. One option to mitigate noise in changelogs is to also have android-specific dev changes and ios-specific dev changes. Once we get the tooling in place tweaking this stuff would be simple. |
Let's do it! I like the suggestion a lot, and I want to help do this. Oh, also, about
|
This looks great! 🎉 🙌 One thing I'll note is right now the changelog is only used for release notes for betas, when we release to App Store we still manually specify release notes, I would be in favor of continuing that just so devs don't have to worry about their changelog entries being user friendly and allowing us to personalize the release notes should we want to. Other thing I am thinking is nice about changelog now being updated on every commit vs. when a beta is shipped is that we can look at it at anytime on a branch and see what changes are in that current build, but I think we could probably easily accommodate that with this proposal with some script to allow for similar. Very much in favor! |
Thanks for the feedback everyone! Looks like we'll resolve with the following caveats:
Next step for me is to create Jira tickets for
|
Problem
With the Android launch just around the corner, we need to figure out a way to manage independent release notes for iOS and Android.
For iOS we currently generate release notes based on the
user_facing
portion of a changelog entry in CHANGELOG.yml.Here's the relevant code in our fastlane script
eigen/fastlane/Fastfile
Lines 43 to 44 in d88d47b
Also I think many of us are frustrated by the current process's tendency to cause merge conflicts, so it would be nice to simultaneously find a way around that.
Potential Solutions
Extending the current process
We can't simply replace the
user_facing
field with two fields:ios_user_facing
andandroid_user_facing
because we need to be able to release the app independently on both platforms.But what we could do is replace
CHANGELOG.yml
withCHANGELOG_IOS.yml
andCHANGELOG_ANDROID.yml
.Pros:
Cons:
Building a new system based on PR descriptions (proposed solution)
We could use PR descriptions as a source of truth to avoid merge conflicts, manual duplication, and making extra 'update changelog' commits.
How would that work?
PR template section + danger validation
We'd add a new section to the PR template. Something along the lines of:
And then we'd add a danger rule to validate the requirements outlined in the comments.
Log collation tooling
Firstly, we'd archive the current
CHANGELOG.yml
and replace it with two markdown files:CHANGELOG.ios.md
, andCHANGELOG.android.md
. Both of which would feature very visible comments at the top saying something along the lines of "DON'T UPDATE THESE MANUALLY" and we could add lint-staged rules to help reinforce that.Every time we ship a beta for a particular platform we'll need to collect the user-facing and dev-only changes that have been added since the last public release for the platform. This should be straightforward using git tags, the GitHub API, and some custom scripting.
The release notes will be submitted with the beta, and meanwhile we'll add a commit on master to do one of the following:
Create a new entry in the platform's changelog markdown file like the following
We can get people's names from their github accounts, although I'm not sure it is helpful to include the names when submitting public release notes to the app store or play store, so we can decide whether we want to keep doing that.
Update the build number and change lists for an existing beta entry.
Then when we promote the app for that platform we can set the status to
In review
. And then when we press the release button and do the whole 'prepare for the next release' step we can add some scripting to set the status to 'Released'.Pros:
Cons:
Corollary: Having independent version numbers.
Each approach implies the need to maintain two separate version numbers for iOS and Android. I can't see a sane way of having only one version number that is incremented when each platform makes an independent release, and orchestrating synchronized releases is obviously problematic.
So I'd propose we augment our
app.json
file and fastlane scripts to support platform-independent version numbers.How is this RFC resolved?
If we reach a consensus to proceed with the proposed solution, we can plan a spike to investigate any technical risks, or simply forge ahead with implementing our solution if it's clear what needs to happen. If we don't reach a consensus we can extend the existing system by default, or try to find an alternative.
The text was updated successfully, but these errors were encountered: