Hello Android teams, We, the Android Components Team, are looking at improving our release process to better accommodate our product teams. This is a Q4 goal for us, and I am sending this now to seek early feedback.
*Current Situation* First, how are we currently shipping our components? We have been doing official releases once a week, after our sprint planning. When we do a release, we publish the build artifacts to the Mozilla Maven repository and also generate the blog and documentation. Sometimes we also follow up later in the next week with a minor update to include an additional patch or fix. That patch release is more exception than rule and has only happened a few times. It has become clear that one release a week is not enough. When changes land on Android-Components, our users want to try them out sooner than later. And sometimes even ship them sooner than later in case of an urgent change. We have two ideas to work towards an improved situation. *Improvement #1 - Snapshot Builds* We plan to introduce 'snapshot' builds. A snapshot is a release that automatically follows master. So as soon as a patch lands in android-components, a snapshot release will be generated and pushed to the Mozilla Maven repository. As an app builder, instead of pulling in a specific version of a component, you would pull in a the SNAPSHOT version instead. This means that every time you upgrade your dependencies, you will get the most recent copy. (Our master branch is considered stable. So what you get is incremental stable updates - all our tests will be green for changes that land on master.) This should make it easier to stay up to date and pull in changes to the components for which you would otherwise have to wait until the official release. It allows for quicker testing and a shorter feedback loop. Do understand that these snapshots are not official releases and should not be treated as such. You should probably not ship with them since it is not clear specific version of the snapshot you get when your app gets build. *Improvement #2 - Release Candidate Builds* We have also talked about doing Release Candidate Builds. These would happen at fixed intervals in between our releases. For example, if we are currently in our 0.26 sprint, we could for ship one every other day: 0.26-rc1, 0.26-rc2 and 0.26-rc3. And then after that we ship the final 0.26 release. These are very similar to snapshot builds, except that you can pin your application to one specific build. And if you really really (really) need to, you could even ship with an RC build if you absolutely do not have the time to wait for the final release. (Again, master is considered stable). These RC builds would be automatically done on a fixed schedule. These builds would most likely just be Maven artifacts. No blog post, possibly no generated documentation. (We realize that RC is a bit misleading because new functionality could be added between builds, which is normally not the case for a release candidate - suggestions for better a name welcome.) One exception to the above, relevant to Lockbox, is the service/sync-logins component: although we do publish that component through our repository for consistency, it is not actually part of our build system. This means that changes in sync-logins will not automatically be picked up by our builds and will need some manual work to be included in a components build. Please let us know what you think of this proposal. All feedback to help us get to a final 'design' is greatly appreciated, S.
_______________________________________________ Sync-dev mailing list [email protected] https://mail.mozilla.org/listinfo/sync-dev

