diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 16b6118c..00000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,188 +0,0 @@ -# Contributing Guidelines - -Contributions welcome! - -**Before spending lots of time on something, ask for feedback on your idea first!** - -Please search issues and pull requests before adding something new to avoid duplicating -efforts and conversations. - -This project welcomes non-code contributions, too! The following types of contributions -are welcome: - -- **Ideas**: participate in an issue thread or start your own to have your voice heard. -- **Writing**: contribute your expertise in an area by helping expand the included docs. -- **Copy editing**: fix typos, clarify language, and improve the quality of the docs. -- **Formatting**: help keep docs easy to read with consistent formatting. - -## Code Style - -[![standard][standard-image]][standard-url] - -This repository uses [`standard`][standard-url] to maintain code style and consistency, -and to avoid style arguments. `npm test` runs `standard` automatically, so you don't have -to! - -[standard-image]: https://cdn.rawgit.com/feross/standard/master/badge.svg -[standard-url]: https://standardjs.com - -## Project Governance - -Individuals making significant and valuable contributions are given commit-access to the -project to contribute as they see fit. This project is more like an open wiki than a -standard guarded open source project. - -### Rules - -There are a few basic ground-rules for contributors: - -1. **No `--force` pushes to master** or modifying history in any way. Rebasing and force pushing your own PR branch is fine. -2. **Non-master branches** should be used for ongoing work. -3. **Significant modifications** like API changes should be subject to a **pull request** - to solicit feedback from other contributors. -4. **Pull requests** are *encouraged* for all contributions to solicit feedback, but left to - the discretion of the contributor. - -### Releases - -Declaring formal releases remains the prerogative of the project maintainer. - -### Changes to this arrangement - -This is an experiment and feedback is welcome! This document may also be subject to pull- -requests or changes by contributors where you believe you have something valuable to add -or change. - -## Developer's Certificate of Origin 1.1 - -By making a contribution to this project, I certify that: - -- (a) The contribution was created in whole or in part by me and I have the right to - submit it under the open source license indicated in the file; or - -- (b) The contribution is based upon previous work that, to the best of my knowledge, is - covered under an appropriate open source license and I have the right under that license - to submit that work with modifications, whether created in whole or in part by me, under - the same open source license (unless I am permitted to submit under a different - license), as indicated in the file; or - -- (c) The contribution was provided directly to me by some other person who certified - (a), (b) or (c) and I have not modified it. - -- (d) I understand and agree that this project and the contribution are public and that a - record of the contribution (including all personal information I submit with it, - including my sign-off) is maintained indefinitely and may be redistributed consistent - with this project or the open source license(s) involved. - -## Release Procedure - -### 1. Create a new version - -- Update `AUTHORS` - - ``` - npm run update-authors - ``` - - Commit if necessary. The commit message should be "authors". - -- Write the changelog - - You can use `git log --oneline ..HEAD` to get a list of changes. - - Summarize them concisely in `CHANGELOG.md`. The commit message should be "changelog". - -- Update the version - - ``` - npm version [major|minor|patch] - ``` - - This creates both a commit and a git tag. - -- Make a PR - - Once the PR is reviewed, merge it: - - ``` - git push origin :master - ``` - - This makes it so that the commit hash on master matches the commit hash of the version tag. - - Finally, run: - - ``` - git push --tags - ``` - -### 2. Create the release binaries - -- On a Mac: - - ``` - npm run package -- darwin --sign - npm run package -- linux --sign - ``` - -- On Windows, or in a Windows VM: - - ``` - npm run package -- win32 --sign - ``` - -- Then, upload the release binaries to Github: - - ``` - npm run gh-release - ``` - - Follow the URL to a newly created Github release page. Manually upload the binaries from - `webtorrent-desktop/dist/`. Open the previous release in another tab, and make sure that you - are uploading the same set of files, no more, no less. - -### 3. Test it - -**This is the most important part.** - - - Manually download the binaries for each platform from Github. - - **Do not use your locally built binaries.** Modern OSs treat executables differently if they've - been downloaded, even though the files are byte for byte identical. This ensures that the - codesigning worked and is valid. - -- Smoke test WebTorrent Desktop on each platform. - - See Smoke Tests below for details. Open DevTools - on Windows and Mac, and ensure that the auto updater is running. If the auto updater does not - run, users will successfully auto update to this new version, and then be stuck there forever. - -### 4. Ship it - -- Update the website - - Create a pull request in [webtorrent.io](https://github.com/webtorrent/webtorrent.io). Update - `config.js`, updating the desktop app version. - - As soon as this PR is merged, Jenkins will automatically redeploy the WebTorrent website, and - hundreds of thousands of users around the world will start auto updating. **Merge with care.** - -## Smoke Tests - -Before a release, check that the following basic use cases work correctly: - -1. Click "Play" to stream a built-in torrent (e.g. Sintel) - - Ensure that seeking to undownloaded region works and plays immediately. - - Ensure that sintel.mp4 gets downloaded to `~/Downloads`. - -2. Check that the auto-updater works - - Open the console and check for the line "No update available" to indicate - -3. Add a new .torrent file via drag-and-drop. - - Ensure that it gets added to the list and starts downloading - -4. Remove a torrent from the client - - Ensure that the file is removed from `~/Downloads` - -5. Create and seed a new a torrent via drag-and-drop. - - Ensure that the torrent gets created and seeding begins.