Mycroft AI is proud to announce the latest major release of the Mycroft Core software, version 19.08. Yes, I know it is September, but the breadth of changes in this release are significant. We think the result is something worth waiting for.
Most of the changes in this release were developed on Mark II prototypes, but this release brings changes to the core software that improve the user experience for Mark I and Picroft users as well. If you haven’t already upgraded, say “yes” when your device asks you if you want to upgrade!
I am proud of the work our team accomplished in the months leading up to this release. Kudos go to the whole team as everyone made significant contributions. Continue reading if you want more details on what went into this release.
For the last several months the Mycroft team has focused on improving the user experience. The Mark I was produced for makers who are comfortable doing things like logging into their device or re-flashing their SD cards to fix issues. In contrast, the Mark II is a device that the average consumer can plug in and have a great experience, no tinkering required.
A couple of months ago, an investor visited our Kansas City office to see a demo of the Mark II prototype. We were very excited to show off the progress we had made. The device paired without issue but after that it would not respond to any voice commands. As a result, our excitement quickly turned to embarrassment.
This was the first time I had participated in demonstrating a device to an investor. The failure really got my blood boiling. After the investor left our office, I vowed to myself, and the rest of the team, that we would not repeat that experience. The software team abandoned all other projects and we set to work on a two month sprint to ensure the Mycroft Core software booted and performed reliably. The 19.08 release is a culmination of these efforts.
Here are the user experience improvements included in 19.08:
- Boot sequence time reduced by 50%
- Improved skill setting communications between core and home.mycroft.ai
- Improved skill loading and shutdown
- Improved stability during bootup, pairing and daily usage
- Fixed an issue where the internet connectivity check was returning false positives
- Fixed an issue where a failure to download and install Precise would render a device unusable
Through the entirety of its existence, Mycroft AI has been operating as a startup software company. This means pumping out features as quickly as possible with minimal staff. Iterating over a code base like this for a few years eventually leads to code that is fragile and difficult to maintain.
I am reminded of a project management class I took several years ago. One of the concepts covered in this class can be illustrated as follows:
The brown triangle in the middle is a unicorn. High quality software cannot be built quickly and cheaply. This is a conundrum faced by all startup companies. In my experience, software startups opt for the cheap and quick option to build a proof of concept, which is used to raise money so the company can continue to operate. As the image above depicts, this results in lower quality code (i.e. technical debt). As technical debt grows, development cycles become longer and management starts asking why the software team’s velocity has slowed. This can be exacerbated if the developer that incurred the debt is no longer available to help address it.
All this project management talk is a long way of saying that the development team decided it was time to start paying the piper with the 19.08 release. The most notable change made to Mycroft Core in 19.08 is a major refactoring of the code that manages, updates and loads skills. The base class that all skills inherit from was also refactored. Some of these changes improved user experience (see above). But most of these improvements will only be visible to developers, both on staff and in our open source community. Not only was the code restructured, but a plethora of unit tests were added to help us maintain the quality of this code going forward.
In conjunction with the Mycroft Core skills refactoring, the Mycroft Skills Manager (MSM) was also substantially refactored. The focus of the MSM changes was improving performance. The way the skills code was structured, MSM was instantiated multiple times on bootup. Each instantiation performs a series of git commands that can take ten seconds or longer to complete. As previously mentioned, we were able to cut boot time in half by caching the MSM instance used in the skills processes and most of the data provided to Mycroft Core by MSM.
In addition to the aforementioned refactoring, the improvements to Mycroft Core in 19.08 for developers include:
- Updated skill tester with basic support for get_response
- Reformat of log messages to include date
- New developer tools including a script to merge the log files of all core processes and a configuration editor
- Standardization of some unit test mocking
- Messagebus respects configured log level
- Support for Pulseaudio role ducking
As usual this release also includes contributions from community members including:
- Swedish additions to Lingua Franca
- Bugs in adapt keyword handling
- Improving installs on Fedora and Mint,
- A bunch of code cleanup fixes.
It always feels great to the Mycroft AI team to receive these contributions from the community, from the smallest typo fix to the largest feature additions. Thanks to all who have contributed to this release.
We Are Far From Done…
There are many improvements that can still be made to Mycroft Core. As a Software Architect, it is my job to see the bigger picture. In my opinion, it is part of Mycroft’s responsibility as a member of the open source community to set an example by writing well tested, clean and maintainable code. This is a goal we will continue to move towards in future releases.
Chris is a clean code evangelist with more than twenty years experience in various software engineering disciplines. He enjoys the challenge of working in startup environments. As a Software Architect at Mycroft AI, he works with the development team to identify and implement the technologies used in the websites and APIs that complement the core voice assistant software.