I’ve invested alot of time writing a tutorial about relations this and the experience ends me up in that we need to do address a serious situation about juju and its current state of learning how to produce good charms (not only with relations).
On a higher perspective: "How to bring juju to casual programmers?"
The following discussion takes place on the IRC channel #juju on Freenode.
<elox> Look at the bottom of this official documentation: https://juju.is/docs/charm-writing/relations (For a new user, its telling that there exist a single interface in the juju eco-system "mysql". <elox> A new user would think that juju is really not ready. <stickupkid> Probably should be "mysql" is another interface example <elox> I would really love some place where to find a more consistent and comprehensive place where to easily browse interfaces that exists. <elox> I had a hard time writing this tutorial and got this as a comment from a user. That he had no clue on where to find interfances that exists and how to use them. https://discourse.charmhub.io/t/tutorial-relations-with-juju/3632 <elox> ... so I started to look, and realized that I couldn't find any information except in random places on github and launchpad etc. with little or no consistent documentation. <stickupkid> https://jaas.ai/search?provides=elasticsearch <stickupkid> that'll find everything that provides an elasticsearch interface <elox> A new user will hit a wall here. <stickupkid> that'll find everything that requires an elasticsearch interface https://jaas.ai/search?requires=elasticsearch <stickupkid> I really don't think we document that well at all and I agree <elox> Thats nice, but its not the way people would go ahead and find information and understand what is possible really. <stickupkid> I wonder if juju find (new command comming for searching charms) should offer that... <stickupkid> so is the problem understanding an interface or finding other charms that provide/require the interface? <stickupkid> I think we should do both better <elox> I think that juju needs some kind of inventory which has a consistent presentation for things like "interfaces" to that any two different interfaces can be understood equally. The format of that information needs to be defined and presented in such a way that it can be replicated easily. <elox> If every interface is "different", the level of repetition will be low and cumbersome. A user then needs to "re-learn" every relation from what ever documentation is available or most likely by studying someone elses code. This is a very user-unfriendly path forward learning and using relations. <stickupkid> elox, I really think this discourse or bug worthy, it's really valid criticism that I don't want to loose <elox> It might be enough for expert level programmers, but for casual programmers, such as myself - I'm hitting a hurdle I have a very hard time getting over and most likely will produce bad code from. <elox> @stupidkid what do you propose? <stickupkid> this discussion in discourse, explain what you've hit, what's wrong.