[PATCH] Blender should supply an AppStream metadata file to downstream packagers #53611

Closed
opened 2017-12-22 00:09:05 +01:00 by Nate Graham · 11 comments

Blender does not provide an AppStream metadata file. This makes life harder for downstream packagers like Linux distros and Flathub, since each one of them must re-invent the wheel with their own information about Blender. This also fragments Blender's branding because it gives up control of key information about the software to others. If you provided an AppStream metadata file, downstream packagers would use it and you would remain in more control of your branding and presentation on those platforms.

I'm attaching an AppStream file you can use. Please feel free to incorporate this file and update it accordingly for future releases. This makes life easier for downstream packagers like Linux distros and Flathub.

org.blender.Blender.appdata.xml

Note that the text in this file can be translated. For an example, see https://cgit.kde.org/krita.git/tree/krita/org.kde.krita.appdata.xml?id=390f8d72a559575e7179287acc6d238c7b36a3bb

Blender does not provide an AppStream metadata file. This makes life harder for downstream packagers like Linux distros and Flathub, since each one of them must re-invent the wheel with their own information about Blender. This also fragments Blender's branding because it gives up control of key information about the software to others. If you provided an AppStream metadata file, downstream packagers would use it and you would remain in more control of your branding and presentation on those platforms. I'm attaching an AppStream file you can use. Please feel free to incorporate this file and update it accordingly for future releases. This makes life easier for downstream packagers like Linux distros and Flathub. [org.blender.Blender.appdata.xml](https://archive.blender.org/developer/F1999109/org.blender.Blender.appdata.xml) Note that the text in this file can be translated. For an example, see https://cgit.kde.org/krita.git/tree/krita/org.kde.krita.appdata.xml?id=390f8d72a559575e7179287acc6d238c7b36a3bb
Author

Added subscriber: @ngraham

Added subscriber: @ngraham
Nate Graham changed title from Blender desktop file doesn't define an AppStream ID (should be "<id>org.blender.Blender</id>") to Blender doesn't define an AppStream ID (should be "org.blender.Blender") 2017-12-22 00:42:57 +01:00
Nate Graham changed title from Blender doesn't define an AppStream ID (should be "org.blender.Blender") to [PATCH] Blender should supply an AppStream metadata file to downstream packagers 2017-12-23 17:29:38 +01:00

Added subscriber: @VukGardasevic

Added subscriber: @VukGardasevic

Does the readme.html already provides the necessary information about the release? Could that be parsed? What formats are needed and are they standardized between different distros and packages?

Does the `readme.html` already provides the necessary information about the release? Could that be parsed? What formats are needed and are they standardized between different distros and packages?
Author

Parsing the readme.html file to generate this file (especially the <release> tags) is probably possible, but that would unfortunately have to be acocmplished through some custom tooling on your side.

An AppStream file actually is the standardized format between distros and packages. Most Linux software developers provides one for their software at this point, because it makes life for downstream packagers, and also gives developers like you better control over how information about your software is delivered to users. You get to control the branding, screenshots, description, release notes, etc, rather than leaving this up to downstream packagers.

It also ensures that when Blender is available through multiple sources (e.g. Flathub and distro packages), software center apps like GNOME Software and KDE Discover are able to de-duplicate them correctly and show a nice "which source do you want to install this from" UI rather than confusingly and erroneously showing multiple versions of the app, like this:

Screenshot_20171223_190542.png

Relevant information:

Parsing the readme.html file to generate this file (especially the `<release>` tags) is probably possible, but that would unfortunately have to be acocmplished through some custom tooling on your side. An AppStream file actually *is* the standardized format between distros and packages. Most Linux software developers provides one for their software at this point, because it makes life for downstream packagers, and also gives developers like you better control over how information about your software is delivered to users. You get to control the branding, screenshots, description, release notes, etc, rather than leaving this up to downstream packagers. It also ensures that when Blender is available through multiple sources (e.g. Flathub and distro packages), software center apps like GNOME Software and KDE Discover are able to de-duplicate them correctly and show a nice "which source do you want to install this from" UI rather than confusingly and erroneously showing multiple versions of the app, like this: ![Screenshot_20171223_190542.png](https://archive.blender.org/developer/F1509005/Screenshot_20171223_190542.png) Relevant information: - https://www.freedesktop.org/wiki/Distributions/AppStream/ - https://www.freedesktop.org/software/appstream/docs/chap-Metadata.html#sect-Metadata-GenericComponent
Author

FWIW after asking around, a lot of projects are using the AppStream file as the canonical source of truth, and then generating other files from that.

FWIW after asking around, a lot of projects are using the AppStream file as the canonical source of truth, and then generating other files from that.

Added subscriber: @Januz

Added subscriber: @Januz
Author

Friendly ping!

Friendly ping!

Hey @ngraham! It'd be better if you post this via differential (like in KDE's phab). I can do it for you if you don't want to mess with Blender's repo.

Also there's a couple of errors in the xml file:

  • ID tag closed with a li tag on line 9
  • Double quotes on line 16

For the update_contact tag you should probably ask in the mailing list, #blendercoders (freenode) or the differential revision.

Hey @ngraham! It'd be better if you post this via differential (like in KDE's phab). I can do it for you if you don't want to mess with Blender's repo. Also there's a couple of errors in the xml file: - ID tag closed with a li tag on line 9 - Double quotes on line 16 For the update_contact tag you should probably ask in the mailing list, #blendercoders (freenode) or the differential revision.
Author

@Januz that would be lovely, thanks. I didn't submit this using differential because I wanted to give the Blender developers flexibility regarding where to put it and what tweaks they might want to make.

Also, thanks for pointing out the errors in the file. I submitted this a while ago, before I knew about appstreamcli validate. I've attached a new version that has valid XML and passes appstreamcli validate.

@Januz that would be lovely, thanks. I didn't submit this using differential because I wanted to give the Blender developers flexibility regarding where to put it and what tweaks they might want to make. Also, thanks for pointing out the errors in the file. I submitted this a while ago, before I knew about `appstreamcli validate.` I've attached a new version that has valid XML and passes `appstreamcli validate.`
Author

Changed status from 'Open' to: 'Resolved'

Changed status from 'Open' to: 'Resolved'
Nate Graham self-assigned this 2018-02-13 06:25:01 +01:00
Author
[D3025: Add appdata.xml file for Linux packagers](https://archive.blender.org/developer/D3025) has landed, so this is done!
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#53611
No description provided.