Lately there has been some discussion in the forum about a collection/database/installer of/for user plugins.
I am pondering for a while now on how that could be done and I am interested to discuss the matter with you.
Let’s start with the information I would regard important about a user plugin:
- required/supported Kaleidoscope version
- git URL
- current maintainer (directions for issue reports, PRs, etc.)
- dependencies (other plugins)
- compatibilities (can replace other plugins)
- known incompatibilities with other plugins
I heard about ideas towards a future installer for user plugins. Maybe there are already ideas about that in the Crysalis team?
Such an installer would certainly required the above plugin information to
be machine readable/parsable. Thus, we would best have some sort of database
or at least use a pre-defined data format to store the given information.
At first I thought that we might want to collect the information directly in the
Kaleidoscope wiki. But that is probably not a good idea as, to my knowledge, markdown does not
provide an appropriate way to define data in a machine readable fashion.
Another important point is that such a solution would probably be too brittle. Every user could
accidentally render the information unparsable by introducing formatting errors when adding or modifying
information about her/his plugin.
An appropriate solution could be to have an independent
dedicated GitHub repo that basicaly stores some sort of yaml/xml/json or whatever
file that represents the user plugin database. This information would
then be machine readable and we would have travis tests that ensures the
well definedness of the data.
The GitHub repository would have a maintainer that would act as gatekeeper
to ensure that the necessary information for a plugin would be provided and the formatting is ok.
Users could, thus, update the information regarding their plugins via PRs.
Instead of yaml/xml/json/etc. we could also use html tables which are
also quite simple to parse. This would have the great advantage that
we could include the current version of the html file in the Kaleidoscope wiki (GitHub wiki markdown can handle embedded html, no?).
What do you think?