We highly value and encourage contributions from the community!
Ignite is Apache 2.0 licensed and accepts contributions via GitHub Pull Requests.This document outlines some of the conventions on development workflow, commit message formatting, contact points and other resources to make it easier to get your contribution accepted.
We gratefully welcome improvements to documentation as well as to code.
Join weaveworks-ignite@googlegroups.com for calendar invites to calls and edit access to community documents. You can ask questions and discuss features on the #ignite slack channel.
We also hope to see you at our developer meetings.
If you have a feature suggestion or found a bug, head over to GitHub issues and see if there's an open issue matching your description. If not feel free to open a new issue and add short description:
- In case of a bug, be sure to include the steps you performed and what Ignite responded so it's easy for others to reproduce
- If you have a feature suggestion, describe it in moderate detail and include some potential uses you see for the feature. We prioritize the features to be implemented based on their usefulness/popularity. Of course if you want to start contributing yourself, go ahead! We'll be more than happy to review your pull requests.
The maintainers will add the correct labels/milestones to the issue for you.
The process to contribute code to Ignite is very straight forward.
- Go to the project on GitHub and click the
Fork
button in the top-right corner. This will create your own copy of the repository in your personal account. - Using standard
git
workflow,clone
your fork, make your changes and thencommit
andpush
them to your repository. - Run
make autogen tidy
, thencommit
andpush
the changes. Just putmake autogen tidy
as the commit message. This (re)generates any new/changed autogenerated content and cleans up the code's formatting. - Go back to GitHub, select
Pull requests
from the top bar and clickNew pull request
to the right. Select thecompare across forks
link. This will show repositories in addition to branches. - From the
head repository
dropdown, select your forked repository. If you made a new branch, select it in thecompare
dropdown. You should always targetweaveworks/ignite
andmain
as the base repository and branch. - With your changes visible, click
Create pull request
. Give it a short, descriptive title and write a comment describing your changes. ClickCreate pull request
.
That's it! Maintainers follow pull requests closely and will add the correct labels and milestones.
After a maintainer's review small changes/improvements could be requested, don't worry, feedback can
be easily addressed by performing the requested changes and doing a commit
and push
. Your new
changes will automatically be added to the pull request. (Don't forget to add a new make autogen tidy
commit if needed.)
We also have Continuous Integration (CI) set up (powered by CircleCI) that will build the code
and verify it compiles and passes all tests successfully. If your changes didn't pass CI, you can click
Details
to go and check why it happened. To integrate your changes, we require CI to pass.
If you have any questions or need help, don't hesitate to ask on our mailing list or the #ignite slack channel. Have fun contributing!
To compile the ignite
, ignited
and ignite-spawn
binaries, run
make build-all-amd64
ignite
, ignited
and ignite-spawn
are also Make targets if you only need to build specific ones.
Building ignite-spawn
binary using either way also automatically packages it in its Docker container,
and tags it as weaveworks/ignite:dev
for development.
To (re)generate autogenerated content in case your changes require it:
make autogen
Before submitting a PR:
make autogen tidy
This will clean up the code (run e.g. gofmt
) in addition
to making sure all autogenerated content is up to date.
Other targets:
- Install the
ignite
andignited
binaries:make install
- Generate dependency graph:
make graph
- Depends on
sfdp
(usually found in thegraphviz
package)
- Depends on
- Push the
weaveworks/ignite
Docker image:make image-push