Commit Graph

546 Commits (631875d9c2518ac33ac59b18dadc4dea393dec3b)

Author SHA1 Message Date
Åke d63a747b9f
Enforce integer for positions in mouth display (#1588)
In python 3 these would default to floats, which trips up the arduino
2018-05-14 11:48:27 +02:00
Åke Forslund 79d183d59f Bump enclosure version to 1.4.0 2018-05-11 14:26:06 +02:00
Åke Forslund bf404b0bbc Fix python3 issues in serial transmission
Added basic conversion between string and bytes for sending data on the serial line.
2018-05-04 11:42:05 +02:00
Matthew D. Scholefield 78a6ec1ceb Fix cli crash with Python 3
This worked in Python 2 because type(4 / 2) == int but in Python 3 type(4 / 2) == float
2018-04-27 08:56:47 -05:00
Åke Forslund a2993e4ba6 Remove backwards compatibility with python 2.7 2018-04-27 08:51:47 -05:00
Åke Forslund d4ba484ad9 Make text client python2/3 compatible
- Make str unicode string
- Use BytesIO for python2 and StringIO for python3
2018-04-27 08:50:46 -05:00
Åke Forslund c6584d603d Make speech client python3 compatible 2018-04-27 08:50:46 -05:00
Matthew D. Scholefield cbf73d4b30 SSML Changes
- Engines now specify if they support ssml rather than the configuration
 - The text client strips out ssml tags
 - Engines can modify tags via the `self.modify_tag` method
2018-04-18 14:45:09 -05:00
Matthew D. Scholefield 10bd9a1cf3 Change initial kill to SIGINT
This sends a ctrl+c signal to each process which will allow code to exit properly by handling KeyboardInterrupt
Other notable changes:
 - create_daemon method used to clean up create daemon threads
 - create_echo_function used to reduce code duplication with messagebus
 echo functions
 - wait_for_exit_signal used to wait for ctrl+c (SIGINT)
 - reset_sigint_handler used to ensure SIGINT will raise KeyboardInterrupt
2018-04-11 21:29:10 -05:00
Åke bc74c36713
Merge pull request #1508 from MycroftAI/feature/notify-backend-down
Add proper messages when the backend replies incorrectly
2018-03-29 12:53:34 -05:00
Åke 46f6f734e3
Merge pull request #1509 from MycroftAI/feature/wait-for-messagebus
Wait for messagebus before emitting a message
2018-03-28 19:28:35 -05:00
Matthew D. Scholefield 5c8cf053a0 Remove code that waits for websocket to open
This is unnecessary now that WebsocketClient does this automatically
2018-03-28 19:19:56 -05:00
Matthew D. Scholefield eb100706df Add proper messages when the backend replies incorrectly 2018-03-28 11:48:05 -05:00
Matthew D. Scholefield 9eb458360b Fix accessing non-existent attribute in except blocks
.request.status_code is only available to HTTPError objects
2018-03-14 00:41:47 -05:00
Matthew D. Scholefield 7e64b49fa3 Replace HTTPError with RequestException
This prevents things like a ReadTimeout exception crashing the speech service
2018-03-07 10:57:13 -06:00
Matthew D. Scholefield b67c3314d7 Add proper not loaded message (#1456)
Once skills load, skill-unknown will handle all failed fallbacks. The only time this is spoken is when skills still aren't loaded yet
2018-02-28 21:49:11 -06:00
Åke 50b05ae6b4
Merge pull request #1446 from MycroftAI/refactor/exceptions
Remove redundant except (SystemExit, KeyboardInterrupt) clauses
2018-02-27 23:08:27 +01:00
Zachary T Welch 6df3cc0765 improve output when no words are transcribed 2018-02-27 15:48:05 -06:00
Matthew D. Scholefield fbb9231adc Remove redundant except (SystemExit, KeyboardInterrupt) clauses
This can be replaced by ensuring the final except clause is 'except Exceptions'. This works because SystemExit and KeyboardInterrupt do not inherit from the base 'Exception' class
2018-02-27 14:28:29 -06:00
Matthew D. Scholefield 80cbf6799c Fix invalid command 2018-02-26 12:03:25 -06:00
Matthew D. Scholefield 93e34985f1 Change precise executable to a folder
This prevents self-extraction each bootup
2018-02-23 18:05:30 -06:00
penrods 0dd337d44c Tweaks to CLI: Refresh, scroll fix
Several tweaks to CLI behavior
* The "show/hide meter" setting is now persisted
* Fix behavior when scrolled back and logs are rolling off
* Fix potential crash when no logs exist
* Add Ctrl+R to force a refresh (undocumented for now-- help page is getting long and we need an automated system to resize help for smaller screens)
2018-02-23 03:20:23 -06:00
Åke 1578f16897 Make sure the cli locale is set to an UTF-8 type (#1438)
If the locale setting fails add exit with a simple error message suggesting workaround
2018-02-23 03:05:58 -06:00
Zach Welch 49b1a0ca5c issue #1083: limit history size to fix crash (#1436)
The calulated limit ensures that at least one message will be displayed.
Using a hard-coded constant is ugly, but such are scattered throughout
the script.  Untangling those constants has been left for future patch.
2018-02-23 01:54:20 -06:00
Steve Penrod ead38602cb
Add interface to Mark 1 faceplate capabilities (#1424)
* Add interface to Mark 1 faceplace capabilities

This adds API interfaces for two Mark 1 faceplace capabilities to the
mycroft.client.enclosure.EnclosureAPI()

EnclosureAPI.setpixel(index, r,g,b)
- Set individual eye pixels to any color.  The indices go from 0-23 with
  the 0-12 corresponding to the right eye and 11-23 to the left.

EnclosureAPI.fill(percentage)
- Fill the eyes to a percentage, for use in meters or countdowns.  The
  right eye is 0-50%, the left eye also fills if going up to 100%.
2018-02-15 12:29:35 -06:00
Åke 7fd63f9d5a
Merge pull request #1421 from MycroftAI/feature/doc_cleanup
Internal documentation, typos, remove misleading message
2018-02-15 10:51:33 +01:00
Åke 3271ff3e24
Merge pull request #1420 from MycroftAI/feature/cli_declutter
Reduce CLI log clutter from settings, etc
2018-02-15 10:31:51 +01:00
Steve Penrod 8139727714
Merge branch 'dev' into feature/doc_cleanup 2018-02-15 02:48:10 -06:00
Åke 5327b35f31 Disable overflow exceptions when reading mic (#1359)
Many thanks to mikonse for troubleshooting and suggesting this fix.

==== Fixed Issues ====

====  Tech Notes ====
Disabling this exception should free up the audio producer thread to
continue deliver the available sound data.
2018-02-15 02:23:36 -06:00
Åke Forslund 44387522a6 Move docstring, correct typos 2018-02-15 09:10:39 +01:00
Åke f8fec82905 wait_for_response method for synchronous messagebus communication (#1423)
* Add wait_for_response method to Websock client

The client handles the basic case when wanting to do a syncronous
request-response action.

The method sets up a handler waits for the response and handles timeout.

The expected format is that the reply message should have the same type as
the original message with ".response" appended.

An method in the Message class has been added to create a standard response for
a message.

* Let the :skills command use wait_for_response

* Minor docstring changes

Fixed typos and refined text
2018-02-15 01:39:11 -06:00
penrods 2af217bed0 Wrote and cleaned up more docstrings
Made docstrings more consistent with the preferred 'Google Style Docstring'
standard:
http://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html
2018-02-14 17:25:57 -06:00
penrods c68ad44b1c Internal documentation, typos, remove misleading message
* Made MycroftSkill.remove_event() return a bool, preventing unnecessary/misleading message from being posted by MycroftSkill.cancel_scheduled_event()
* More doc and several minor renames around intent processing
* Several minor typo and doc corrections
2018-02-13 02:54:12 -06:00
penrods 920845c407 Reduce CLI log clutter from settings, etc
* Drop settings INFO messages to DEBUG
* Add DEBUG filter in the CLI by default
2018-02-13 02:40:44 -06:00
Åke f0e695bbc4 Feature/metrics classes (#1393)
* Report type of TTS when reporting tts metrics

* Report type of STT when reporting stt metrics
2018-02-01 02:35:27 -06:00
Åke 0e3acbada4 add :skills command to list skills in cli (#1395)
SkillManager now handles the skillmanager.list message and will reply with the
mycroft.skills.list message including a list of the loaded skills.

==== Protocol Notes ====
Added messages:
- skillmanager.list: skill manager send list of skills on messagebus
- mycroft.skills.list message with skill list
2018-02-01 02:14:38 -06:00
Matthew D. Scholefield 856fed036b Restore captured text on cli exceptions 2018-01-19 16:46:51 -06:00
penrods 26444c9c5f Tweak UI for NTP checking
Withe the NTP checks in place, the sequence of visual and audio queues
was a little clunky.  This refines it slightly for normal use and to
play better with the pairing process.
2018-01-18 14:44:53 -06:00
Steve Penrod 4a62ab5a40 Implement max-line to limit memory usage (#1369)
* Implement max-line to limit memory usage

The major point of the PR is to limit the memory usage of the CLI by
implementing a maximum log limit.  It defaults to 5000.

Other changes:
* Add "--debug" option to support troubleshooting/debugging the CLI itself
* Add support for jumping to the top (Ctrl+T/Ctrl+PgUp) or bottom (Ctrl+B/Ctrl+PgDn) of the logs.
* Remove the "OLDEST" message from the log.  It was really no longer necessary since the log navigation issues got straightened out, and it complicated the max log line logic.
2018-01-18 09:44:29 +01:00
penrods 6c1cdb47b3 Fix startup time-warp issue
Raspberry Pi's don't have a built-in clock, so at boot-up the clock just picks up from when they were last running.  Normally this is corrected very quickly by NTP from an internet server, but if there is no network connection that cannot happen.

When an out-of-the-box Mark 1 or Picroft is being setup, the clock is set to whenever the image was created.  Upon completing the Wifi setup step the NTP service can finally sync with the internet, so time suddenly "jumps" to weeks later -- usually.  In either case (when the date jumps or when the date is erronously months old), there is potential for havoc.

These changes deal with that situation.  Upon network connection, an NTP synchonization is forced.  If it is detected that a major time jump happened
(more than 1 hour), then the user is notified that the clock change requires
a reboot and the system restarts.

Other changes:
* use the new "system." message namespace
* add pause before the system.reboot during a WIPE, allowing reset to totally complete
*
2018-01-17 21:05:51 -06:00
Åke Forslund c2a5288407 Update for latest changes 2018-01-08 18:04:07 -06:00
Åke Forslund a701e782e0 Replace open with more modern io.open
io.open is the default open in python 3 and sets encoding to unicode by
default.
2018-01-08 18:04:07 -06:00
Åke Forslund 6550b9c115 Attempt to allow CLI to display utf-8 encoded text. 2018-01-08 18:04:07 -06:00
Åke Forslund 4ac720ec53 Report None type as transcription when STT fails 2018-01-08 18:01:03 -06:00
Åke Forslund 936bd54180 Add a function to build the standard timing report 2018-01-08 18:01:03 -06:00
Åke Forslund baa15b98aa Send timing metrics for various subsystems
====  Tech Notes ====
STT, intent handling, intent fallbacks, skill handlers are now timed and
tied together with a ident (consistent through the chain so the flow from
STT until completion of the skill handler can be follewed.

TTS execution time is also measured, right now this is not tied into the
ident due to the nature of the speech.

The report is always called "timing" and always contain the following
fields:

- id: Identifier grouping the metrics into interactions
- system: Which part (STT, intent service, skill handler, etc)
- start_time: timestamp for when the action started
- time: how long it took to execute the action

The different system adds their own specific information, for example
the intent_service adds the intent_type, i.e. which handler was matched.

==== Protocol Notes ====
mycroft.skills.loaded is sent togheter with skill id and skill name
whenever a skill is loaded. This is used in the intent_service to
convert from id to skill name when reporting
2018-01-08 18:01:03 -06:00
Matthew D. Scholefield 716032215d Add model hash to wake word upload 2018-01-03 20:29:27 -06:00
penrods 5832cfafde Bump the required enclosure version to 1.3.0. This pulls in
the changes needed for upload.sh to not lock-up on a Picroft
installation of mycroft-core.
2017-12-22 12:32:40 -06:00
penrods 54bdf0d392 Add pause in out-of-box speech
The out-of-box spiel given by Mycroft was coming at the user pretty fast.
This adds a momentary pause in the spoken text.

Also cleaned up some ugly messagebus interaction to use the speak() method.
2017-12-22 01:48:45 -06:00
Åke 742558046d Python 2/3 compatibility (#1259)
Add Python 2/3 compatibility

====  Tech Notes ====
This allows the main bus, skills and cli to be run in both python 2.7 and
3.5+.

Mainly trivial changes
- syntax for exceptions
- logic for importing correct Queue module
- .iteritems -> future.utils.iteritems when accessing dicts key value
pairs

* Allow audio service to be run in python 3
* Make speech client work with python 3
* Importing of Queue version dependent
* Exception syntax corrected
* Creating sound buffer is version dependant
- Adapt context use range from builtins
- Use compatible next() instead of .next() when walking the skill
directory

* Make CLI Python 3 Compatible
- Use compatible BytesIO instead of StringsIO
- Open files as text instead of binary
- Make sure integer divisions are used

* Make messagebus send compatible
* Fix failing travis

Re-add future 0.16.0

* Make string checks compatible
* basestring doesn't exist in python 3 so it's imported from the "past"
* Fix latest compatibility issues in speech client
- handle urllib
- handle encoding before calling md5

* Make Api.build_json() python 2/3 compatible
2017-12-18 17:24:21 -06:00
penrods fb9f6bb5f6 CLI: interpretation of VT100 keys was flipped
The mapping from a VT100 key to NCURSES PgUp/PgDn was inverted,
resulting in different behavior for a keyboard and monitor plugged
in to the Pi than when SSH'ed in to the unit.
2017-12-15 01:41:03 -06:00
Åke f61ccfeed7
Merge pull request #1308 from MycroftAI/feature/boot-sequence
Add boot sequence visual indicators
2017-12-13 19:47:25 +01:00
penrods e3988e6cdc Add boot sequence visual indicators
Creating several visual feedback points to let users know what is
occurring in the boot sequence.  This also expects a new version
of the enclosure.

* On shutdown and reset, change eye color to a dark gray
* On initial startup the enclosure will have left the eyes at a
  yellow color, indicating that it is on but not fully running yet.
  When the enclosure comes up (and doesn't kick off the out-of-box
  or the notice that they need to run wifi setup) it will begin to
  scroll an "UPDATING" message.

This assumes that someone else will remove the "UPDATING" message.
That gets handled by the Mycroft-Mark-1 skill, which resets the
mouth and sets the eye color to default.
2017-12-13 12:23:42 -06:00
jarbasai 5c367e079a fix _hack_check_for_duplicates 2017-12-12 04:00:01 +00:00
Steve Penrod b56159f7d7 Fix pep8 issue 2017-12-10 06:09:18 -05:00
Steve Penrod d0e7c10800 Add CLI log clearing and other tweaks
Several more tweaks for the CLI:
* Ctrl+Left and Ctrl+Right are now available to cycle through previous
  entries, just like Ctrl+P and Ctrl+N
* Added ":clear log" command
2017-12-10 04:41:47 -05:00
Matthew D. Scholefield 35d057ff9b Add get_response method as a synchronous alternative to converse 2017-12-07 16:11:35 -06:00
Åke 18adeaac96
Merge pull request #1284 from MycroftAI/feature/cli-scrolling-etc
Tweaks for Command Line Interface (CLI)
2017-12-07 20:18:13 +01:00
Åke Forslund 15821fad25 Add lang as parameter to EnclosureReader 2017-12-07 10:25:51 -06:00
penrods 90d37498f0 PgUp/PgDn correction
The functionality of the PgUp and PgDn buttons was inverted in previous
commit.

Also added support for a ":keycode show" to assist in debugging things like
this, plus dropped support the "555" and "500" support which aren't obvious
why they were implemented in the first place.  If users encounter problems
under different terminal emulators or whatever, we can use ":keycode show"
to track it down.

Finally, made the inital refresh occur in 1s to clean up any screen
corruption created by messages put out from import of packages at startup.
2017-12-06 14:52:31 -06:00
penrods e5c91a55d1 Tweaks for Command Line Interface (CLI)
Several minor changes to the CLI:
* Placed lock on screen refresh from a new log message
* Slowed frequency of mic updates to limit opportunity for screen corruption.
  Still happening occasionally, which is vexing.
* Up/Down arrow now scroll logs by a single line
* Ctrl+P/Ctrl+N (Previous/Next) now scroll through the command history
* Ensured that the "Oldest" line is always the first in the log
2017-12-06 04:33:11 -06:00
Åke 68c1683dd7
Merge pull request #1281 from MycroftAI/feature/wifisetup-rework
Modifications for wifi-setup rework
2017-12-06 11:11:18 +01:00
Åke Forslund 4018c550c1 Add mycroft.awoken message
Instead of speaking directly from the listener send a message that the
naptime_skill can use to trigger speech and/or other indications that
the listener is awake
2017-12-06 03:42:43 -06:00
Matthew D. Scholefield 0f9df9efa0 Modifications for wifi-setup rework 2017-12-05 17:47:00 -06:00
JarbasAI 53481a265d allow phonemes in any lang (#1264)
Add possibility to set language per hotword. If not specified will use global language setting.
2017-11-29 10:56:35 +01:00
Åke Forslund 6083cbce07 Handle ConnectionError when retrieving user id
If the machine is not connected to the network getting the user uuid in MutableMic.__init__ will fail, raising ConnectionError. This caused the speech client to crash.

Adding handler for ConnectionError resolves this issue.
2017-11-24 10:54:36 +01:00
penrods 8cb1e80bbe Fix viseme bug from PR #1242
I merged code and left out the 'until' value from the api call.  This
corrects that and deals with a missing 'until' cleaner.
2017-11-22 17:08:35 -06:00
Åke Forslund 2c3e5c3885 Minor correction of mouth_visime docstring 2017-11-21 12:41:36 +01:00
penrods c1e1b935ee Improve mouth synchronization with speech
When the TTS engine provides visemes to the faceplate, the information
passed along consists of the mouth shape and the duration to display it.
When the system get backed-up for some reason (e.g. the CPU is briefly
overloaded), the code would attempt to catch up the animation but would
still send the 'expired' viseme across the serial port to the faceplate
with no wait-time.  This results in a fast-moving mouth to catch up,
which isn't very pleasing.

Now the viseme is passed along with an expiration date, so if the time
to display it has already passed then the viseme code gets thrown away
instead of being sent across the (relatively slow) serial port.  This
allows better catch-up.
2017-11-20 21:22:48 -06:00
Åke ed061df519
Merge pull request #1223 from MycroftAI/feature/improve-metrics-naming
Improve accuracy of metrics naming
2017-11-19 08:19:43 +01:00
penrods 1d4c614a36 Enhance CLI and screen corruption fix
Several refinements:
* Remove the "What time is it" preloaded example
* Page up/down now moves by 1/2 the # visible log lines instead of always 10 lines
* Reduce the frequency of full-screen redraws to 10 secs instead of 5 (because less needed with the corruption fix)
* Add the version of mycroft-core in the upper-right corner
* FIX: screen redraw now uses a lock, preventing corruption from drawing simultaneously from multiple threads
2017-11-17 19:25:16 -06:00
Matthew D. Scholefield 168a2b660f Improve accuracy of metrics naming
- md5 is consistent across architectures
 - Account ID is now consistent per user. Previously was using the device id
2017-11-15 19:35:53 -06:00
Matthew D. Scholefield 66540d9a9b Fix typo when enabling learn 2017-11-10 12:34:34 -06:00
Åke 01d47fb849
Merge pull request #1199 from MycroftAI/feature/precise
Precise Wake Word Listener
2017-11-09 21:27:46 +01:00
Matthew D. Scholefield ec223dcec9 Add wake word module hash to filename 2017-11-09 13:58:44 -06:00
Åke Forslund b08cf2bf42 Add tests for creating pocketsphinx hotwords
Default to pocketsphinx when hotword config doesn't hit a predefined
hotword config
2017-11-09 13:54:48 -06:00
Matthew D. Scholefield ed1deeb259 Make bool assignment more concise 2017-11-09 13:36:03 -06:00
Matthew D. Scholefield 5694b7f645 Extract precise server settings into config file
This allows changing the server in the future without an upgrade
2017-11-09 13:36:03 -06:00
Matthew D. Scholefield 788dc5d492 Fix downloading precise every startup 2017-11-09 13:36:03 -06:00
Matthew D. Scholefield b3f11d849a Add Precise hotword engine 2017-11-09 13:36:03 -06:00
Matthew D. Scholefield 0dc3dc1eab Fix sec_to_bytes 2017-11-09 11:30:30 -06:00
Matthew D. Scholefield d67f8b4bcf Change unit back to milliseconds and length back to 120ms 2017-11-09 11:30:30 -06:00
Matthew D. Scholefield 18690d358e Add user id to wake word upload
This is used to remove data retroactively from dataset
2017-11-09 11:30:26 -06:00
Matthew D. Scholefield dba2c540af Fix wake word record length 2017-11-08 14:21:07 -06:00
penrods f8824aab1d Cleanup of CLI filters and logged messages
This cleans up the amount of noise in the logs:
* Removed logging of the serial port raw read/writes.
* Removed the "Setting active skill" log in display_manager.py
* Corrected typo "dispaly"
* Added default CLI filter for mouth.display and mouth.icon messages
* Fixed bug when adding new filters
2017-10-28 01:42:19 -05:00
penrods 081da75fd5 Fix pep8 error 2017-10-27 17:14:02 -05:00
penrods e80029c1b9 Handle 'None' more gracefully in exception
The exception handler was generating a secondary warning when executing with
a None value for the serial port.
2017-10-27 17:14:02 -05:00
penrods d6b24af14c Fix enclosure client broken by #1110
Syntax error, needed Configuration.get().get("enclosure")
instead of just Configuration.get("enclosure")
2017-10-27 17:14:02 -05:00
Åke Forslund 52a89327fe Fix storing settings in enclosure client
====  Tech Notes ====
- Fix save in enclosure client
- Add tests for save and merge
2017-10-26 19:02:32 -04:00
Åke Forslund ea020eab4f Refactor configuration handling
====  Tech Notes ====
- Rewrite of configuration module. Reduced number of calls and simplified
logic.
- Patched configs now survives reload of config
2017-10-26 19:02:32 -04:00
Matthew D. Scholefield a7c9e2d525 Fall back to default wake word on invalid config
Also format to lowercase to prevent decoder error if wake word has capitals
2017-10-20 12:18:56 -05:00
Michael Nguyen 0f00b8e7ce Merge pull request #1166 from forslund/bugfix/listener-queue-timeout
Fix timeout of self.queue.get() in consumer
2017-10-17 15:04:54 -05:00
Åke Forslund e2666b46ed Fix timeout of self.queue.get() in consumer 2017-10-17 21:54:33 +02:00
Matthew D. Scholefield 2177270d57 Return if audio is None in listener 2017-10-17 14:42:16 -05:00
penrods e1b4ad0400 Fixed silly typo... 2017-10-16 19:20:22 -05:00
penrods 47e2df1722 Prevent the "rolling eye" syndrome
When (re)booting a Mark 1 unit will show rolling eyes until it reaches
a "ready" state.  This happens by sending a command to the Arduino.
There is also code that prevents sending commands our the serial port
if not running on a Mark 1.  In certain situations, the message
indicating that the Mark 1 Arduino was found was posted to the
messagebus before it was fully open.  When this was missed, the system
didn't think it was on a Mark 1 and the command to stop the eyes from
rolling (and for further interactions with the Mark 1 hardware) were
not sent.

The Mark 1 Arduino detection is now triggered when the messagebus
'open' notification is generated rather than when the object is
constructed.

==== Fixed Issues ====
#967 - Eyes never stop spinning on startup (Mark 1)
2017-10-16 19:20:22 -05:00
Matthew D. Scholefield b53e0bb202 Add timeout to consumer queue get
Prevents hanging on config reload
2017-10-16 16:05:01 -05:00
penrods 8c696b0586 Issue #967 - eyes keep spinning on boot
This fixes at least a potential issue with the Mark 1 boot sequence.
The system posts a "system.version" message then registers a
listener for the response.  There is a chance that the response
sneaks in before the handler is registered.  This just reorders the
sequence of that code.

==== Fixed Issues ====
ISSUE #967 - Eyes never stop spinning on startup (Mark 1)
2017-10-15 12:27:55 -05:00
penrods 8f2e5d9498 Change to Apache 2.0 license from GPLv3.0
This commit officially switches the mycroft-core repository from
GPLv3.0 licensing to Apache 2.0.  All dependencies on GPL'ed code
have been removed and we have contacted all previous contributors
with still-existing code in the repository to agree to this change.

Going forward, all contributors will sign a Contributor License
Agreement (CLA) by visiting https://mycroft.ai/cla, then they will
be included in the Mycroft Project's overall Contributor list,
found at: https://github.com/MycroftAI/contributors.  This cleanly
protects the project, the contributor and all who use the technology
to build upon.

Futher discussion can be found at this blog post:
https://mycroft.ai/blog/right-license/

This commit also removes all __author__="" from the code.  These
lines are painful to maintain and the etiquette surrounding their
maintainence is unclear.  Do you remove a name from the list if the
last line of code the wrote gets replaced?  Etc.  Now all
contributors are publicly acknowledged in the aforementioned repo,
and actual authorship is maintained by Github in a much more
effective and elegant way!

Finally, a few references to "Mycroft AI" were changed to the correct
legal entity name "Mycroft AI Inc."

==== Fixed Issues ====
#403 Update License.md and file headers to Apache 2.0
#400 Update LICENSE.md

====  Documentation Notes ====
Deprecated the ScheduledSkill and ScheduledCRUDSkill classes.
These capabilities have been superceded by the more flexible MycroftSkill
class methods schedule_event(), schedule_repeating_event(), update_event(),
and cancel_event().
2017-10-04 01:28:44 -05:00
Matthew D. Scholefield 0569ba40f7 Use opt in value to record wake words 2017-10-03 13:24:09 -05:00