United Skill Writers - draft


#1

United Skill Writers

This is initial draft for making an github organization for orphan skills and to join forces for keeping good and important skills alive.

The name…

Anyone has a better name?
Leaving out mycroft name so no confusion on the Mycroft skills team is made. The Mycroft skills team is the team dooing reviev on skills when they go to market.

Purpos…

Keeping important skills alive. That means if a skill writer leaves a skill, and the skill is important to the mycroft eco system the organisation takes over and continue to support and devolep the skill.

An good example is the Homeassistant skill that has been made by @BongoEADGC6 and continued devolepment by @btotharye. Both great skill writers, but they have left the skill due to lack of time or other reasons.
This skill is an important skill to be let all alone without any owner. So that is one skill that could be owend, supported and further devoleped by United Skill Writers.
There is other skills like this, and the idea is that if we joint forces we kan keep these alive.

Who could be member…

Everyone who feels they could add anything should and could be member.

Members commitment…

Every member should help in support and devolepment of the skills that belong to the organization.

How should it work…

Using github and branches issues and all the github tools it should be posible. When an issue is rased, and someone will work on a solution, they make a branch acrding t the issue and comit the solution. Then others could comment and discus the solution and when it looks OK it get merged to master branch. When the masterbranch is good, updates is sent to the mycroft market.

Maybe only some members should be “super” and be the ones that can merge master branches and send to market. That could be different people on different skills.

Important roles to fill out…

  • Maker of the organization - @andlo can do this.
  • Handling invites - @andlo as the first one, and then more when needed.
  • Administration of master branches, adding skills and send and update market - a small admin group
  • Desisions on adding a skill - should be desides by members and admin group
  • Desision on who should be in the admin group - made by members. For now it would just be the ones who want to be in admin group.

How do you think we should proceed ?


"Mycroft Today in History - Event skill"
Mycroft Chatbot - A Solution For Answering Questions
#2

relevant discussion on mattermost started here https://chat.mycroft.ai/community/pl/i343ihgpxpbuik8smwiwz6h8te

and i quote the summary of same conversation by @KathyReid

12:29 AM

thanks for flagging me on the thread, you raise a really good point. What do we do with abandoned / orphaned Skills? If I’m reading the thread correctly, you are proposing that;

  • We establish a Community team to nurture / care for the abandoned Skill
  • That we provide a repo under the MycroftAI GitHub for this, that the Community Skills Team can make changes to the Skills
  • And that we fork in Skills that have been abandoned

Is this a correct summary?

If so I definitely think this is a great idea! I’d like to bounce it off our Skills Management Team - as they help provide guidance and governance on our approach to Skills, however I’m certain in favour.


#3

I were of the impresion that it should be made outside MycroftAI - but “inside” would be great. The important is that orphan skills should be taken care of .


#4

I’m really delighted and proud that the Community wants to take this on, and it’s something that Mycroft AI should be supportive of - providing a few repos is fairly easy for us to do, and we can manage access using the permission structure in GitHub.

From experience there are some things the Community might want to give some consideration to at the outset, to help prevent overloading or Community fatigue at a later point in time - this is a Community initiative so I don’t want to be a dictator - these are offered as suggestions.

Criteria for Skills that will be “adopted” under the program

You don’t want to adopt every orphan Skill because this will quickly overwhelm the team, and stretch the available time you have. Instead, what I’d recommend here is defining some criteria that the orphan Skills have to have to be adopted. These might be things like;

  • The Skill is mature and has significant functionality
  • The Skill has an established user base
  • The README is well documented

There might be other criteria, but this would mean the United Skill Writers are maintaining already established Skills rather than having to do a lot of “remedial” work to get Skills up to standard.

Significant Skills

Skill Authors often write Skills to “learn” the Mycroft Skill process - which is really commendable. But often a first Skill is very basic or doesn’t add a lot of value for other people. I’d recommend that an orphan Skill should be “significant” - adds a lot of value - before it is adopted

Ability to drop support for an orphan Skill

I’d recommend that the group also be very clear about the circumstances in which support for an orphan Skill can be dropped - for example if not many people are using the Skill anymore. This ensures that the group is always working to maintain high-value Skills that are well-utilised by Mycroft users.

Licensing

An orphan Skill should also be licensed correctly by the original Skill Author - otherwise we may not be able to fork it an maintain it - for example if it is unlicensed or uses a proprietary license. Many Skill Authors don’t correctly add a license.


