-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft a version of the metadata specification #100
Comments
Good points regarding the changes. Would have to think a bit on proposed names. In general, I don't like that rpmlint checks free text field and complains about it. But, it is not up to us to change that. Re implementation: I wouldn't mind implementing it - should be simple to do so. So, it wouldn't be hanging too long on that as soon as we agree on what to change. |
Please do so! My suggestions are the best words for these tags which came to my mind by thinking about them many times in the past ~ 10 months. This is also why I provided extensive reasoning, including words which should be definitely avoided IMO. I know this is easy to implement; if it would be C code, I might have offered to do that and leave the quality assurance to you (either singular or plural). But the important point is the get the specification right, first! And the main criterion is not so so much if they sound right to a native speaker (e.g., @piggz) or someone who as written and quality assured technical specifications in an international IT-industry association for many years (me), but if they constitute an improvement for the average developer (and |
ChangeI clarified, that the new tags are only valid if |
With the change of a spec we would have to define a target. In particular, you mentioned that we shouldn't care much about So, if we don't care about rpmlint, maybe we should live happily with what we have. Note that if rpmlint is very much bugging, maybe it is possible to disable some checks for OBS project. Although, I am not sure. So, before proceeding, maybe we should define a target and see if we want to go there. I am inclined on keeping it as it is just to avoid extra work of all package maintainers that is involved. PS: Just looked - we are already at 261 packages! |
Yes, assuming "target" means "aim" or "goal". I thought this becomes obvious by reading the first posting here: To stop confusing developers, BTW, I forgot to mention that syntax-highlighting editors also detect "Icon:" and "Url:" as reserved keywords of an RPM spec file in contrast to all other tags of the SailfishOS:Chum metadata specification. I have seen that with KDE's Kate, GitHub's web-editor and GitHub's IDE editor (these are the only ones I use besides
No, AFAICS I did not write anything like that: From my perspective, both shall not be(come) confused, plus syntax-highlighting editors, which in turn also confuse developers by highlighting these as RPM tags.
IMO, you are and you are not at the same time:
??? P.S. / slightly off topic:
I once was "sure" that it "must" be able to silence all warnings and errors Look, it is exactly such tedious detours which I want to avoid for other developers by writing above draft for a change. In would not have made the effort, if I am not convinced that it makes things easier for developers. P.P.S.: Back on topic |
OK, let's go through suggestions:
Versioning: Two aspects. Iff we are going to use version tags, I would suggest to use Addition of version tag would mean that we would require it in future, after version 1 deprecation having version specified. Not sure we want it. In principle, I would prefer to have minimal number of tags that are needed. While not perfect, instead of enforcing a version, I would prefer to just add new tags as synonyms and use those in a mix as developer wishes. |
I adapted the original text to the ones we agree upon.
Nothing I can think of (and I did that numerous times), but I can try to research this systematically by the help of a thesaurus (BTW, "image" is too generic and points in the direction of "picture"). But before I start doing that I need to understand, what you mean by "Logo could be something specific for a package …". Spontaneously I would have answered "But it is a specific logo for s specific software!", usually a project logo and maybe / often identical to the icon used for desktop, launcher etc.
Mmmh, I started to use semantic versioning long ago and each time I deviate from it, I regretted it sooner or later and returned to SemVer, hence I learned to stick to it in the first place. Here I considered point releases to be useful for non-breaking changes, i.e., the addition of new tags. And also, if the interpretation of tags is altered, for example, when implementing a change like issue #149. But I do see the beauty of the simplicity of an single integer version number, which only covers changes of the tag syntax, hence this is O.K. for me. I adapted the document to it.
As already stated: I do not expect a (now) version
I do concur with that as a guideline. But again, we both do not know what may be needed or wanted in the future. For example, if someone makes a nice contribution to the SailfishOS:Chum GUI app, which is introduces a new tag. I wholeheartedly believe and experienced many times, that one shall not assume to know for sure what the future brings. IMO, "surprises" and "unexpected changes" is a valid assumption for the future, at least in a long term perspective. Aside from that, newly added tags (now) do not trigger a version change, only altering existing ones does.
I initially considered such an approach, because it is the most simple way to implement and document these changes, i.e., for you and me. But:
Having thought about the topic versioning again while writing these points makes me want to insist on semantic versioning used properly: Start at |
I have given it some thought and it would be good to get some thoughts from others regarding it. Right now, it seems that large part of motivation is coming from confusion caused by rpmlint and editors. However, when you read RPM SPEC file format docs, you would see that
So, in principle, rpmlint and syntax highlighting have taken either lazy (highlighting, I presume) or overcautious approach (rpmlint?). In our case, the both are doing it wrong and I would even consider it as a bug of the software interpreting %description field in such manner. If I remember correctly, PackageName was forced by rpmlint as we wanted to have just Name as a tag. Title wasn't proposed, I think. as we used AppData tags as a reference. If we are going to change the tags, we will be still in the mercy of RPM SPEC staying the same. What if they will introduce Title? Or Logo? Chances are low, I admit, but we seem to be going down that rabbit hole. In sum, I would like to hear opinion of others as well on the issue. Somehow we have to ask developers to read this discussion and voice their opinion. More specific terms/discussion: Logo could be something that is rather fixed and may not have a freedom of drawing something on the background, as some icons may do. They are not synonyms, but that is probably more important in corporate world. In this respect, icon would be correct to use as a tag in our spec. Re versioning: we have rather small spec and number of developers using it. In this sense, I would still prefer using new tags as synonyms. In this we disagree. |
Unfortunately I perceive this as backing out of your initially positive reaction, because this will likely stall this proposal for ever, which is equivalent to killing it. There is just too little interest, because in a way "it works". I also addressed @piggz right at the start, and now again. I also do not see any drawbacks: This draft is an improvement, and very easy to implement. Most of the work is documentation, which I offered to perform. For me this is taking too long and becoming really tedious. As discussed elsewhere, I am about to wrap things up, so this either go or leave it. This discussion is eating much more time than implementing these changes takes.
Rinigus, you are turning in circles on your own. I already stated, that I know, so there is nothing new to see for me in the RPM spec file format specification: I used the words "free text" field from the format specification right from the start in the very first bullet point. I conclude that this is also progressing too slowly for you, because you reiterate to points which we already left behind. For example this one:
"But, it is not up to us to change that." to quote yourself.
Yes, I know. So what?
No, it is just your thoughts now visiting every rat hole in sight, after initially stating: The statement "we cannot know what the future brings" is a typical killer argument, which from my point of view only discredits the one using it, not the point it is directed at.
No. A logo is just a logo. Merriam Webster correctly defines it as "an identifying symbol". Nothing more or less.
I never stated that these are synonyms, rather the opposite. I did state and document (see fourth bullet point) that "icon" is too specific IMO, as this can differ from the program icon used (on the launcher etc.). Thus we shall not use the same word, as this confuses, in addition to the other reasons already provided and documented. As you requested, I systematically looked for alternatives, but failed to find one: "emblem" is closest, but a bit more specific (in the sense you have been criticising "logo" for), "logotype" just the original, longer version, "insignia" also has a much more specific touch, "impresa" is a very niche word nobody uses, "logogram" just a longer variation, "visual" radically generic ("something to the eye") etc. etc. If you do not want "logo", please provide an alternative which does not read "icon" (because that is what you continuously are returning to, and maybe that is the whole aim of making me revolving in circles). For me it is absolutely fine, just as all the alternatives I named above, despite being more imperfect. Edit: It is interesting to read that GitHub prefers the term "logo" over "icon" as a generic term for "an identifying symbol" of either an individual (person), an organisation (group of persons) or a piece of software (e.g., an app), for example(s) read here and there.
This is what I call "the sky is blue" killer argument: Name something trivially correct and let it sound as if speaks for or against something else. The size of the spec and the number of its users is completely unrelated to versioning. The last round you stated the opposite "Just looked - we are already at 261 packages!" (so many that nothing can be altered 😉), as if this specification version would enforce any package author to change anything. To design a specification deliberately without versioning is just an insane concept, because that makes it impossible to address a specific state of the specification in terms of time and content (among humans and technically). Up to now I viewed the lack of versioning as an mishap, which ought to be rectified, but not as a concept (with which goal?). MetaIn the prior rounds of discussion I either agreed to your requests for changes or swallowed them as a compromise until I felt compromised. By your last message, you oppose everything achieved so far, including your own former assessments: You try to fundamentally invalidate the whole action. I perceive this not only as unfair ("foul play"), but also as breaking the mutual understanding that we try to work together constructively here. I have sensed this pattern in former discussions with you: Suddenly you back out of everything and just fundamentally oppose things without naming reasons (just killer arguments). If I did write something, which triggers this behaviour, please name it. Working together / collaboration is mutually exclusive to winning on a social level: If the notion of winning socially comes up, implicitly the basis for a collaboration among peers is lost. Also mind that opposing your own, clear statements undermines trust in all your statements. How to proceedI update the draft with reasoning for all the arguments brought forth and addressed your wish below:
O.K., I rephrased the draft to reflect that by detailing the use of the |
I would like to ask @piggz or someone else to review your proposal and state whether they like it or not. Right now, it seems that we are the only ones discussing it. I don't want to end up in a situation where we spend our time changing documentation and code and then impose the changes which nobody wants / cares about. I agree that this discussion is rather tedious and its time to finalize it. |
@nephros, you may have or want to build an opinion on this topic as a very regular contributor of software to the SailfishOS:Chum community repository. Unfortunately there is no summary of the discussion between @rinigus and me, I also think the the winding course this discussion took with all its turns etc. is hard to summarise. Hence I suggest to either read only the draft proper or the draft and the subsequent discussion in its entirety to gather all aspects. |
I must say I'm a bit annoyed by the signal to noise ratio of this. A lot of time spent for little gain. care less about the thing and more about the people using it Anyway, I tend so side with most of what @rinigus said in comment 1423068427: Versioning:My opinion is, version the specification (and document well the differences), but don't introduce a metadata tag. It offers no benefit to people writing metadata sections, it's just meta-metadata. IMO, Metadata is implicitly versioned by the "newest" keyword it contains. Yes, it smells of "Early-HTML days" tag soup, but so what. It's a couple of keywords for package display. Quality will be improved not by defining strict rules, but by making it simple for .spec file authors to say what they want. If there must be a version tag, I'm also for a single integer. When writing a metadata entry I don't want to look up what X.Y.Z mean, and which Y introduced the keyword I need. It's an API version (like a soname), not a software release version. rpmlint:As long as it doesn't actually fail when encountering chum tags, ignore it's obviously wrong output. There are numerous warnings caused by Although I agree As a nice-to-have, (maybe in the context of #83), document for devs those warnings that are impossible or hard to get rid of, and advise to just ignore them. |
(continuing in a new post as sfos browser can't edit posts here).
|
One Issue I have with the current Metadata example/doc is that it is not clear which of the But that is purely an issue of documenting the relationships of tags with UI handling of them. |
Oh, I think ultimately we (all three) perceive this alike, though when @rinigus and I team up, we excel at this, regularly.
Nice statement (never read that so concisely phrased), but I just address what regularly annoys me, as denoted in the second paragraph "Motivation" of the initial posting. This is the classic motivation for Free Software: Try to make your own life easier; which is implicitly something everybody perceives differently due to the "own life" (aka YMMV). Unfortunately some of your statements WRT the new tags are a bit inconclusive, i.e., they contain pro and contra arguments. What I gather is: VersioningYou do not like it, hence this resolves the tie between @rinigus and me. The is no implicit "must", except we define something so. rpmlintWell, some versions of it at the SailfishOS-OBS do indicate a failure due to the
|
@rinigus, is SailfishOS:Chum GUI PR #181 O.K. from your perspective? I will try to overhaul the current spec with the knowledge I gained in the year since I last overhauled the SailfishOS:Chum metadata specification (also addressing issue #43) this weekend, but leave the tag information as it is. When you provided some feedback ("O.K." is fully sufficient 😉), I will create a PR for the Chum metadata specification reflecting the changes in Chum GUI PR #181. |
Missed that OR, sorry. LGTM |
References: - [Issue \#100 "Draft a version of the metadata specification"](#100) - [PR \#181 "Metadata: parse new names" for the SailfishOS:Chum GUI application](sailfishos-chum/sailfishos-chum-gui#181).
If someone wants to take a look at the adaption of the SailfishOS:Chum metadata definition (PR #109) to Metadata: parse new names (SFOS:Chum GUI app PR #181). Because I updated some descriptions before documenting the four revised tags, the changes are so trivial, that IMO they do not need to be formally reviewed; but if someone has the time for QA, this is always welcome. As the SailfishOS:Chum GUI application 0.6.0 has already been published, which supports version 1 of the SailfishOS:Chum metadata definition (by aforementioned PR #181), I plan to merge PR #109 the upcoming weekend. |
…ion (#109) * Replace four tags and document this in the text References: - [Issue \#100 "Draft a version of the metadata specification"](#100) - [PR \#181 "Metadata: parse new names" for the SailfishOS:Chum GUI application](sailfishos-chum/sailfishos-chum-gui#181). * Update link to final metadata definition v0 * Add proper headers
Done. |
Preface
The original SailfishOS:Chum metadata specification (version 0) for packages in the SailfishOS:Chum community repository is well designed and works fine. Still, after using it for 1,5 years and overhauling it a year ago, I perceived four flaws, which I pondered about every now and then. I took my time to come up with something comprehensive and to reduce the likeliness to suggest nonsense.
Motivation
Cease confusing developers,
rpmlint
and syntax-highlighting editors by using words in the tags for SailfishOS:Chum metadata, which already can be used for other purposes / RPM tags in a spec file: "Icon", "URL" and "Name" of a package.Assessments
The
Icon:
tagIcon:
tag collides with theIcon:
tag defined by RPM for spec files. While it is rarely used today (I experimented with it insfos-upgrade
etc. years ago), as it only allows for a XPM or GIF file,rpmlint
complains about its use in the%description
section (correctly stating that it is misplaced there); to which extent depends on therpmlint
version and configuration.Side notes: RPM's
Icon:
tag was supposed to be displayed in graphical package manager front-ends, which is a equivalent purpose it has in the SailfishOS:Chum metadata. But as it still works with current RPM releases, a collision definitely exists, only alleviated by the fact that the%description
section is basically a free text field.Icon:
tag as part of the regular RPM spec file syntax.rpmlint
) that a well known tag is reused in a different context with different properties.Thus
Icon:
tag in the SailfishOS:Chum metadata specification is renamed toLogo:
PackageIcon
.The
Url:
tagUrl:
tag slightly collides with theURL:
tag defined by RPM for spec files. While current versions ofrpmlint
do not complain about its use in the%description
section, presumably due to the different capitalisation, older versions do (also stating that it is misplaced there, as withIcon:
).rpmlint
certainly do complain about its use in the%description
section.Url:
tag as part of the regular RPM spec file syntax, despite its different capitalisation.URL:
tag.Thus the
Url:
tag in the SailfishOS:Chum metadata specification is renamed toURLs:
orLinks:
.The
PackageName:
tagName:
tag (i.e.,%{name}
). This is confusing, because the two are not related, even though they may be set alike byPackageName: %{name}
, but …PackageName:
clearly has different properties than the classic "package name" (%{name}
): In can be a line of text comprising multiple words, in stark contrast to the RPM'sName:
tag (the real "package name"). This is confusing. WhilePackageName:
may be used for a short description, this is not its intended use AFAIU, and "description" is another word which shall be avoided in the context of RPM and its spec files due to the prevalent%description
section; the same applies to "summary" due to RPM'sSummary:
tag. "Package title" best describes the intended use ofPackageName:
and the fact that it can be a line comprising multiple words.AppInformation
block.PackageName:
only deviates in a single letter from the tagPackagerName:
, making both of them easy to misread or mistype.Thus the
PackageName:
tag in the SailfishOS:Chum metadata specification is renamed tosimplyPackageTitle:
orTitle:
.Lacking versioning
^[0-9]+\.[0-9]+\.[0-9]+$
.Thus a new tagChumVersion:
is introduced. Its value must conform to^[0-9]+[0-9]+[0-9]+$
. The initial value for this revision of the SailfishOS:Chum metadata specification is0.2.0
. Any SailfishOS:Chum metadata without aChumVersion:
tag will be treated as adhering to the original SailfishOS:Chum metadata specification, as if theChumVersion:
tag is set to0.1.0
.The original SailfishOS:Chum metadata definition is called "version 0", the one which introduces these four new tags is called "version 1". Due to its informal nature it is called "SailfishOS:Chum metadata definition", not "metadata specification".
Migration
rpmlint
and prevent editors from highlighting RPM keywords incorrectly, which both further contributes to confusing developers. Currently no necessity exists to invalidate tags defined in the original version of the SailfishOS:Chum metadata specification, only aforementioned three tags become deprecated with the release of this specification.Implementation
@nephros implemented these changes in the source code of the SailfishOS:Chum GUI application (no need to rush executing this, primarily I would like to receive an "O.K."), so I created a pull request for the SailfishOS:Chum metadata specification with these changes, which can be reviewed. I also suggest to make obvious in the source code, which tags are the deprecated ones and which are the current ones, either by comments or coding (edit: well done by @nephros).
The text was updated successfully, but these errors were encountered: