Contributing
We welcome contributions from anyone! Please read the following guidelines, and feel free to reach out to us if you have questions. Thanks for your interest in helping make Frictionless awesome!
#
General GuidelinesWe use Github as a code and issues hosting platform. To report a bug or propose a new feature, please open an issue. For pull requests, we would ask you initially create an issue and then create a pull requests linked to this issue.
#
Docs ContributionTo contribute to the documentation, please find an article in the docs
folder and update its contents. These sections can be edited manually:
docs/guides
docs/tutorials
Some documentation is auto-generated (for more information see docs/build.py
). Here is a list of auto-generated sections (excluding overview/whats-next
docs):
docs/references
(from the codebase's docstrings)docs/development
(from the repository root's docs)
You can test this documentation using Livemark. Livemark in a sync mode executes Python and Bash codeblocks in Markdown and writes the results back. Here is a quick example:
Run
livemark
against an article only if you consider the article to be a trusted source.It will execute codeblocks marked by thescript
header.
It's possible to run this documentation portal locally. This requires Node.js 12+ installed on your computer, and can be run with the following code:
Alternatively, you can run the documentation portal with Docker. With both Docker and Docker Compose installed on the system, first build the docker container with:
then, every time you want to run the documentation portal locally, run:
then open http://localhost:3000 on a web browser to see the portal.
To update a reference in docs/references
and some other auto-generated documents please update the codebase docstrings or root documents. For more information about auto-generated documentation see docs/build.py
.
#
Code ContributionFrictionless is a Python3.6+ framework, and it uses some common Python tools for the development process:
- testing:
pytest
- linting:
pylama
- formatting:
black
- type checking:
mypy
(under construction)
You also need git
to work on the project, and make
is recommended. After cloning the repository, we recommend creating a virtual environment and installing the dependencies by following this code:
this will install a
git commit
hook running the tests
Note: You may need to run sudo apt-get install postgresql libpq-dev
on a Debian-based system, because the python Postgres module depends on some postgres CLI tools.
Then you can run various make commands:
make docs
- build the docsmake format
- format source codemake install
- install the dependencies (we did before)make lint
- lint the projectmake release
- release a new versionmake test
- run the testsmake test-ci
- run the tests (including integration)
We also recommend running underlying commands like pytest
or pylama
to speed up the development process, though this is optional.
#
Release ProcessTo release a new version:
- check that you have push access to the
master
branch - update
frictionless/assets/VERSION
following the SemVer standard - add changes to
CHANGELOG.md
if it's not a patch release (major or micro) - run
make release
which create a release commit and tag and push it to Github - an actual release will happen on the Travis CI platform after running the tests