openpgpjs/NEW-CONTRIBUTORS.MD
Alba Herrerías 436b87d89b docs: add new contributors guide
Co-Authored-By: Alex Feyerke <391124+espy@users.noreply.github.com>
2023-12-13 12:29:00 +00:00

5.9 KiB
Raw Blame History

Guide for New Contributors

👋 First off! Hello, and a warm welcome to the OpenPGP.js project!

Were delighted that youre interested in participating, and we want to make it as pleasant and simple as we can, whether you want to send a one-off pull request or you want to become part of the team in the long run.

If youre new here and interested in any form of contribution, this guide is for you.

Contents:

Who are we and what is OpenPGP.js?

OpenPGP.js is a JavaScript implementation of the OpenPGP protocol. It implements RFC4880 and parts of RFC4880bis.

This project aims to provide an Open Source OpenPGP library in JavaScript so it can be used on virtually every device. Instead of other implementations that are aimed at using native code, OpenPGP.js is meant to bypass this requirement (i.e. people will not have to install gpg on their machines in order to use the library). The idea is to implement all the needed OpenPGP functionality in a JavaScript library that can be reused in other projects that provide browser extensions or server applications. It should allow you to sign, encrypt, decrypt, and verify any kind of text - in particular e-mails - as well as managing keys.

This project is maintained by Proton Mail and is supported by the EUs Horizon 2020 programme.

OpenPGP.js is built by a variety of people, but there are a couple youll run into more frequently, and who can be considered the core of the project:

Who can Contribute?

While this is cryptography-heavy JavaScript software, and those skills are especially relevant, an Open Source project such as this one has a wide range of needs, and there are a lot of opportunities to help:

  • There are usually some non-cryptography related JS (and TS!) tasks
  • You can expand or improve the test suite
  • You can take the project for a test drive and update the dev setup documentation for your platform (see CONTRIBUTING.md)
  • You can improve the various documentation resources in general, for example by looking for documentation issues, or just picking something to expand upon, edit or check for typos
  • You can improve the build process
  • You can do manual tests and UI/UX evaluations of features or tools and help improve their usability
  • You can improve or maintain our website
  • You can evangelize for the project: present or talk about OpenPGP.js in your company, local tech meetup, youtube channel, or similar circles
  • You can answer questions on our Gitter or our GitHub discussions

How do you get Started?

Get Familiar with the Basic Principles

Depending on your background and contribution to the project, it might be useful to read up on the basics of how online cryptography and PGP work:

  • A quick intro to PGP, covering public and private keys, symmetric and asymmetric keys, signatures and address verification. This article is by ProtonMail, the primary maintainers of this project.
  • A more general video on the basic cryptographic principles frequently used online, such as hashing, salting, encryption, symmetric and asymmetric keys, and signing.

Take OpenPGP.js for a Spin

This involves getting things running on your machine and trying out the features. Thankfully, OpenPGP.js doesnt have a lot of prerequisites:

  1. You need a current version of node.js installed
  2. Install depencencies with $ npm i

Thats it. Now you can run the node tests:

npm test

You can also run the tests in a browser with:

npm run browsertest

And thats your dev environment sorted.

Getting your Bearings in the OpenPGP.js Project

Weve got a bunch of helpful resources you might be interested in:

  • Theres a public gitter chat, which is a good place for establishing first contact with the project
  • Our Guide for Contributors, which details topics such as project processes, code and commit conventions, expectations for PRs, as well as documentation on dev setup and testing.
  • The Code of Conduct we operate by, and which you are also expected to adhere to

And of course our GitHub issues, where you can find tasks to take on. We try to have some Good First Issues for newcomers in place, but there might not always be some available.

In any case, its always a good idea to have a chat with us before you start any work.

All thats left here is to thank you for your time and interest, and we hope youll join us on our quest for better Open Source cryptography on the web! 🚀

👋