Contributing to LBRY

Interested in progressing content freedom? Awesome! This guide will get you started.

There are many ways you can get involved. This document covers:

Ecosystem Overview

Typical usage of LBRY does not involve a single piece of software but instead involves several interacting components.

Whether you want to report an issue, contribute to the code, or help test the software, it's important to understand which component you want.

Component Language What Is It Use This Repo For..
lbry Python A daemon that runs in the background and allows your computer to speak LBRY. Issues with downloading or uploading.

Anything related to output in lbrynet.log.

Issues unrelated to or deeper than the interface that does not deal with blockchain credits.
lbry-desktop JavaScript A graphical browser for the LBRY protocol Problems with or features missing from the browser interface.

Issues with using, installing or running the LBRY app other than network, connection, or performance issues.
lbryum Python Server for the thin wallet bundled with lbry/lbry-desktop Issues related to credit/wallet functionality.

This is a fork of electrum.
lbrycrd C++ The LBRY blockchain and standalone wallet Running a full node, or direct access to the LBRY blockchain.

(This wallet is not bundled with the application. You only want this if you downloaded/installed this package specifically.)
lbry-schema Protobuf, Python The structure of the metadata stored in the LBRY blockchain. You want to change the metadata LBRY stores about digital content.
lbryio PHP The lbry.io website. Edits to the site, FAQ/KB requests or additions.

The vast majority of issues will be filed in either lbry-desktop or lbry.

Raising Issues

If you're about to raise an issue because you've found a problem with LBRY, or you'd like to request a new feature, or for any other reason, please read this first.

GitHub is the preferred channel for bug reports and feature requests.

Reporting a Bug

A bug is a demonstrable problem that is caused by the code in the repository. Good bug reports are extremely helpful - thank you!

Guidelines for bug reports:

  1. Identify the correct repo. See ecosystem overview. While it's okay if you get this wrong, it's a big help to us if you get it right.

  2. Use the GitHub issue search — check if the issue has already been reported (or fixed). Be sure to include closed tickets in your search.

  3. Follow the instructions - When you open an issue inside of GitHub, each repo contains a template for how to create a good bug report. Please follow it!

Well-specified bug reports save developers lots of time and are extremely appreciated, typically with an LBRY credit tip.

Feature Requests

Feature requests are welcome. Before you submit one be sure to:

  1. Identify the correct repo. See ecosystem overview.
  2. Use the Github Issues search and check the feature hasn't already been requested. Be sure to include closed tickets.
  3. Consider whether it's feasible for us to tackle this feature in the next 6-12 months. The LBRY team is currently stretched thin just adding basic functionality. If this is a nice to have rather than a need, it is probably more clutter than helpful.
  4. Make a strong case to convince the project's leaders of the merits of this feature. Please provide as much detail and context as possible. This means explaining the use case and why it is likely to be common.

Coding

You're welcome and encouraged to work with us and the community on LBRY!

An incredible amount of LBRY was built via public contributions. Every technical employee of LBRY outside of the founding team started as a public contributor. Contributors have also earned hundreds of thousands of LBRY credits (and tens of millions of street cred).

How to contribute:

  1. Identify the component you want to work on. LBRY has code bases in Python, JavaScript, PHP, and C++. See Ecosystem Overview.
  2. Get set up. Each repo has a README.md or INSTALL.md with instructions on how to get the repo up and running properly.
  3. Find something to work on. Look for issues tagged "Contributor Friendly" inside of the repo you selected. These are good for new contributors. Of course, you are also welcome to work on something not currently filed if you have your own idea!
  4. Abide coding and commit standards. Look for a STANDARDS.md document in the repo you are working on for repo specific instructions. Update CHANGELOG.md (if it exists) along with your pull request.
  5. Questions or problems? Ask!. The #dev channel of our chat is full of other LBRY community devs and team members.

Creative

If you're a writer, designer, or communicator, you can also contribute to LBRY.

Writing

If you want to update or edit existing written copy, it likely exists in either lbry.io (the website) or lbry-desktop (the browser). Try searching the respective repo for a string (in quotes) related to the copy that you want to adjust. You can likely figure out how to edit text via the GitHub interface. If not, you can point out issues to Tom.

If you want to contribute new written copy, such as a blog post or other content, please contact Jeremy, or join our chat and post a message in #general.

Designing

If you're a web designer, you can contribute to either lbry.io (the website) or lbry-desktop (the browser) by opening a pull request.

If you're a graphic designer, creating engaging graphics, GIFs, explainers, HOWTOs, wallpapers, and other related graphical content is a huge help! You can submit or discuss contributions by emailing Jeremy or joining the #design channel in our chat.

Communicating

If you're engaged with or otherwise involved with either an online or in-person community that could make use of LBRY, we're happy to work with you in how to introduce LBRY to them. Email Jeremy if you are interested in this.

Translating

Translations are not managed through Git or GitHub. Email Josh if you'd like to join LBRY as a translator.

Testing

If you aren't a coder, or you're a lazy coder, one of the best ways you can contribute is testing!

Both lbry and lbry-desktop go through regular release cycles where new versions are shipped every few weeks. Testing release candidates or builds of a master is a great way to help us identify issues and ship bug-free code.

For any repos, you want to be a tester on, "Watch" the repo on GitHub. You will receive an email with release notes whenever a release candidate is out.

If you're feeling moderately hard-core, you can also test master builds via build.lbry.io. If you're feeling super hard-core, you can compile master yourself, via the README.md or INSTALL.md in the associated repo.

Note that you are using release candidates and especially master builds at your own risk. Back up your wallet first.

See a mistake? Edit this page on GitHub.