From: Oren Ben-K. <or...@ri...> - 2001-12-17 00:58:16
|
> IRC Meeting Minutes 16-DEC-2003; Present Brian and Clark Missed you... drats. > 1. We would like to use ; instead of ~ > > The transfer method format is three part > (namespace,typename,format). Since the > typename is always mandatory, the namespace > is always separated from the format. > > Thus, we can use ; to separate the typename > from the format. This only requires that > we restrict the typename so that it does > not contain a semi-colon. You realize that by the same argument we could use '%'. I'd rather use '%' than ';'. > 2. The use of absolute URIs for namespaces, !perl|type > > I very much like saying that a namespace *is* > an absolute URI. However, I do like our short > hand notation... No contradiction... > !seq Should be given a default YAML > namespace. Yes. > !perl|type Should map to a nice namespace > as well. Given that the colon > does not appear in the name; > thus, we can make this a short > hand for a more verbose namespace Yes... > So, how about we do this sort of mapping... > > transfer method namespace type > --------------- ---------------------------------------- > !type -> http://yaml.org/t/ , type > !perl|type -> http://yaml.org/t/perl , type > !java.lang|type -> http://yaml.org/d/java.lang , type > !org.clarkevans|type -> http://yaml.org/d/org.clarkevans , type Problem! Both Java and C# could define the type name 'system.foo' (because both languages feel free to add non-DNS top-level names). Then you'd have a collision. And so on. The whole idea was to separate the namespaces between languages. The way to do it would be to add a tll (Top Level Language), so we would have 'java.system.foo' and 'c#.system.foo'. That's what both YAC#3 and YAC#3.1 say. YAC#3 says leave it at that. The problem is that we have to ensure each language name isn't a valid TLD. YAC#3.1 solves this problem at the cost of an additional ':': !type -> yaml:generic type !:perl|type -> yaml:perl type !:java.lang|type -> yaml:java.lang type !org.clarkevans|type -> yaml:org.clarkevans type This way we don't have to worry about language names being valid TLDs. For example 'vb', or 'c', or 'com' (for COM objects :-) etc. It also makes it clear you are using a language-specific type, rather than a universal one - an extra bonus. BTW, you can replace 'yaml:' with 'http://yaml.org/t', though I think that's less intuitive. Anyway, I can live with using YAC#3, which seems to be what you are proposing. It saves you the ':' at the cost of having to be careful about TLL (Top Level Language) names - they must never collide with TLDs. > !http://boogle|type -> http://boogle , type > !urn:pid:E34kfd|type -> urn:pid:E34kfd , type Yes. > We provide semantics that abbreviations without a period > must be approved by YAML mailing list. And those with > a period are reverse DNS names and controlled by the > domain owner. We make an exception for "java." since > this is so prevalent. This has the distinct advantage > of giving us wonderful XML compatibility, while making > it simple for common use cases. Also, it doesn't > require us registering a new URI scheme. It doesn't work for C# or any other language which would be using DNS based names. I predict this practice to become more and more common in the future - it makes so much sense. > See the end of the mesage for an alternative proposal > > 3. Implicit typing clairification > > Can we change "implicit" scalar back to "plain" > scalar? This way, a plain scalar is implicitly > typed when it is not explicitly typed. In this > way we avoid the nasty case of content which > is given an explicit type, but doesn't match > an implicit type. We gave the name 'plain' to what was known as 'folded'. I don't think using the name 'implicit' is confusing - it is the only leaf style which is subject to implicit typing (while there are two styles which are folded - plain and escaped). > 4. Dropping of the - magic: map > > I'd like to drop this one since it has too many > implications and creates exceptions. Alternatively, > we can just limit it to a single, one-line variant. > > I think Brian said that he'd rather drop it than > have a limited variant... and I prefer dropping > it to keeping a limited (or full) variant. I don't see how 6.1 is limited or confusing... see separate post. > 5. Character sets > > The spec needs to be clarified as to what > we mean by printable unicode characters. > Is this defined somewhere in the Unicode > specification? In particular, is PS and > LS included in the "printable" set? How > about control codes. > > If we drop the printable restriction, > then we need to explicity disallow > C0 and C1 control classes, plus > DEL, the surrogate pairs, etc. I think the wording on cce-d3 is fine as it is. > 6. Perl type/class problem. > > Brian said that @!$ works to solve > this problem! Hurray! Great. > P.S. Here is the alternative proposal for the package names... > > I suggest that we create our own URI scheme [2], > and register it. Let the scheme have two parts, > the first part is a language (one of many choices > registered via the pkg definition), and the second > item (optional and separated by a semi-colon) is > a valid package name within the language. Let's call > this URI scheme "pkg". > > pkg:java:java.lang > pkg:python:Some.Package > pkg:yaml > > !seq -> ( pkg:yaml ,seq ) > !perl|type -> ( pkg:perl ,type ) > !pkg:java:tld.dns|class -> ( pkg:java:tld.dns ,class ) > !http://yaml.org|class -> ( http://yaml.org ,class ) This is basically what YAC#3.1 says. The difference is that instead of using a two-part with ':', it uses '.' as a separator and specifies the top-level word is the language name. This allows one to write: pkg:java.lang|Integer pkg:java.tld.domain|Type Instead of: pkg:java:java.lang|Integer pkg:java:tld.domain|Type I guess your way is cleaner, even if 'java' appears twice in the first case. > In this way we are contributing a uri scheme which > is not YAML specific, yet covers a bulk of our needs. If you feel better calling it 'pkg' rather than 'yaml', fine... > From what I gather, Brian thinks this is "ok", but > I was rather vague on the IRC client, so I can't > expect him to grok the implications. > > [1] http://www.ietf.org/rfc/rfc2396.txt > http://www.w3.org/TR/2001/NOTE-uri-clarification-20010921/ > > [2] http://www.iana.org/assignments/uri-schemes > http://www.w3.org/Addressing/schemes I'll read those and comment later. I think this is the better way - that's almost exactly what I meant by YAC#3.1. Have fun, Oren Ben-Kiki |
From: Clark C . E. <cc...@cl...> - 2001-12-17 01:56:12
|
| > 1. We would like to use ; instead of ~ | | You realize that by the same argument we could use '%'. | I'd rather use '%' than ';'. % is one of those magical perl indicators, so we will no doubt need to use this in our type family production. | > !seq Should be given a default YAML | > namespace. | > !perl|type Should map to a nice namespace | > as well. | | Yes. | Good. I think these two are the benchmarks of readability we need to stick by. | > transfer method namespace type | > --------------- ---------------------------------------- | > !type -> http://yaml.org/t/ , type | > !perl|type -> http://yaml.org/t/perl , type | > !java.lang|type -> http://yaml.org/d/java.lang , type | > !org.clarkevans|type -> http://yaml.org/d/org.clarkevans , type | | Problem! Both Java and C# could define the type name 'system.foo' Right. Ok. Then I guess we have three classes: Ok. How about... namespace having the form lang/package ? !java/java.lang|type -> http://yaml.org/type/java/java.lang , type !perl|type -> http://yaml.org/type/perl , type !type -> http://yaml.org/type , type !http://boogle|type -> http://boogle , type !urn:pid:QED|type -> urn:pid:QED , type There. That should solve the problem, no? | > 3. Implicit typing clairification | | We gave the name 'plain' to what was known as 'folded'. Ok. Let's call it simple then! | I don't the name 'implicit' is confusing - it is the only leaf | style which is subject to implicit typing Implicit scalars are not always implicitly typed. This is confusing. Clark |
From: Brian I. <in...@tt...> - 2001-12-17 18:42:05
|
On 17/12/01 02:58 +0200, Oren Ben-Kiki wrote: > > IRC Meeting Minutes 16-DEC-2003; Present Brian and Clark > > Missed you... drats. > > > 1. We would like to use ; instead of ~ > > > > The transfer method format is three part > > (namespace,typename,format). Since the > > typename is always mandatory, the namespace > > is always separated from the format. > > > > Thus, we can use ; to separate the typename > > from the format. This only requires that > > we restrict the typename so that it does > > not contain a semi-colon. > > You realize that by the same argument we could use '%'. I'd rather use '%' > than ';'. I like '!', '|' and ';' because visually they are all thin vertical separators. They are easier for my eyes to parse than '%' or '~'. Cheers, Brian |