#5

I am willing to help upgrade skills to use python3.


#6

Yeah, I’d be willing to also help.
From my understanding the most common problems with orphaned skills are:

  • The readme is not up to standards
  • As already stated, it needs to be upgraded to python 3.
  • Finally, it needs integration tests.

Most of these are pretty trivial things that wouldn’t take that long to bring a skill back up “from the dead” :smile:


#7

Criteria for Skills that will be “adopted” under the program

i would tweak Criteria for Skills that will be “adopted” under the program a bit, let’s consider mandatory, and optional criteria, if a mandatory criteria is missing the skill will not be adopted, the optional criteria will give it priority over other skills but should not exclude it from adoption

Additionally these should be flexible enough to allow voluntary adoption, or requested adoption

Mandatory Criteria

  • The Skill is mature and has significant functionality OR functionality is considered important even if the skill was abandoned in early stages
  • The Skill has an established user base OR has been requested by the community
  • The Skill must be licensed correctly by the original Skill Author

Optional Criteria

  • The README is well documented OR inline documentation is good
  • The skill is already in skills store, but only for older branches

Automatic Adoption

Some skills could be automatically flagged for adoption by the team based on some metrics automatically gathered from github, @andlo skill list is a good starting point

  • last commit was over 6 months ago
  • the skill has been forked a lot
  • the skill has lots of downloads
  • the skill has lots of stars
  • the skill solves common failed utterances (this data is provided by mycroft right?)
  • The skill is already in skills store, but only for older branches
  • The skill has a PR in skills store, but it is failing and was not updated for a long time

Common problems we want to solve

We should have a clear objective on which problems we want to solve, main objective should not be to add new features, but rather to fix skills that can’t otherwise be used

  • The skill is up to standards but not in the skills store
  • The skill is functional but only for python2
  • The skill is functional but readme is not up to standards
  • The skill is functional but missing unittests
  • The skill is mostly functional but does not account for some edge cases
  • The skill is functional but can be improved/cleaned, i’m considering mostly new core features that were not there when the skill was developed
  • The skill was functional, but is old enough that the latest core version introduced a bug/backwards incompatibility
  • The skill conflicts with other existing skills

#8

we should maybe also try to reach the original skill author, if the license is there this is mostly a courtesy but we should do it anyway

  • ask for license if missing
  • ask if the author has plans to update the skill / agrees with us taking over
  • ask the author to transfer repo ownership / give commit access so we do not need to fork it

#9

i think we should also create some website (github pages will do), and a standard way for people to reach us and know who the team is, can be a single simple page, we should also write some sort of manifest/mission statement and basically put the info from this thread in there

another point i want to bring up, forking skills does not allow opening issues (does it?)

finally, should a github team be created under MycroftAI organization for this ?

first skill, https://github.com/MycroftAI/mycroft-homeassistant, has been adopted, but there are no mechanisms in place yet for anyone to do anything about it

@KathyReid i believe you are the right person to reach out about this

Also let’s organize ourselves, if i understood correctly the team will launch with the following members:
@andlo
@JarbasAl
@brrn
@Wally_Fort

appropriate permissions will need to be given

EDIT: i created a channel in mattermost for us https://chat.mycroft.ai/community/channels/united_skill_writers


#10

If there is any value in adding me to the team i am more than happy to contribute were my skills permit.


#11

anyone who wants to contribute is welcome in my opinion. every little bit isnt going to make anything alone - but together - united - we kan do what ever we want and make great stuff :slight_smile:


#12

I’m happy to create a “Community Skill Taskforce” team (if you like that name). These team members could be given write access to specific repos under https://github.com/mycroftai, so these adopted skills could be brought under the organization.


#13

for now that would be only the home assistant skill

maybe we should also have a github repo/page with a list of adopted skills, the criteria in this thread and contact info (mattermost channel for now), skill proposals for adoption could be through issues or PRs like the skills repo

the team for now would be
@andlo
@JarbasAl
@brrn
@Wally_Fort
@pcwii


#14

Created! I invited the Github user “fortwally” instead of “wally_fort” (as that is who signed the CLA, so I’m pretty sure it is the correct person). If not, I can update the list.

There is now a “Mycroft Community” team with sub-teams “Community Skill Taskforce” (this group) and “Skill Management Team” (the group that manages the mycroft-skills repo).


#15

I am fortwally on github and wally_fort on the forum.


#16

Tagging @krisgesling