- Contributing to Mycroft
- I'm non-technical, how do I contribute?
- I'm technically minded, how do I contribute?
- Reporting Issues
- Making changes
- Submitting changes for review
- Additional Resources
We value and recognise your contributions. Mycroft is artificial intelligence for everyone and we warmly welcome both non-technical and technical contributions.
If you're non-technical, there are still many ways to contribute.
- You can contribute your voice to the Mozilla Open Voice Project
- You can give us feedback on this documentation, using the ratings system you'll see at the bottom of the page
- You can contact us and provide suggestions for improvement or enhancement
- You can join our community through our Chat or Forum
Great! Let's get you started.
If not, you'll need to create a new Issue. Help us to help fix the Issue quicker by following these guidelines. Your Issue should contain:
Object-deviation format is a very specific way of describing faults. The more specific you can be, the easier it is for us to fix the fault. Begin with the object, such as function, a skill, or a hardware feature, then explain the deviation from the expected condition.
- "When my Mycroft Mark 1 device (object) powers on, the color of his eyes is red instead of blue (deviation - red - from expected condition - blue)
- "When I ask Mycroft about the weather (object), Mycroft reports the low temperature correctly, but the high temperature is incorrectly reported as the low temperature (deviation - incorrect temperature - from expected condition - correct temperature
Be sure to let us know the Enclosure or Device you're using, such as:
- Mark 1
- Mycroft for Linux (please let us know your distro and install method)
- Picroft (let us know which Speakers and Headphones you're using too)
This helps us to pinpoint the issue quickly.
Below, you'll find instructions to identify the version of Mycroft you're using.
To find what version of Mycroft your Mark 1 or Picroft is running, you'll need to SSH into the Device. Run the command
then look through it to find the Mycroft packages that are installed.
mycroft-core/unknown,now 0.9.7 armhf [installed,automatic] mycroft-mark-1/unknown,now 0.9.7 armhf [installed] mycroft-picroft/unknown 0.9.7 armhf mycroft-wifi-setup/unknown,now 0.1.5 armhf [installed,automatic]
If you're using Mycroft for Linux, you will simply run the CLI, and the CLI will tell you the version number.
mycroft-core$ ./start-mycroft.sh debug
Starting all mycroft-core services Initializing... Starting background service bus Restarting: skills Restarting: audio Starting background service voice Starting cli
The version number will be shown in the top right hand corner of the CLI, as shown below.
- Fork the Project
- Create a new Issue if one doesn't already exist.
- Create a feature or bugfix branch based on dev with your issue identifier. For example, if your issue identifier is: issue-123 then you will create either: feature/issue-123 or bugfix/issue-123. Use feature prefix for issues related to new functionalities or enhancements and bugfix in case of bugs found on the dev branch
- Make sure you stick to the coding style and OO patterns that are used already.
- Document code using Google-style docstrings. Our automated documentation tools expect that format. All functions and class methods that are expected to be called externally should include a docstring. (And those that aren't should be prefixed with a single underscore).
- Make commits in logical units and describe them properly. Use your issue identifier at the very begin of each commit. For instance:
git commit -m "Issues-123 - Fixing 'A' sound on Spelling Skill"
- Before committing, format your code following the PEP8 rules and organize your imports removing unused libs. To check whether you are following these rules, install pep8 and run
pep8 mycroft testwhile in the
mycroft-corefolder. This will check for formatting issues in the
- Once you have committed everything and are done with your branch, you have to rebase your code with dev. Do the following steps:
- Make sure you do not have any changes left on your branch
- Checkout on dev branch and make sure it is up-to-date
- Checkout your branch and rebase it with dev
- Resolve any conflicts you have
- You will have to force your push since the historical base has changed
- Suggested steps are:
git checkout dev git fetch git reset --hard origin/dev git checkout <your_branch_name> git rebase dev git push -f
- If possible, create unit tests for your changes
- Once everything is OK, you can finally create a Pull Request (PR) on Github in order to be reviewed and merged.
Note: Even if you have write access to the master branch, do not work directly on master!
- Push your changes to a topic branch in your fork of the repository.
- Open a pull request to the original repository and choose the right original branch you want to patch.
Advanced users may install the
hubgem and use the
- If not done in commit messages (which you really should do) please reference and update your issue with the code changes. But please do not close the issue yourself.
- Even if you have write access to the repository, do not directly push or merge pull-requests. Let another team member review your pull request and approve.
- General GitHub documentation
- GitHub pull request documentation
- Read the Issue Guidelines by @necolas for more details