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.
This repository uses standard
to maintain code style and consistency,
and to avoid style arguments. npm test
runs standard
automatically, so you don't have
to!
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.
There are a few basic ground-rules for contributors:
- No
--force
pushes to master or modifying history in any way. Rebasing and force pushing your own PR branch is fine. - Non-master branches should be used for ongoing work.
- Significant modifications like API changes should be subject to a pull request to solicit feedback from other contributors.
- Pull requests are encouraged for all contributions to solicit feedback, but left to the discretion of the contributor.
Declaring formal releases remains the prerogative of the project maintainer.
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.
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.
-
Update
AUTHORS
npm run update-authors
Commit if necessary. The commit message should be "authors".
-
Write the changelog
You can use
git log --oneline <last version tag>..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 <branch-name>:master
This makes it so that the commit hash on master matches the commit hash of the version tag.
Finally, run:
git push --tags
-
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.
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.
-
Update the website
Create a pull request in 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.
Before a release, check that the following basic use cases work correctly:
- 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
.
- Check that the auto-updater works
- Open the console and check for the line "No update available" to indicate
- Add a new .torrent file via drag-and-drop.
- Ensure that it gets added to the list and starts downloading
- Remove a torrent from the client
- Ensure that the file is removed from
~/Downloads
- Create and seed a new a torrent via drag-and-drop.
- Ensure that the torrent gets created and seeding begins.