First part of a long post that I made on Slack:
OK, that comes to the other idea that I wanted to discuss, regarding Mycroft’s architecture:
What you guys just did was offer various solutions to one problem. It doesn’t matter which one works best in this case, it matters that there are many ways to achieve same goal.
I think that Mycroft should be introduced to a concept of a “goal”, some sort of desired state, and the concept of a “way”, a chain of events that produces the desired state.
One of suggestions that I just got was "why don’t you use a tool that is commonly used to achieve what you currently want to achieve?"
Yes, that’s the best way for me currently. Instead of writing a script or making Mycroft skill from scratch, I can use Jenkins and be done with it.
But as I am lazy AF, I would still prefer that Mycroft does it for me.
Now, if I want Mycroft to achieve the goal I set, I have to teach it how to achieve it.
Will I make some wizard-level skill that does all the checking and compiling or will I teach Mycroft to use Jenkins?
OK, maybe bad example, since Jenkins is many times used to set up a process and forget about it.
What if user wants Mycroft to increase the contrast of a picture.
Will we make Mycroft go trough the source data of the image and do some unoptimised math wizardry or will we teach it to use GIMP’s CLI functionality (the Script-Fu stuff)
Both ways should produce the same result, it just depends on the situation which of them is more efficient. If we have 20x20 px icon then unoptimized method would still take less time than starting GIMP, but if you have 500 MB image to process, it’s worth taking time to open GIMP or some other proper image manipulation tool to get the work done.
That’s why I think that once Mycroft grows more and gets more skills, it should know which of the possible solutions is best for user’s intent.
I’m talking some advanced Adapt here, which also calculates how appropriate the skill is, not just how well it matches intent’s keywords.
What are your thoughts on this?