Mycroft AI
  • Documentation
  • About Mycroft AI
    • Why use Mycroft AI?
    • Glossary of terms
    • Contributing
    • FAQ
  • Using Mycroft AI
    • Get Mycroft
      • Mark II
        • Mark II Dev Kit
      • Mark 1
      • Picroft
      • Linux
      • Mac OS and Windows with VirtualBox
      • Docker
      • Android
    • Pairing Your Device
    • Basic Commands
    • Installing New Skills
    • Customizations
      • Configuration Manager
      • mycroft.conf
      • Languages
        • Français (French)
        • Deutsch (German)
      • Using a Custom Wake Word
      • Speech-To-Text
      • Text-To-Speech
    • Troubleshooting
      • General Troubleshooting
      • Audio Troubleshooting
      • Wake Word Troubleshooting
      • Log Files
      • Support Skill
      • Getting more support
  • Skill Development
    • Voice User Interface Design Guidelines
      • What can a Skill do?
      • Design Process
      • Voice Assistant Personas
      • Interactions
        • Intents
        • Statements and Prompts
        • Confirmations
      • Conversations
      • Error Handling
      • Example Interaction Script
      • Prototyping
      • Design to Development
    • Development Setup
      • Python Resources
      • Your First Skill
    • Skill Structure
      • Lifecycle Methods
      • Logging
      • Skill Settings
      • Dependencies
        • Manifest.yml
        • Requirements files
      • Filesystem access
      • Skill API
    • Integration Tests
      • Test Steps
      • Scenario Outlines
      • Test Runner
      • Reviewing the Report
      • Adding Custom Steps
      • Old Test System
    • User interaction
      • Intents
        • Padatious Intents
        • Adapt Intents
      • Statements
      • Prompts
      • Parsing Utterances
      • Confirmations
      • Conversational Context
      • Converse
    • Displaying information
      • GUI Framework
      • Show Simple Content
      • Mycroft-GUI on a PC
      • Mark 1 Display
    • Advanced Skill Types
      • Fallback Skill
      • Common Play Framework
      • Common Query Framework
      • Common IoT Framework
    • Mycroft Skills Manager
      • Troubleshooting
    • Marketplace Submission
      • Skills Acceptance Process
        • Information Review Template
        • Code Review Template
        • Functional Review Template
        • Combined Template
      • Skill README.md
    • FAQ
  • Mycroft Technologies
    • Technology Overview
    • Roadmap
    • Mycroft Core
      • MessageBus
      • Message Types
      • Services
        • Enclosure
        • Voice Service
        • Audio Service
        • Skills Service
      • Plugins
        • Audioservice Plugins
        • STT Plugins
        • TTS Plugins
        • Wake Word Plugins
      • Testing
      • Legacy Repo
    • Adapt
      • Adapt Examples
      • Adapt Tutorial
    • Lingua Franca
    • Mimic TTS
      • Mimic 3
      • Mimic 2
      • Mimic 1
      • Mimic Recording Studio
    • Mycroft GUI
      • Remote STT and TTS
    • Mycroft Skills Kit
    • Mycroft Skills Manager
    • Padatious
    • Precise
    • Platforms
Powered by GitBook
On this page
  • 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

Was this helpful?

  1. About Mycroft AI

Contributing

We value and recognise your contributions. Mycroft is artificial intelligence for _everyone_ and we warmly welcome both non-technical and technical contributions.

PreviousGlossary of termsNextFAQ

Last updated 4 years ago

Was this helpful?

I'm non-technical, how do I contribute?

If you're non-technical, there are still many ways to contribute.

  • You can contribute your voice to the

  • You can give us feedback on this documentation, using the ratings system you'll see at the bottom of the page

  • You can and provide suggestions for improvement or enhancement

  • You can join our community through our or

I'm technically minded, how do I contribute?

Great! Let's get you started.

Reporting Issues

  • You'll need a

  • We require that all developers sign a . This agreement clarifies that you are granting a license to the Mycroft Project to freely use your work. Additionally, it establishes that you retain the ownership of your contributed code and intellectual property. As the owner, you are free to use your code in other work, obtain patents, or do anything else you choose with it.

  • Check our first to see if the Issue has already been reported.

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:

A description of the Issue in object-deviation format

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.

For example:

  • "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

The Enclosure or Device you are using, and the version of Mycroft you are using

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.

Mark 1 and Picroft

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]

Mycroft for Linux

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.

Making changes

  1. 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

  2. Make sure you stick to the coding style and OO patterns that are used already.

  3. 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"

  4. 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 test while in the mycroft-core folder. This will check for formatting issues in the mycroft and test folders.

  5. Once you have committed everything and are done with your branch, you have to rebase your code with dev. Do the following steps: 1. Make sure you do not have any changes left on your branch 2. Checkout on dev branch and make sure it is up-to-date 3. Checkout your branch and rebase it with dev 4. Resolve any conflicts you have 5. You will have to force your push since the historical base has changed 6. Suggested steps are:

       git checkout dev
       git fetch
       git reset --hard origin/dev
       git checkout <your_branch_name>
       git rebase dev
       git push -f
  6. If possible, create unit tests for your changes

    • We utilize TRAVIS-CI, which will test each pull request. To test locally you can run: ./start.sh unittest

Note: Even if you have write access to the master branch, do not work directly on master!

Submitting changes for review

  • 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.

  • 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.

Additional Resources

To find what version of Mycroft your Mark 1 or Picroft is running, you'll need to . Run the command apt list

CLI showing version number

if one doesn't already exist.

Document code using . 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 ).

Once everything is OK, you can finally in order to be reviewed and merged.

Advanced users may install the hub gem and use the .

for more details

Mozilla Open Voice Project
contact us
Chat
Forum
GitHub account
Contributor License Agreement Request Form
Issues
SSH into the Device
Fork the Project
Create a new Issue
Google-style docstrings
should be prefixed with a single underscore
Unit Tests for most contributions
Intent Tests for new skills
create a Pull Request (PR) on Github
hub pull-request command
General GitHub documentation
GitHub pull request documentation
Read the Issue Guidelines by @necolas