Annotate with anyone, anywhere.
h
h is the web app that serves most of the https://hypothes.is/ website, including the web annotations API at https://hypothes.is/api/. The Hypothesis client is a browser-based annotator that is a client for h's API.
Community
Join us on Slack (request an invite or log in once you've created an account).
If you'd like to contribute to the project, you should also subscribe to the development mailing list and read our Contributor's guide. Then consider getting started on one of the issues that are ready for work.
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
Setting up Your h Development Environment
First you'll need to install:
- Git.
sudo apt install git, on macOS: brew install git.
This is probably already installed, run make --version to check.
Follow the instructions in pyenv's README to install it.
The Homebrew method works best on macOS.
The Basic GitHub Checkout method works best on Ubuntu.
You don't need to set up pyenv's shell integration ("shims"), you can
use pyenv without shims.
On Ubuntu follow Install on Ubuntu.
On macOS follow Install on Mac.
- Node and npm.
sudo snap install --classic node.
On macOS: brew install node.
- Yarn:
sudo npm install -g yarn.
git clone https://github.com/hypothesis/h.git
cd h
make services
make devdata
make help
See the Contributor's guide for further instructions on setting up a development environment and contributing to h.
Changing the Project's Python Version
To change what version of Python the project uses:
- Change the Python version in the
"python_version": "3.10.4",
- Re-run the cookiecutter template:
make template
- Re-compile the
requirements/*.txtfiles.
requirements/*.in file can compile to
different requirements/*.txt files in different versions of Python:
make requirements
- Commit everything to git and send a pull request
Changing the Project's Python Dependencies
To Add a New Dependency
Add the package to the appropriate requirements/*.in file(s) and then run:
make requirements
To Remove a Dependency
Remove the package from the appropriate requirements/*.in file(s) and then run:
make requirements
To Upgrade or Downgrade a Dependency
We rely on Dependabot to keep all our dependencies up to date by sending automated pull requests to all our repos. But if you need to upgrade or downgrade a package manually you can do that locally.
To upgrade a package to the latest version in all requirements/*.txt files:
make requirements --always-make args='--upgrade-package <FOO>'
To upgrade or downgrade a package to a specific version:
make requirements --always-make args='--upgrade-package <FOO>==<X.Y.Z>'
To upgrade all packages to their latest versions:
make requirements --always-make args=--upgrade