[AppStream] Dashes and underscores in desktop file IDs

Jasper St. Pierre jstpierre at mecheye.net
Mon Oct 16 17:17:01 UTC 2017


The unfortunate side of things is that systemd uses an _ as an escape
character for hex-encoding, and this proposal is incompatible with that,
since we lose that ability. I certainly don't want to bikeshed too much,
but I kind of like using _ for hex escapes more. It's uglier, but more
universal.

On Mon, Oct 16, 2017 at 5:54 AM, Simon McVittie <smcv at collabora.com> wrote:

> On Mon, 16 Oct 2017 at 14:16:05 +0200, Matthias Klumpp wrote:
> > Is there a chance that DBus and other tools can get rid of the naming
> > limitations anytime soon? Or does the "no-digit-start, no-dash" rule
> > have to stay forever?
>
> Given the number of D-Bus implementations floating around, and the
> historical behaviour of the reference implementation (libdbus enforces
> syntax rules strictly but historically didn't have public API to do
> the necessary checks, so every language binding had to NIH the correct
> validation), I think that would be an incompatible change of the sort
> that we Do Not Do.
>
> Also, encouraging underscores and deprecating dashes would align
> the recommended character set for D-Bus well-known names with the
> required character set for D-Bus interface names, which are more
> strict than well-known names (and in particular have never allowed
> dashes). Interface names are designed to be usable in code generation
> (e.g. some C++ bindings would map D-Bus com.example.MyInterface.MyMethod
> to C++ com::example::MyInterface::MyMethod) which I believe is why we
> never allowed dashes and leading digits there, and should not in future.
>
> > Urgh, that is definitely a bug, AppStream should allow underscores for
> > sure. I will fix that with the next release.
>
> Thanks!
>
> > The AS spec should
> > really allow underscores, because they are an allowed character in
> > domain names, so that part is just a bug, and likely my mistake.
>
> Underscores are an allowed character in the DNS protocol. They are *not*
> an allowed character in domain names[1], and that's why replacing dashes
> with
> underscores does not risk collisions: the owner of awesome-software.com
> is free to use com.awesome_software in their desktop file ID, D-Bus API,
> AppStream etc. in the knowledge that they are not conflicting with the
> owner of awesome_software.com, because awesome_software.com cannot exist.
>
> (This is also why underscores are used in DNS SRV: they're allowed in
> the DNS protocol, but cannot appear in hostnames or domain names, so
> the special SRV DNS names like _ipp._tcp.example.com cannot collide with
> anyone's hostname or domain name.)
>
> However, underscores are an allowed character in D-Bus well-known names,
> and the recommended syntax for desktop file IDs is a D-Bus well-known name,
> which suggests that designs that reflect or mimic desktop file IDs (like
> the AppStream <id>) should probably allow underscores anyway.
>
>     smcv
>
> [1] https://tools.ietf.org/html/rfc1035 "The labels must follow the
>     rules for ARPANET host names. They must start with a letter, end with a
>     letter or digit, and have as interior characters only letters, digits,
>     and hyphen."
> _______________________________________________
> Flatpak mailing list
> Flatpak at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/flatpak
>



-- 
  Jasper
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/flatpak/attachments/20171016/568a60fb/attachment.html>


More information about the Flatpak mailing list