{"action":"created","issue":{"url":"https://api.github.com/repos/Microsoft/fast-dna/issues/850","repository_url":"https://api.github.com/repos/Microsoft/fast-dna","labels_url":"https://api.github.com/repos/Microsoft/fast-dna/issues/850/labels{/name}","comments_url":"https://api.github.com/repos/Microsoft/fast-dna/issues/850/comments","events_url":"https://api.github.com/repos/Microsoft/fast-dna/issues/850/events","html_url":"https://github.com/Microsoft/fast-dna/issues/850","id":357045689,"node_id":"MDU6SXNzdWUzNTcwNDU2ODk=","number":850,"title":"Versioning and release strategy","user":{"login":"janechu","id":7559015,"node_id":"MDQ6VXNlcjc1NTkwMTU=","avatar_url":"https://avatars1.githubusercontent.com/u/7559015?v=4","gravatar_id":"","url":"https://api.github.com/users/janechu","html_url":"https://github.com/janechu","followers_url":"https://api.github.com/users/janechu/followers","following_url":"https://api.github.com/users/janechu/following{/other_user}","gists_url":"https://api.github.com/users/janechu/gists{/gist_id}","starred_url":"https://api.github.com/users/janechu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/janechu/subscriptions","organizations_url":"https://api.github.com/users/janechu/orgs","repos_url":"https://api.github.com/users/janechu/repos","events_url":"https://api.github.com/users/janechu/events{/privacy}","received_events_url":"https://api.github.com/users/janechu/received_events","type":"User","site_admin":false},"labels":[{"id":966225195,"node_id":"MDU6TGFiZWw5NjYyMjUxOTU=","url":"https://api.github.com/repos/Microsoft/fast-dna/labels/proposal","name":"proposal","color":"FF8100","default":false}],"state":"open","locked":false,"assignee":{"login":"janechu","id":7559015,"node_id":"MDQ6VXNlcjc1NTkwMTU=","avatar_url":"https://avatars1.githubusercontent.com/u/7559015?v=4","gravatar_id":"","url":"https://api.github.com/users/janechu","html_url":"https://github.com/janechu","followers_url":"https://api.github.com/users/janechu/followers","following_url":"https://api.github.com/users/janechu/following{/other_user}","gists_url":"https://api.github.com/users/janechu/gists{/gist_id}","starred_url":"https://api.github.com/users/janechu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/janechu/subscriptions","organizations_url":"https://api.github.com/users/janechu/orgs","repos_url":"https://api.github.com/users/janechu/repos","events_url":"https://api.github.com/users/janechu/events{/privacy}","received_events_url":"https://api.github.com/users/janechu/received_events","type":"User","site_admin":false},"assignees":[{"login":"janechu","id":7559015,"node_id":"MDQ6VXNlcjc1NTkwMTU=","avatar_url":"https://avatars1.githubusercontent.com/u/7559015?v=4","gravatar_id":"","url":"https://api.github.com/users/janechu","html_url":"https://github.com/janechu","followers_url":"https://api.github.com/users/janechu/followers","following_url":"https://api.github.com/users/janechu/following{/other_user}","gists_url":"https://api.github.com/users/janechu/gists{/gist_id}","starred_url":"https://api.github.com/users/janechu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/janechu/subscriptions","organizations_url":"https://api.github.com/users/janechu/orgs","repos_url":"https://api.github.com/users/janechu/repos","events_url":"https://api.github.com/users/janechu/events{/privacy}","received_events_url":"https://api.github.com/users/janechu/received_events","type":"User","site_admin":false}],"milestone":null,"comments":2,"created_at":"2018-09-05T02:50:18Z","updated_at":"2018-09-05T04:01:31Z","closed_at":null,"author_association":"MEMBER","body":"# Versioning\r\n* **Current situation**: Synced versions on all packages\r\n* **Issue**: This means we are major version bumping all packages whether they contain breaking changes or not, this is unneccessary and will cause the user issues when trying to get latest, we already ensure correct version of peer dependencies via lerna\r\n* **Solution**: Switch to independent mode, this will result in Lerna splitting the conventional commits for each package and properly bumping to the right version.\r\n\r\n## Next steps\r\n1. Add `package-lock.json` files to the `.gitignore` and `package-lock=false` to all `.npmrc` files to avoid generating them - if this is not done it will result in false positives from other pull requests, eg. a pull request is merged in that is a breaking change on package \"a\" but includes an updated `package-lock.json` from package \"b\". Since the `package-lock.json` has updated from a breaking change commit a major version bump will occur on both package \"a\" and \"b\". We will also be able to remove the clean script at root level.\r\n2. Bump a patch version in fixed version mode, this should add all the relevent git tags for individual packages. For clarification git tags are added when using the `lerna version --conventional-commits` and `lerna publish --conventional-commits` commands. On independent mode a tag will be added for each package denoting its version eg. `@microsoft/fast-form-generator-react@2.1.0`\r\n3. Update the `lerna.json` and mark the version as \"independent\"\r\n\r\n# Major features, new packages and breaking changes\r\n* **Current situation**: No strategy for large scale changes such as major features and breaking changes\r\n* **Issue**: We should be isolating unstable major features and breaking changes before allowing them into `master`\r\n* **Solution**: Add documentation for creating a branch for major features and breaking changes, this will give us the opportunity to have various prereleases be published\r\n\r\n## Proposal\r\nCreate prerelease branches for our major features and breaking changes. This will mean that `master` is always stable and can release, thus fixes and smaller features can continue to go in and be released.\r\n\r\nThe conventional approach for larger frameworks and libraries is to use stable release branches. Smaller libraries such as lodash will follow the prelease branch strategy, as FAST-DNA is essentually a collection of smaller libraries it seems more maintainable to go with the same approach.\r\n\r\n## Npm tagging\r\nImportant Note: An issue may arise where we want to create a release candidate, alpha or beta while developing a major feature, new package or implementing breaking changes. Currently the user expects to be able to use `npm i package-name` and this will install the `latest`. Unfortunately unless specified otherwise the `latest` tag will be applied to all packages. What this means is that if a package is published with an appended `-alpha.*`, `-beta.*` or `-rc.*` it will be installed by default if its the latest. This requires the use of an npm tag, one of the most commonly used for this purpose is `next`. See [npm documentation](https://docs.npmjs.com/cli/dist-tag).\r\n\r\n## Next steps\r\nAdd to the wiki the strategy for creating alpha/beta/release candidate branch which should include:\r\n- Branch naming conventions (this will allow us to protect branches using [globbing patterns](https://help.github.com/articles/configuring-protected-branches/)):\r\n    - major feature - `feature/new-package-for-foo`\r\n    - breaking change - eg. `release-candidate/update-form-generator-to-use-non-executable-code`\r\n- Tagging for `npm` as noted above\r\n\r\n# Going forward these steps should:\r\n1. Ensure our versioning is always correct and up to date with each package\r\n2. Remove issues regarding major or minor version bumps occuring on packages that have had no updates\r\n3. Remove a long-standing issue with package-locks\r\n4. Allow proper automated tagging for commits which has been missing\r\n5. Provide documentation for any major changes going forward which require alpha/beta/rc prerelease semver\r\n"},"comment":{"url":"https://api.github.com/repos/Microsoft/fast-dna/issues/comments/418592280","html_url":"https://github.com/Microsoft/fast-dna/issues/850#issuecomment-418592280","issue_url":"https://api.github.com/repos/Microsoft/fast-dna/issues/850","id":418592280,"node_id":"MDEyOklzc3VlQ29tbWVudDQxODU5MjI4MA==","user":{"login":"chrisdholt","id":13071055,"node_id":"MDQ6VXNlcjEzMDcxMDU1","avatar_url":"https://avatars2.githubusercontent.com/u/13071055?v=4","gravatar_id":"","url":"https://api.github.com/users/chrisdholt","html_url":"https://github.com/chrisdholt","followers_url":"https://api.github.com/users/chrisdholt/followers","following_url":"https://api.github.com/users/chrisdholt/following{/other_user}","gists_url":"https://api.github.com/users/chrisdholt/gists{/gist_id}","starred_url":"https://api.github.com/users/chrisdholt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chrisdholt/subscriptions","organizations_url":"https://api.github.com/users/chrisdholt/orgs","repos_url":"https://api.github.com/users/chrisdholt/repos","events_url":"https://api.github.com/users/chrisdholt/events{/privacy}","received_events_url":"https://api.github.com/users/chrisdholt/received_events","type":"User","site_admin":false},"created_at":"2018-09-05T04:01:31Z","updated_at":"2018-09-05T04:01:31Z","author_association":"MEMBER","body":"Removing package locks seem great when isolated to our versioning story - are there potential side effects though for users?"}}
{"actor":{"display_login":"chrisdholt"}}