SourceCred creates reputation networks for open-source projects.
Any open-source project can create its own _cred_, which is a reputational metric showing how much credit contributors deserve for helping the project.
To compute cred, we organize a project’s contributions into a graph, whose edges connect contributions to each other and to contributors.
We have a [prototype] that can generate a cred attribution based on GitHub interactions (issues, pull requests, comments, references, etc.).
We’re working on adding more information to the prototype, such as tracking modifications to individual files, source-code analysis, GitHub reactions, and more.
You'll stil need to create a GitHub token to use as an environment variable (shown later). First, run the following commands to clone and build SourceCred:
Your options for running the container including the following commands.
Examples will be shown for each.
- **dev-preview**: offers a shortcut for loading sourcecred and then starting a dev server. This is likely the option you'll choose if you want to provide a respository or an organization and preview results a web interface.
- **dev-server**: exposes several webpack operations without the initial load. This takes no arguments.
- **build**: simply provides the build command to yarn, followed by any argumnents that you provide.
- **(anything else)**: will be passed on to sourcecred.js
#### Development Preview
To run the development preview, you will still need to export a GitHub token, and then provide it to the container when you run it.
Notice that we are also binding port 8080 so we can view the web interface that will be opened up.
The only argument needed is a command to load the GitHub repository to generate the sourcecred for:
```bash
REPOSITORY=sfosc/sfosc
$ SOURCECRED_GITHUB_TOKEN="xxxxxxxxxxxxxxxxx" \
docker run -d --name sourcecred --rm --env SOURCECRED_GITHUB_TOKEN \
If you want to bind the data folder to the host, you can do that too.
In the example below, we have a folder "data" in the present working directory that we bind to "/data" in the container, the default `SOURCECRED_DIRECTORY`. We can then generate the data (and it will
be saved there):
```bash
$ SOURCECRED_GITHUB_TOKEN="xxxxxxxxxxxxxxxxx" \
docker run -ti --name sourcecred --rm --env SOURCECRED_GITHUB_TOKEN \
**Important** Although we expose port 0.0.0.0 to be viewable on your host, this is _not a production_ deployment and you should take precaution in how you use it.
Then you can open up to [http://127.0.0.1:8080](http://127.0.0.1:8080) to see the interface!
![img/home-screen.png](img/home-screen.png)
You can click on "prototype" to see a list of repositories that you generated (we just did sfosc/sfosc):
![img/prototype.png](img/prototype.png)
And then finally, click on the repository name to see the graph.
![img/graph.png](img/graph.png)
When you are finished, stop and remove the container.
```bash
$ docker stop sourcecred
```
Since we used the remove (--rm) tag, stopping it will also remove it.
If you bound the data folder to the host, you'll see the output remaining there from the generation:
The container will run again for about 30 seconds, you can run `docker logs sourcecred` to see output.
When the container no longer exists, you can look in "docs" in the present working directory to see output files:
```bash
$ ls docs/
asset-manifest.json discord-invite favicon.png index.html prototype static test timeline
```
This is the same content that we saw earlier with the development server, so a reasonable use case for this command would be to run to build docs that you then serve statically.
#### Wildcard
If your command doesn't start with one of build, dev-server, or dev-preview, it will just be passed on to the sourcecred.js. For example, here we can ask for a version or help:
```bash
$ docker run -it --name sourcecred --rm sourcecred/sourcecred --version
sourcecred v0.4.0
```
or for help:
```bash
$ docker run -it --name sourcecred --rm sourcecred --help
usage: sourcecred COMMAND [ARGS...]
sourcecred [--version] [--help]
Commands:
load load repository data into SourceCred
clear clear SoucrceCred data
help show this help message
Use 'sourcecred help COMMAND' for help about an individual command.
We’d also like to thank the many open-source communities that produced the software that SourceCred is built on top of, such as [Git] and [Node][Node github].