Discussion so far has mainly been around the use of of YAML. Points raised:
Thinking about all of these, I propose the following. Design constraints were (a) granularity (including Skud's suggestions of what to mention), (b) an absolute minimum of chrome, and (c) trivial to transform into other formats (such as RDF).
v! 1.3
@ 2007-11-08T11:15
# This version was codenamed Muffin because we were listening to Frank Zappa at the time.
m! This project is now maintained by ZIRCON (of Zircon Software fame).
l! We have switched licenses. This software now uses the Greater Zork Software License.
Please ensure that you have read the new license before using this software.
a! New frobnitz() method - save 50 lines of manual frobnitzing by using this instead!
b! Fixed the error in quack() where it would actually moo instead of quack. [RT 1234]
c! The calling convention for rumpelstiltskin() has CHANGED. See perldoc.
t! Test coverage is now 100%! Go us!
v 1.3_01
@ 2007-11-07T09:20
# Developer preview for 1.3 and the CPAN testers.
v 1.2.1
@ 2007-11-02T20:08
d Fixed some POD formatting mistakes.
c Refactored accessors into AUTOLOAD. Makes no external difference.
r Removed the deprecated honkhonkhonk() method as warned several versions ago.
As you can see, each version is represented by a block of lines. Double line breaks separate versions. Each line begins with a token denoting what it describes, optionally suffixed with an exclamation mark, which means "important". When applied to a version number, it implies "major release". (Applying it to a date or comment is meaningless and should be ignored by any parser.) The token is followed by \s+. If an item is split onto multiple lines, it is understood to continue until a new token or block break is reached.
These are the tokens:
@ Release date. In W3C datetime format (ISO 8601).
# A comment.
a An addition to the code.
b A bugfix. Linking to a ticket here would be nice if it exists.
c A change to existing code.
d A change to documentation.
l A change to licensing.
m A change to the maintainer.
r A removal of something from the code.
t A change to tests.
v A version number.
I haven't gone quite as far as RGiersig did in his specification, as I felt that was a bit heavy. For example, release stability in my scheme is indicated by the version number - that should be implied from the existing convention of underscored version numbers for developer releases.
Vague other thoughts - case-insensitive tokens? And maybe a standard block of comments at the beginning of the file explaining what the tokens are to new readers.
Thoughts? I actually like this enough that I might start using it myself.
Update: There's a second draft now.
using x! instaead of !x for important items (Score:1)
just my 0.02 EUR
Re: (Score:1)
Hard to read... (Score:1)
Of course, I don't like all the other proposals equally as much.
Re: (Score:1)
The spec allows you to do this if you want:
Any better?
Ambiguity (Score:2)
Maybe I missed something, but what do you do if the word 'a' is the first letter of an item split onto multiple lines? How does the parser know that's not a token?
Re: (Score:1)
If anyone can think of a patch to the spec to fix that without adding complexity (I can't off the top of my head) I'd be interested to hear it.
Re: (Score:2)
As a format which could conceivably be written in other (human) languages, can you guarantee that none of them will have the same issue? Or that someone might refer to their 'd' subroutine and mess things up?
Maybe subsequent lines could be indented or the preceding line could end in a backslash?
Re: (Score:1)
confound on IRC suggested starting continued lines with a '.', but that's more chrome to impede a quick visual scan of the document, as are backslashes. On the other hand, the backslash is a well-known line continuation indicator. I prefer though your suggestion of indenting. Leading whitespace already seems to be commonly used on CPAN to indicate a continued comment.
a We added a new shiny feature that you'll all love:
a magic automatic doodad configurator.
b! A major bug got fixed. Really m
remove/delete (Score:2)
But I'm sure mistakes are bound to be made. That people accidentally use "d" instead of "r".
Instead I'd prefer to use another letter for "documentation", but I can't think of any other word.
Re: (Score:1)
Hmm. "d" for "delete" is a good point, however I find the phrasing "I deleted a feature" a little awkward.
How about we take a leaf out of diff -u's book and circumvent the issue of which word to use?
- removed something
+ added something
There's no ambiguity in that...
Re: (Score:1)
v0.1.1 2007-11-10
+ added new thing() method
- removed old deal() method
* fixed bug #12578
% changed code for blah()
Re: (Score:1)
I thought the metaphor for the maintainer symbol was that someone changed their “hat” (as in “putting on my group leader hat, I say that […]”). That seemed funnily apt to me.
Compatibility and security (Score:2)
For these, I suggest "i" and "s".
Actually, single letters make bad identifiers. How about the following self-descriptive tags:
new
fix
doc
incompatiblelicense
maint
security
tests
Where changes and removal
Re: (Score:1)
Kirrily "Skud" Robert perl@infotrope.net http://infotrope.net/
Re: (Score:1)
Timestamps: these follow the format specified in ISO 8601 [wikipedia.org], where the "T" is a mandatory separator. I'd like to stick to an existing standard of date representation if possible.
I think uppercasing is too shouty... adding the important marker would make you end up with "FIX! SECURITY! NEW!". It's a bit tabloid newspaper. :-)
With all this in mind I'm going to post a revised spec shortly for a seco
Re: (Score:2)
As for the timestamp, you'd have two things, whitespace separated, instead of one. dateTtime may be the standard, but date time is much more commonly seen in the wild. And for a very good reason.