Giter Site home page Giter Site logo

Comments (5)

ximion avatar ximion commented on June 9, 2024

While AppStream historically allows hyphens in component-IDs, today we try to align the component-ID with other commonly used IDs for the application, like the AppID and D-Bus interface names. The latter is especially relevant because many new apps support being launched by D-Bus (see https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html#dbus ).
The benefit of having only one name is obviously to reduce confusion and needless renaming. So, while AppStream does support hyphens, D-Bus doesn't (and also no parts of the string starting with numbers). We can't remove support for hyphens from AppStream completely, as that would break backwards compatibility, but for new metadata we strongly discourage using them, and appstreamcli validate will throw an INFO-type hint if your component-ID contains one.
You can read more about this in the specification, see the info-box at https://www.freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-id-generic

I hope that clarifies things :-)

from metainfocreator.

ximion avatar ximion commented on June 9, 2024

Btw, your ID could be io.github.jacalz.wormhole_gui or maybe io.github.jacalz.wormholegui. In the past, there was some debate around using the com.github namespace, as that would be reserved for GitHub apps themselves, while user-created stuff would be under io.github, but I do not recall anyone from GitHub ever weighing in on that discussion. So, using either is probably fine (the metainfo-creator will generate the .io variant regardless after entering the URL, just in case).

from metainfocreator.

Jacalz avatar Jacalz commented on June 9, 2024

Thanks for taking your time with the detailed answer. It certainly does clarify things a lot. It is greatly appreciated 👍
Yeah, you are probably right that it makes more sense to use io.github over com.github and it makes even more sense since I am planning on creating my own jacalz.github.io website.

There is one issue though, fyne (the ui toolkit that I used for creating the application) uses the application id in it's local storage of settings. The problem is that just moving over to io.github.jacalz.wormhole_gui would be a breaking change as all the user's settings would be lost. That would warrant a 3.0.0 release, which feels a bit drastic when I recently released 2.0.0. I understand that this probably isn't something you would suggest, but would it work to create the metadata as com.github.jacalz.wormhole_gui and then manually rename and modify the file as com.github.jacalz.wormhole-gui until I can change the id entirely? As my software is cross-platform (thus no dbus support), it could work as a temporary solution?

from metainfocreator.

ximion avatar ximion commented on June 9, 2024

You don't have to have your component-ID match all the other IDs - it's certainly nicer that way, but if doing so would result in breakage, it's better to have two separate IDs (ideally only temporarily).
So you could give your metadata an io.github.jacalz.wormhole_gui component-ID and just leave all other identifier as they are (you could even have a component-ID with a hyphen, but I would advise against that, just to be future-proof).

For AppStream, that ID is really only just an identification string that is used to make your app uniquely known to operating systems and software centers, and is used to associate extra data (like ratings and reviews) with it. It's not, unlike with D-Bus, used for any code generation and may differ from other IDs used in the app with the only drawback of then having in-app ID inconsistencies that may confuse the developer :-P

from metainfocreator.

Jacalz avatar Jacalz commented on June 9, 2024

Alright. Thank you for the response 🙂

from metainfocreator.

Related Issues (11)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.