> On 13 Mar 2015, at 09:24, Adam Twardoch (List) <
list...@twardoch.com> wrote:
>
>
>> On 13 Mar 2015, at 07:25, Tal Leming <
t...@typesupply.com> wrote:
>>
>> 1. Does this cross over into the spec defining application behavior? I don't know, but it is something that we should think about. We *try* to keep the spec from dictating anything other than read, write and "don't discard without alerting the user". There are some interpretation and translation guidelines, but those are mostly to ensure data consistency.
>
> Well, given that the foundation of UFO is very much linked to FontLab Studio 5 (most data structures present in FLS 5 translate to UFO in some way) and AFDKO (most things that makeOTF expects as input are in UFO), I don't think you can really "unlink" UFO and app behavior. UFO seems also to be linked to defcon/Robofab. Given that RoboFont is a "UFO editor", and there also seems to be a certain reluctance in introducing things to UFO that would be difficult for Frederik to implement. I wonder how much this situation is compliant with item #2 of the UFO Design Philosophy for me.
Hello Tal,
In your Robothon talk, you made a comment that went along the lines of "I'm not sure when I should recommend app developers that it's OK to switch to UFO 3".
From what I've understood, you're inclined to wait until one particular implementation of UFO (defcon/Robofab/RoboFont) implements UFO 3, and then it would be "all right" for other implementations (FontLab, Glyphs, FontForge, the ufo.js/Metapolator team) to switch to UFO 3. Am I right or did I (very possibly) not understand you correctly?
That is, of course, "apps dictating spec behavior" or "some apps dictating other apps behavior", in a way. Now, again, I'm not saying that this is a bad thing per se. But it has consequences. For example, I wouldn't mind if one particular implementation of UFO is declared the "reference implementation", and other implementers were encouraged to consider the combination of both the spec *and* the reference implementation as the authoritative source.
I realize the effort that needs to be put into upgrading defcon, Robofab, RoboFont etc. to UFO 3. I now even understand that there may be some fundamental challenges (have to do with the Pen protocol somehow?). And I'm eternally grateful for your efforts that have lead to creating Robofab and your continuous support of the "FontLab world", with, sadly, only very modest help from FontLab's side. We're now in the most fortunate situation where we have RoboFont, Glyphs, FontForge, Superpolator, Metrics Machine, roundingUFO, AFDKO, ufo.js, Metapolator, defcon, Robofab, the upcoming "VIctoria" series of FontLab apps, as well as a number of internal apps made by some font development companies, which all use and support UFO to some extent.
For example, it seems to be that right now, neither RoboFont nor AFDKO support either the UFO 2 spec or the UFO 3 spec.
So there is no reference implementation of neither, and possibly all implementations are non-conformant with the spec. (I cannot quite tell how good the compatibility of Glyphs or FontForge with the UFO spec. I'd be very grateful if people who have experience with this would speak up!)
At FontLab, I'd much rather just support UFO 3 as is, or UFO 2 as is, without any app-specific emulation behavior. Or support the reference implementation. I know how messy it is to support all the under- or non-specified aspects of OpenType already, and I'd really like to avoid going through the same ordeal with UFO. :)
I can think of several possible ways to improve the situation:
1. Adopt a "dotted" UFO versioning. Some people already refer to the "flavor" of UFO that RoboFont outputs (UFO 2 with elements of UFO 3) as "UFO 2.5". Perhaps we should just call it that, formalize it? We might switch to "dotted releases" of the spec, and perhaps update the spec more frequently. I would be glad to assume a somewhat more active role in it, as others might.
2. With RawGit, we could create a fully browsable "development" version of any of the UFO major versions, as in:
https://rawgit.com/unified-font-object/ufo-spec/master/source/versions/ufo3/fontinfo.html
https://rawgit.com/unified-font-object/ufo-spec/master/source/versions/ufo3/glyphs.html
Or perhaps we could convert the current HTML spec to Markdown and use Github's "gh-pages" branch so the spec exists on something like
http://ufo-spec.github.io ?
3. We could have a concept of "contributions" or "addenda" or "extensions" to the spec, perhaps hosted in the same Github place, where people could document their de-facto extensions or proposed notations for things like hinting, so implementers might now "faster" what other implementers have in store.
4. Declare RoboFont, or defcon, or Robofab, or something else, a reference implementation, and recommend to the implementers that they consider the spec and the reference implementation as a whole.
Those are all non-exclusive points, and merely ideas.
I have the feeling that the UFO world is "speeding up" at this point, which is great, because it shows that UFO is gaining wide adoption. But that also presents challenges. I'd love to find a method where the burden of decision-making and spec maintenance would not rest entirely on you, Tal. I'm not sure how open you are to changing the process, but if you were, I think there would be more people now than ever before who'd be willing to help you out, myself included, so in the end, you don't need to decide yourself "when it's OK for app developers to switch to version X". It must be a huge responsibility, and I'm very grateful that you have assumed it.
But if you think that I'm trying to fix something that is not actually at all broken, and that the current process is fine, please let me know. I may be missing some points! :)
In general, please let us know how we can help in any way. I'd like to see UFO becoming more community-driven, and I'll try to help in any way I can.
Best,
Adam