In addition, I'd like to bring up an idea.
In Python, there is the convention of prefixing a method with "_" if the method is supposed to be private, and in OS X, prefixing the filename with "." makes it hidden.
More and more apps that work with UFO will use some lib keys which are defined by a vendor. For example, com.adobe.type.autohint key and the com.typemytype.robofont.mark are used by FontLab VI.
I'd like to propose a simple extension of the "reverse domain" convention for keys naming. If the first character of the key is a "." then the key should be considered private. This would show the vendor's intent that other apps should not implement any functionality based on these keys, should not rely on that key's contents' stability in any way etc. Of course it would not be enforceable, but within FontLab, I can imagine that we'd be happy if others use com.fontlab.v2.tth or com.fontlab.ttprogram but there may be some cases for some very specific data where we could name the key ".com.fontlab.ufo2to3migration" and it really would be "just for us".
Optional: In addition, 3rd party apps would not need to make any effort to maintain the contents of these keys. The spirit of the UFO spec is that different apps should make an effort to keep the contents of the "lib" intact. That's fine, but there may be quite a few cases where it's better to trash this data than keep it, and with a key prefixed with ".", an app would not need to bother.
I think that would be a fairly elegant system:
- public.* : not part of strict UFO spec but considered publicly-owned and stable
- com.vendor.* : vendor-owned and controlled but publicly-accessible with an implied vendor's intent to keep it stable
- .com.vendor.* : vendor-owned and controlled, and private; no guarantee whatsoever that it'll remain stable
Opinions?
A.