@popey I hope you don’t mind but I’ve added you doco on remote parts to the new doco site here:
I’ve made a few edits and have a few questions:
@niemeyer I don’t know if you want to check the formatting I’ve applied to this page.
The remote part page discuss copy/pasting a remote part, if the remote part has scripts (e.g. local files) the I suspect the copy paste mechanism doesn’t work. I assume in this case you would need to copy/paste all of the ‘files’ that are part of the remote part.
Can a remote part expose apps? If so how does the consuming snap subsequently expose those parts?
Can a remote part define hooks?
If so how are they merged with the consuming parts hooks. This then leads to the question about setting/getting key/value pairs which rely on the part having a configure hook.
If a remote part can’t have hooks then how can the consuming snap configure the remote part?
Can a remote part expose more than one part: e.g. parts [tomcat-with-ssl, getcert].
Does the remote-part have to expose all parts (errors from the remote-part status server suggests yes). I don’t really want to expose all parts as some of them are just to pull in dependencies and serve no other purpose.
It also feels like there is no easy way to test a ‘remote part’ locally before publishing it. It also feels like we lack a mechanism by which an organisation could build a suite of re-usable parts. This would also answer the above questions on how we test a remote part. The copy/paste mechanism isn’t appropriate as you can’t then maintain the re-usable part in a single place.
If I’ve understood the current situation, I think we should be supporting the more general concept of a ‘re-usable part’ which can either be local or remote. We would need a mechanism to tell snapcraft where to find the library of local parts or perhaps a mechanism to add the parts to a local cache.
This then supports ‘private parts’ repositories as well as providing an effective mechanism to test a part before releasing it.
If re-usable parts are going to be released then it really feels like we should be extending the channel/track concept to remote parts. Remote parts are no different to snaps in that they need to go through a alpha/beta/release cycle. It looks to me that a remote part is either released or not released.
So there’s my two cents worth. Brett