AppStream & Listaller Matthias Klumpp mak@debian.org - - PowerPoint PPT Presentation

appstream listaller
SMART_READER_LITE
LIVE PREVIEW

AppStream & Listaller Matthias Klumpp mak@debian.org - - PowerPoint PPT Presentation

The Problem AppStream Listaller Conclusion AppStream & Listaller Matthias Klumpp mak@debian.org matthias@tenstral.net February 2014 The Problem AppStream Listaller Conclusion Who am I? PackageKit Developer Debian Developer


slide-1
SLIDE 1

The Problem AppStream Listaller Conclusion

AppStream & Listaller

Matthias Klumpp

mak@debian.org matthias@tenstral.net

February 2014

slide-2
SLIDE 2

The Problem AppStream Listaller Conclusion

Who am I?

PackageKit Developer Debian Developer Contributor to KDE, GNOME AppStream and Listaller maintainer

slide-3
SLIDE 3

The Problem AppStream Listaller Conclusion

Outline of the Talk

1

The Problem

2

AppStream

3

Listaller

4

Conclusion

slide-4
SLIDE 4

The Problem AppStream Listaller Conclusion

What is wrong with application management?

Content of distribution’s software repositories is displayed in form of packages

Unclear for non-technical users: What is a package? Why are there so many of them?

Existing software-centers are distribution specific and not well integrated with their desktop environments Applications are not presented well to the user

localization missing, bad or no screenshots, missing urls, inconsistencies between distributions, ...

No interaction possible

We want user ratings, reviews, maybe an easy way to report bugs in the software-center, etc.

slide-5
SLIDE 5

The Problem AppStream Listaller Conclusion

What is wrong with application management?

Content of distribution’s software repositories is displayed in form of packages

Unclear for non-technical users: What is a package? Why are there so many of them?

Existing software-centers are distribution specific and not well integrated with their desktop environments Applications are not presented well to the user

localization missing, bad or no screenshots, missing urls, inconsistencies between distributions, ...

No interaction possible

We want user ratings, reviews, maybe an easy way to report bugs in the software-center, etc.

slide-6
SLIDE 6

The Problem AppStream Listaller Conclusion

What is wrong with application management?

Content of distribution’s software repositories is displayed in form of packages

Unclear for non-technical users: What is a package? Why are there so many of them?

Existing software-centers are distribution specific and not well integrated with their desktop environments Applications are not presented well to the user

localization missing, bad or no screenshots, missing urls, inconsistencies between distributions, ...

No interaction possible

We want user ratings, reviews, maybe an easy way to report bugs in the software-center, etc.

slide-7
SLIDE 7

The Problem AppStream Listaller Conclusion

What is wrong with application management?

Content of distribution’s software repositories is displayed in form of packages

Unclear for non-technical users: What is a package? Why are there so many of them?

Existing software-centers are distribution specific and not well integrated with their desktop environments Applications are not presented well to the user

localization missing, bad or no screenshots, missing urls, inconsistencies between distributions, ...

No interaction possible

We want user ratings, reviews, maybe an easy way to report bugs in the software-center, etc.

slide-8
SLIDE 8

The Problem AppStream Listaller Conclusion

What is wrong with application management?

Content of distribution’s software repositories is displayed in form of packages

Unclear for non-technical users: What is a package? Why are there so many of them?

Existing software-centers are distribution specific and not well integrated with their desktop environments Applications are not presented well to the user

localization missing, bad or no screenshots, missing urls, inconsistencies between distributions, ...

No interaction possible

We want user ratings, reviews, maybe an easy way to report bugs in the software-center, etc.

slide-9
SLIDE 9

The Problem AppStream Listaller Conclusion

What is wrong with application management?

Content of distribution’s software repositories is displayed in form of packages

Unclear for non-technical users: What is a package? Why are there so many of them?

Existing software-centers are distribution specific and not well integrated with their desktop environments Applications are not presented well to the user

localization missing, bad or no screenshots, missing urls, inconsistencies between distributions, ...

No interaction possible

We want user ratings, reviews, maybe an easy way to report bugs in the software-center, etc.

slide-10
SLIDE 10

The Problem AppStream Listaller Conclusion

What is wrong with application management?

Content of distribution’s software repositories is displayed in form of packages

Unclear for non-technical users: What is a package? Why are there so many of them?

Existing software-centers are distribution specific and not well integrated with their desktop environments Applications are not presented well to the user

localization missing, bad or no screenshots, missing urls, inconsistencies between distributions, ...

No interaction possible

We want user ratings, reviews, maybe an easy way to report bugs in the software-center, etc.

slide-11
SLIDE 11

The Problem AppStream Listaller Conclusion

What is wrong with application distribution?

PPAs/Repositories are insecure: 3rd-party applications are installed with root permission, may override system components, break distribution upgrades, ... Handling of PPAs is not very simple for users PPAs are distribution-specific: Many 3rd-party apps are available for e.g. Ubuntu, while other distributions need their

  • wn repos

PPAs have a complex structure and are an overkill if people just want to distribute an app on Linux Binary installers don’t integrate well and are difficult to

  • handle. If executed as root, they are a potential security risk

We need a simple and secure cross-desktop solution to install 3rd-party applications, which integrates well with the rest of the system

slide-12
SLIDE 12

The Problem AppStream Listaller Conclusion

What is wrong with application distribution?

PPAs/Repositories are insecure: 3rd-party applications are installed with root permission, may override system components, break distribution upgrades, ... Handling of PPAs is not very simple for users PPAs are distribution-specific: Many 3rd-party apps are available for e.g. Ubuntu, while other distributions need their

  • wn repos

PPAs have a complex structure and are an overkill if people just want to distribute an app on Linux Binary installers don’t integrate well and are difficult to

  • handle. If executed as root, they are a potential security risk

We need a simple and secure cross-desktop solution to install 3rd-party applications, which integrates well with the rest of the system

slide-13
SLIDE 13

The Problem AppStream Listaller Conclusion

What is wrong with application distribution?

PPAs/Repositories are insecure: 3rd-party applications are installed with root permission, may override system components, break distribution upgrades, ... Handling of PPAs is not very simple for users PPAs are distribution-specific: Many 3rd-party apps are available for e.g. Ubuntu, while other distributions need their

  • wn repos

PPAs have a complex structure and are an overkill if people just want to distribute an app on Linux Binary installers don’t integrate well and are difficult to

  • handle. If executed as root, they are a potential security risk

We need a simple and secure cross-desktop solution to install 3rd-party applications, which integrates well with the rest of the system

slide-14
SLIDE 14

The Problem AppStream Listaller Conclusion

What is wrong with application distribution?

PPAs/Repositories are insecure: 3rd-party applications are installed with root permission, may override system components, break distribution upgrades, ... Handling of PPAs is not very simple for users PPAs are distribution-specific: Many 3rd-party apps are available for e.g. Ubuntu, while other distributions need their

  • wn repos

PPAs have a complex structure and are an overkill if people just want to distribute an app on Linux Binary installers don’t integrate well and are difficult to

  • handle. If executed as root, they are a potential security risk

We need a simple and secure cross-desktop solution to install 3rd-party applications, which integrates well with the rest of the system

slide-15
SLIDE 15

The Problem AppStream Listaller Conclusion

What is wrong with application distribution?

PPAs/Repositories are insecure: 3rd-party applications are installed with root permission, may override system components, break distribution upgrades, ... Handling of PPAs is not very simple for users PPAs are distribution-specific: Many 3rd-party apps are available for e.g. Ubuntu, while other distributions need their

  • wn repos

PPAs have a complex structure and are an overkill if people just want to distribute an app on Linux Binary installers don’t integrate well and are difficult to

  • handle. If executed as root, they are a potential security risk

We need a simple and secure cross-desktop solution to install 3rd-party applications, which integrates well with the rest of the system

slide-16
SLIDE 16

The Problem AppStream Listaller Conclusion

What is wrong with application distribution?

PPAs/Repositories are insecure: 3rd-party applications are installed with root permission, may override system components, break distribution upgrades, ... Handling of PPAs is not very simple for users PPAs are distribution-specific: Many 3rd-party apps are available for e.g. Ubuntu, while other distributions need their

  • wn repos

PPAs have a complex structure and are an overkill if people just want to distribute an app on Linux Binary installers don’t integrate well and are difficult to

  • handle. If executed as root, they are a potential security risk

We need a simple and secure cross-desktop solution to install 3rd-party applications, which integrates well with the rest of the system

slide-17
SLIDE 17

The Problem AppStream Listaller Conclusion

What is wrong with application distribution?

PPAs/Repositories are insecure: 3rd-party applications are installed with root permission, may override system components, break distribution upgrades, ... Handling of PPAs is not very simple for users PPAs are distribution-specific: Many 3rd-party apps are available for e.g. Ubuntu, while other distributions need their

  • wn repos

PPAs have a complex structure and are an overkill if people just want to distribute an app on Linux Binary installers don’t integrate well and are difficult to

  • handle. If executed as root, they are a potential security risk

We need a simple and secure cross-desktop solution to install 3rd-party applications, which integrates well with the rest of the system

slide-18
SLIDE 18

The Problem AppStream Listaller Conclusion

Two independent projects

AppStream

Cross-distro specifications for building software-center applications Metadata / database specs for distributors Some (optional) new metadata for upstream projects Interactive features (Ratings & Reviews, ...)

Listaller

Generates cross-distro application packages Tools for app developers to make their app work on many distros Additional specs to enhance “component metadata” in distributions Optional component, requires PackageKit (and ideally AppStream) to work

slide-19
SLIDE 19

The Problem AppStream Listaller Conclusion

Two independent projects

AppStream

Cross-distro specifications for building software-center applications Metadata / database specs for distributors Some (optional) new metadata for upstream projects Interactive features (Ratings & Reviews, ...)

Listaller

Generates cross-distro application packages Tools for app developers to make their app work on many distros Additional specs to enhance “component metadata” in distributions Optional component, requires PackageKit (and ideally AppStream) to work

slide-20
SLIDE 20

The Problem AppStream Listaller Conclusion

Two independent projects

AppStream

Cross-distro specifications for building software-center applications Metadata / database specs for distributors Some (optional) new metadata for upstream projects Interactive features (Ratings & Reviews, ...)

Listaller

Generates cross-distro application packages Tools for app developers to make their app work on many distros Additional specs to enhance “component metadata” in distributions Optional component, requires PackageKit (and ideally AppStream) to work

slide-21
SLIDE 21

The Problem AppStream Listaller Conclusion

Two independent projects

AppStream

Cross-distro specifications for building software-center applications Metadata / database specs for distributors Some (optional) new metadata for upstream projects Interactive features (Ratings & Reviews, ...)

Listaller

Generates cross-distro application packages Tools for app developers to make their app work on many distros Additional specs to enhance “component metadata” in distributions Optional component, requires PackageKit (and ideally AppStream) to work

slide-22
SLIDE 22

The Problem AppStream Listaller Conclusion

Two independent projects

AppStream

Cross-distro specifications for building software-center applications Metadata / database specs for distributors Some (optional) new metadata for upstream projects Interactive features (Ratings & Reviews, ...)

Listaller

Generates cross-distro application packages Tools for app developers to make their app work on many distros Additional specs to enhance “component metadata” in distributions Optional component, requires PackageKit (and ideally AppStream) to work

slide-23
SLIDE 23

The Problem AppStream Listaller Conclusion

Two independent projects

AppStream

Cross-distro specifications for building software-center applications Metadata / database specs for distributors Some (optional) new metadata for upstream projects Interactive features (Ratings & Reviews, ...)

Listaller

Generates cross-distro application packages Tools for app developers to make their app work on many distros Additional specs to enhance “component metadata” in distributions Optional component, requires PackageKit (and ideally AppStream) to work

slide-24
SLIDE 24

The Problem AppStream Listaller Conclusion

Two independent projects

AppStream

Cross-distro specifications for building software-center applications Metadata / database specs for distributors Some (optional) new metadata for upstream projects Interactive features (Ratings & Reviews, ...)

Listaller

Generates cross-distro application packages Tools for app developers to make their app work on many distros Additional specs to enhance “component metadata” in distributions Optional component, requires PackageKit (and ideally AppStream) to work

slide-25
SLIDE 25

The Problem AppStream Listaller Conclusion

Two independent projects

AppStream

Cross-distro specifications for building software-center applications Metadata / database specs for distributors Some (optional) new metadata for upstream projects Interactive features (Ratings & Reviews, ...)

Listaller

Generates cross-distro application packages Tools for app developers to make their app work on many distros Additional specs to enhance “component metadata” in distributions Optional component, requires PackageKit (and ideally AppStream) to work

slide-26
SLIDE 26

The Problem AppStream Listaller Conclusion

AppInstaller meeting 2011

Fedora, Debian, OpenSUSE, Mageia, Ubuntu, KDE, Freedesktop

slide-27
SLIDE 27

The Problem AppStream Listaller Conclusion

AppStream Concept

slide-28
SLIDE 28

The Problem AppStream Listaller Conclusion

AppStream Concept

slide-29
SLIDE 29

The Problem AppStream Listaller Conclusion

AppStream XML

AppStream XML contains meta-data for each application, such as name, XML!? Debian FTP-Masters prefer YAML, adding XML to the metadata set is discouraged. A more general solution is wanted too. Problem Where do we get the data from if the distribution does not have it already in it’s package metadata or it is missing from desktop-files? Where do we get good screenshots from?

slide-30
SLIDE 30

The Problem AppStream Listaller Conclusion

AppStream XML

AppStream XML contains meta-data for each application, such as name, unique app-id (desktop file), XML!? Debian FTP-Masters prefer YAML, adding XML to the metadata set is discouraged. A more general solution is wanted too. Problem Where do we get the data from if the distribution does not have it already in it’s package metadata or it is missing from desktop-files? Where do we get good screenshots from?

slide-31
SLIDE 31

The Problem AppStream Listaller Conclusion

AppStream XML

AppStream XML contains meta-data for each application, such as name, unique app-id (desktop file), summary, XML!? Debian FTP-Masters prefer YAML, adding XML to the metadata set is discouraged. A more general solution is wanted too. Problem Where do we get the data from if the distribution does not have it already in it’s package metadata or it is missing from desktop-files? Where do we get good screenshots from?

slide-32
SLIDE 32

The Problem AppStream Listaller Conclusion

AppStream XML

AppStream XML contains meta-data for each application, such as name, unique app-id (desktop file), summary, description, XML!? Debian FTP-Masters prefer YAML, adding XML to the metadata set is discouraged. A more general solution is wanted too. Problem Where do we get the data from if the distribution does not have it already in it’s package metadata or it is missing from desktop-files? Where do we get good screenshots from?

slide-33
SLIDE 33

The Problem AppStream Listaller Conclusion

AppStream XML

AppStream XML contains meta-data for each application, such as name, unique app-id (desktop file), summary, description, icon, XML!? Debian FTP-Masters prefer YAML, adding XML to the metadata set is discouraged. A more general solution is wanted too. Problem Where do we get the data from if the distribution does not have it already in it’s package metadata or it is missing from desktop-files? Where do we get good screenshots from?

slide-34
SLIDE 34

The Problem AppStream Listaller Conclusion

AppStream XML

AppStream XML contains meta-data for each application, such as name, unique app-id (desktop file), summary, description, icon, author data, XML!? Debian FTP-Masters prefer YAML, adding XML to the metadata set is discouraged. A more general solution is wanted too. Problem Where do we get the data from if the distribution does not have it already in it’s package metadata or it is missing from desktop-files? Where do we get good screenshots from?

slide-35
SLIDE 35

The Problem AppStream Listaller Conclusion

AppStream XML

AppStream XML contains meta-data for each application, such as name, unique app-id (desktop file), summary, description, icon, author data, project group, XML!? Debian FTP-Masters prefer YAML, adding XML to the metadata set is discouraged. A more general solution is wanted too. Problem Where do we get the data from if the distribution does not have it already in it’s package metadata or it is missing from desktop-files? Where do we get good screenshots from?

slide-36
SLIDE 36

The Problem AppStream Listaller Conclusion

AppStream XML

AppStream XML contains meta-data for each application, such as name, unique app-id (desktop file), summary, description, icon, author data, project group, categories, XML!? Debian FTP-Masters prefer YAML, adding XML to the metadata set is discouraged. A more general solution is wanted too. Problem Where do we get the data from if the distribution does not have it already in it’s package metadata or it is missing from desktop-files? Where do we get good screenshots from?

slide-37
SLIDE 37

The Problem AppStream Listaller Conclusion

AppStream XML

AppStream XML contains meta-data for each application, such as name, unique app-id (desktop file), summary, description, icon, author data, project group, categories, mimetypes, XML!? Debian FTP-Masters prefer YAML, adding XML to the metadata set is discouraged. A more general solution is wanted too. Problem Where do we get the data from if the distribution does not have it already in it’s package metadata or it is missing from desktop-files? Where do we get good screenshots from?

slide-38
SLIDE 38

The Problem AppStream Listaller Conclusion

AppStream XML

AppStream XML contains meta-data for each application, such as name, unique app-id (desktop file), summary, description, icon, author data, project group, categories, mimetypes, keywords, XML!? Debian FTP-Masters prefer YAML, adding XML to the metadata set is discouraged. A more general solution is wanted too. Problem Where do we get the data from if the distribution does not have it already in it’s package metadata or it is missing from desktop-files? Where do we get good screenshots from?

slide-39
SLIDE 39

The Problem AppStream Listaller Conclusion

AppStream XML

AppStream XML contains meta-data for each application, such as name, unique app-id (desktop file), summary, description, icon, author data, project group, categories, mimetypes, keywords, screenshot references and descriptions, XML!? Debian FTP-Masters prefer YAML, adding XML to the metadata set is discouraged. A more general solution is wanted too. Problem Where do we get the data from if the distribution does not have it already in it’s package metadata or it is missing from desktop-files? Where do we get good screenshots from?

slide-40
SLIDE 40

The Problem AppStream Listaller Conclusion

AppStream XML

AppStream XML contains meta-data for each application, such as name, unique app-id (desktop file), summary, description, icon, author data, project group, categories, mimetypes, keywords, screenshot references and descriptions, etc. XML!? Debian FTP-Masters prefer YAML, adding XML to the metadata set is discouraged. A more general solution is wanted too. Problem Where do we get the data from if the distribution does not have it already in it’s package metadata or it is missing from desktop-files? Where do we get good screenshots from?

slide-41
SLIDE 41

The Problem AppStream Listaller Conclusion

AppStream XML

AppStream XML contains meta-data for each application, such as name, unique app-id (desktop file), summary, description, icon, author data, project group, categories, mimetypes, keywords, screenshot references and descriptions, etc. It also allows localization of some data XML!? Debian FTP-Masters prefer YAML, adding XML to the metadata set is discouraged. A more general solution is wanted too. Problem Where do we get the data from if the distribution does not have it already in it’s package metadata or it is missing from desktop-files? Where do we get good screenshots from?

slide-42
SLIDE 42

The Problem AppStream Listaller Conclusion

AppStream XML

AppStream XML contains meta-data for each application, such as name, unique app-id (desktop file), summary, description, icon, author data, project group, categories, mimetypes, keywords, screenshot references and descriptions, etc. It also allows localization of some data XML!? Debian FTP-Masters prefer YAML, adding XML to the metadata set is discouraged. A more general solution is wanted too. Problem Where do we get the data from if the distribution does not have it already in it’s package metadata or it is missing from desktop-files? Where do we get good screenshots from?

slide-43
SLIDE 43

The Problem AppStream Listaller Conclusion

AppStream XML

AppStream XML contains meta-data for each application, such as name, unique app-id (desktop file), summary, description, icon, author data, project group, categories, mimetypes, keywords, screenshot references and descriptions, etc. It also allows localization of some data XML!? Debian FTP-Masters prefer YAML, adding XML to the metadata set is discouraged. A more general solution is wanted too. Problem Where do we get the data from if the distribution does not have it already in it’s package metadata or it is missing from desktop-files? Where do we get good screenshots from?

slide-44
SLIDE 44

The Problem AppStream Listaller Conclusion

AppData

Small XML file shipped with upstream project Subset of the AppStream XML specification Contains screenshot URLs to 3rd-party servers Is localized upstream No requirement to implement AppStream! It is just additional metadata to extend or improve existing data We would like to have upstreams ship the file to improve the quality of data which is used to present apps in a software center External content (like screenshots) is cached and verified on the distribution’s server

slide-45
SLIDE 45

The Problem AppStream Listaller Conclusion

AppData

Small XML file shipped with upstream project Subset of the AppStream XML specification Contains screenshot URLs to 3rd-party servers Is localized upstream No requirement to implement AppStream! It is just additional metadata to extend or improve existing data We would like to have upstreams ship the file to improve the quality of data which is used to present apps in a software center External content (like screenshots) is cached and verified on the distribution’s server

slide-46
SLIDE 46

The Problem AppStream Listaller Conclusion

AppData

Small XML file shipped with upstream project Subset of the AppStream XML specification Contains screenshot URLs to 3rd-party servers Is localized upstream No requirement to implement AppStream! It is just additional metadata to extend or improve existing data We would like to have upstreams ship the file to improve the quality of data which is used to present apps in a software center External content (like screenshots) is cached and verified on the distribution’s server

slide-47
SLIDE 47

The Problem AppStream Listaller Conclusion

AppData

Small XML file shipped with upstream project Subset of the AppStream XML specification Contains screenshot URLs to 3rd-party servers Is localized upstream No requirement to implement AppStream! It is just additional metadata to extend or improve existing data We would like to have upstreams ship the file to improve the quality of data which is used to present apps in a software center External content (like screenshots) is cached and verified on the distribution’s server

slide-48
SLIDE 48

The Problem AppStream Listaller Conclusion

AppData

Small XML file shipped with upstream project Subset of the AppStream XML specification Contains screenshot URLs to 3rd-party servers Is localized upstream No requirement to implement AppStream! It is just additional metadata to extend or improve existing data We would like to have upstreams ship the file to improve the quality of data which is used to present apps in a software center External content (like screenshots) is cached and verified on the distribution’s server

slide-49
SLIDE 49

The Problem AppStream Listaller Conclusion

AppData

Small XML file shipped with upstream project Subset of the AppStream XML specification Contains screenshot URLs to 3rd-party servers Is localized upstream No requirement to implement AppStream! It is just additional metadata to extend or improve existing data We would like to have upstreams ship the file to improve the quality of data which is used to present apps in a software center External content (like screenshots) is cached and verified on the distribution’s server

slide-50
SLIDE 50

The Problem AppStream Listaller Conclusion

AppData

Small XML file shipped with upstream project Subset of the AppStream XML specification Contains screenshot URLs to 3rd-party servers Is localized upstream No requirement to implement AppStream! It is just additional metadata to extend or improve existing data We would like to have upstreams ship the file to improve the quality of data which is used to present apps in a software center External content (like screenshots) is cached and verified on the distribution’s server

slide-51
SLIDE 51

The Problem AppStream Listaller Conclusion

Some metadata statistics

Fedora ships AppStream since v20 Applications in Fedora with: Long descriptions: 170 (9%) Keywords: 95 (5%) Categories: 1744 (98%) Screenshots: 143 (8%) GNOME applications with AppData: 60 (50%) KDE applications with AppData: 1 (1%) XFCE applications with AppData: 0 (0%)

http://alt.fedoraproject.org/pub/alt/screenshots/f20/status.html

slide-52
SLIDE 52

The Problem AppStream Listaller Conclusion

Some metadata statistics

Fedora ships AppStream since v20 Applications in Fedora with: Long descriptions: 170 (9%) Keywords: 95 (5%) Categories: 1744 (98%) Screenshots: 143 (8%) GNOME applications with AppData: 60 (50%) KDE applications with AppData: 1 (1%) XFCE applications with AppData: 0 (0%)

http://alt.fedoraproject.org/pub/alt/screenshots/f20/status.html

slide-53
SLIDE 53

The Problem AppStream Listaller Conclusion

Some metadata statistics

Fedora ships AppStream since v20 Applications in Fedora with: Long descriptions: 170 (9%) Keywords: 95 (5%) Categories: 1744 (98%) Screenshots: 143 (8%) GNOME applications with AppData: 60 (50%) KDE applications with AppData: 1 (1%) XFCE applications with AppData: 0 (0%)

http://alt.fedoraproject.org/pub/alt/screenshots/f20/status.html

slide-54
SLIDE 54

The Problem AppStream Listaller Conclusion

Some metadata statistics

Fedora ships AppStream since v20 Applications in Fedora with: Long descriptions: 170 (9%) Keywords: 95 (5%) Categories: 1744 (98%) Screenshots: 143 (8%) GNOME applications with AppData: 60 (50%) KDE applications with AppData: 1 (1%) XFCE applications with AppData: 0 (0%)

http://alt.fedoraproject.org/pub/alt/screenshots/f20/status.html

slide-55
SLIDE 55

The Problem AppStream Listaller Conclusion

Some metadata statistics

Fedora ships AppStream since v20 Applications in Fedora with: Long descriptions: 170 (9%) Keywords: 95 (5%) Categories: 1744 (98%) Screenshots: 143 (8%) GNOME applications with AppData: 60 (50%) KDE applications with AppData: 1 (1%) XFCE applications with AppData: 0 (0%)

http://alt.fedoraproject.org/pub/alt/screenshots/f20/status.html

slide-56
SLIDE 56

The Problem AppStream Listaller Conclusion

Some metadata statistics

Fedora ships AppStream since v20 Applications in Fedora with: Long descriptions: 170 (9%) Keywords: 95 (5%) Categories: 1744 (98%) Screenshots: 143 (8%) GNOME applications with AppData: 60 (50%) KDE applications with AppData: 1 (1%) XFCE applications with AppData: 0 (0%)

http://alt.fedoraproject.org/pub/alt/screenshots/f20/status.html

slide-57
SLIDE 57

The Problem AppStream Listaller Conclusion

Some metadata statistics

Fedora ships AppStream since v20 Applications in Fedora with: Long descriptions: 170 (9%) Keywords: 95 (5%) Categories: 1744 (98%) Screenshots: 143 (8%) GNOME applications with AppData: 60 (50%) KDE applications with AppData: 1 (1%) XFCE applications with AppData: 0 (0%)

http://alt.fedoraproject.org/pub/alt/screenshots/f20/status.html

slide-58
SLIDE 58

The Problem AppStream Listaller Conclusion

One database to rule them all

In order to make use of AppStream, you have to combine many data sources (and consider fallback solutions) Debian will provide AppStream data in YAML (describing not

  • nly applications, but providing extra archive metadata),

Ubuntu uses an own desktop-file extension, others use XML The AppStream software and libappstream were created to avoid to require every software center to provide parsers to all formats A Xapian database is generated, containing all data for software centers to access libappstream allows acessing the database and various other data sources using a GObject-based API (you don’t have to work with Xapian’s C++ interface)

slide-59
SLIDE 59

The Problem AppStream Listaller Conclusion

One database to rule them all

In order to make use of AppStream, you have to combine many data sources (and consider fallback solutions) Debian will provide AppStream data in YAML (describing not

  • nly applications, but providing extra archive metadata),

Ubuntu uses an own desktop-file extension, others use XML The AppStream software and libappstream were created to avoid to require every software center to provide parsers to all formats A Xapian database is generated, containing all data for software centers to access libappstream allows acessing the database and various other data sources using a GObject-based API (you don’t have to work with Xapian’s C++ interface)

slide-60
SLIDE 60

The Problem AppStream Listaller Conclusion

One database to rule them all

In order to make use of AppStream, you have to combine many data sources (and consider fallback solutions) Debian will provide AppStream data in YAML (describing not

  • nly applications, but providing extra archive metadata),

Ubuntu uses an own desktop-file extension, others use XML The AppStream software and libappstream were created to avoid to require every software center to provide parsers to all formats A Xapian database is generated, containing all data for software centers to access libappstream allows acessing the database and various other data sources using a GObject-based API (you don’t have to work with Xapian’s C++ interface)

slide-61
SLIDE 61

The Problem AppStream Listaller Conclusion

One database to rule them all

In order to make use of AppStream, you have to combine many data sources (and consider fallback solutions) Debian will provide AppStream data in YAML (describing not

  • nly applications, but providing extra archive metadata),

Ubuntu uses an own desktop-file extension, others use XML The AppStream software and libappstream were created to avoid to require every software center to provide parsers to all formats A Xapian database is generated, containing all data for software centers to access libappstream allows acessing the database and various other data sources using a GObject-based API (you don’t have to work with Xapian’s C++ interface)

slide-62
SLIDE 62

The Problem AppStream Listaller Conclusion

One database to rule them all

In order to make use of AppStream, you have to combine many data sources (and consider fallback solutions) Debian will provide AppStream data in YAML (describing not

  • nly applications, but providing extra archive metadata),

Ubuntu uses an own desktop-file extension, others use XML The AppStream software and libappstream were created to avoid to require every software center to provide parsers to all formats A Xapian database is generated, containing all data for software centers to access libappstream allows acessing the database and various other data sources using a GObject-based API (you don’t have to work with Xapian’s C++ interface)

slide-63
SLIDE 63

The Problem AppStream Listaller Conclusion

One database to rule them all

slide-64
SLIDE 64

The Problem AppStream Listaller Conclusion

GNOME? - AppStream status in desktops and distros

GNOME-Software: Implementation of an AppStream-compatible software-center by the GNOME project Fully supported on Fedora, pending on other distributions, blocked on Debian by DEP-11 implementation

slide-65
SLIDE 65

The Problem AppStream Listaller Conclusion

GNOME? - AppStream status in desktops and distros

GNOME-Software: Implementation of an AppStream-compatible software-center by the GNOME project Fully supported on Fedora, pending on other distributions, blocked on Debian by DEP-11 implementation

slide-66
SLIDE 66

The Problem AppStream Listaller Conclusion

KDE? - AppStream status in desktops and distros

Apper: Initial support for AppStream via libappstream, needs work AppData inclusion into KDE projects is currently discussed Possible port of Muon Discover to PackageKit and AppStream

slide-67
SLIDE 67

The Problem AppStream Listaller Conclusion

KDE? - AppStream status in desktops and distros

Apper: Initial support for AppStream via libappstream, needs work AppData inclusion into KDE projects is currently discussed Possible port of Muon Discover to PackageKit and AppStream

slide-68
SLIDE 68

The Problem AppStream Listaller Conclusion

KDE? - AppStream status in desktops and distros

Apper: Initial support for AppStream via libappstream, needs work AppData inclusion into KDE projects is currently discussed Possible port of Muon Discover to PackageKit and AppStream

slide-69
SLIDE 69

The Problem AppStream Listaller Conclusion

AppStream status in desktops and distros

Debian: Work on the universal component-metadata file (defined as DEP-11) has started Ubuntu: Ships AppInstall, which can be consumed by libappstream, but will likely migrate to Debian’s solution Fedora: Ships AppStream XML and GNOME-Software, already supports screenshots OpenSUSE: Works on AppStream XML, work finished? So far, only GNOME has a software-center which fully supports almost everything from the AppStream specification

slide-70
SLIDE 70

The Problem AppStream Listaller Conclusion

AppStream status in desktops and distros

Debian: Work on the universal component-metadata file (defined as DEP-11) has started Ubuntu: Ships AppInstall, which can be consumed by libappstream, but will likely migrate to Debian’s solution Fedora: Ships AppStream XML and GNOME-Software, already supports screenshots OpenSUSE: Works on AppStream XML, work finished? So far, only GNOME has a software-center which fully supports almost everything from the AppStream specification

slide-71
SLIDE 71

The Problem AppStream Listaller Conclusion

AppStream status in desktops and distros

Debian: Work on the universal component-metadata file (defined as DEP-11) has started Ubuntu: Ships AppInstall, which can be consumed by libappstream, but will likely migrate to Debian’s solution Fedora: Ships AppStream XML and GNOME-Software, already supports screenshots OpenSUSE: Works on AppStream XML, work finished? So far, only GNOME has a software-center which fully supports almost everything from the AppStream specification

slide-72
SLIDE 72

The Problem AppStream Listaller Conclusion

AppStream status in desktops and distros

Debian: Work on the universal component-metadata file (defined as DEP-11) has started Ubuntu: Ships AppInstall, which can be consumed by libappstream, but will likely migrate to Debian’s solution Fedora: Ships AppStream XML and GNOME-Software, already supports screenshots OpenSUSE: Works on AppStream XML, work finished? So far, only GNOME has a software-center which fully supports almost everything from the AppStream specification

slide-73
SLIDE 73

The Problem AppStream Listaller Conclusion

AppStream status in desktops and distros

Debian: Work on the universal component-metadata file (defined as DEP-11) has started Ubuntu: Ships AppInstall, which can be consumed by libappstream, but will likely migrate to Debian’s solution Fedora: Ships AppStream XML and GNOME-Software, already supports screenshots OpenSUSE: Works on AppStream XML, work finished? So far, only GNOME has a software-center which fully supports almost everything from the AppStream specification

slide-74
SLIDE 74

The Problem AppStream Listaller Conclusion

Listaller?

Listaller is a complete solution for packaging and distributing 3rd-party applications. It provides tools for building cross-distro applications, creating and signing packages, update management and related features. It is completely invisible to the user on any system using PackageKit. Started in 2008 as an experiment

Covered features of PackageKit and AppStream Switched to PackageKit in 2009

Merged with Autopackage and some other projects in 2010 AppStream was started in 2011, in turn Listaller was rewritten from scratch, dropping duplicate functionality Rewrite finished in 2012, many new concepts were implemented in 2013

slide-75
SLIDE 75

The Problem AppStream Listaller Conclusion

Listaller?

Listaller is a complete solution for packaging and distributing 3rd-party applications. It provides tools for building cross-distro applications, creating and signing packages, update management and related features. It is completely invisible to the user on any system using PackageKit. Started in 2008 as an experiment

Covered features of PackageKit and AppStream Switched to PackageKit in 2009

Merged with Autopackage and some other projects in 2010 AppStream was started in 2011, in turn Listaller was rewritten from scratch, dropping duplicate functionality Rewrite finished in 2012, many new concepts were implemented in 2013

slide-76
SLIDE 76

The Problem AppStream Listaller Conclusion

Listaller?

Listaller is a complete solution for packaging and distributing 3rd-party applications. It provides tools for building cross-distro applications, creating and signing packages, update management and related features. It is completely invisible to the user on any system using PackageKit. Started in 2008 as an experiment

Covered features of PackageKit and AppStream Switched to PackageKit in 2009

Merged with Autopackage and some other projects in 2010 AppStream was started in 2011, in turn Listaller was rewritten from scratch, dropping duplicate functionality Rewrite finished in 2012, many new concepts were implemented in 2013

slide-77
SLIDE 77

The Problem AppStream Listaller Conclusion

Listaller?

Listaller is a complete solution for packaging and distributing 3rd-party applications. It provides tools for building cross-distro applications, creating and signing packages, update management and related features. It is completely invisible to the user on any system using PackageKit. Started in 2008 as an experiment

Covered features of PackageKit and AppStream Switched to PackageKit in 2009

Merged with Autopackage and some other projects in 2010 AppStream was started in 2011, in turn Listaller was rewritten from scratch, dropping duplicate functionality Rewrite finished in 2012, many new concepts were implemented in 2013

slide-78
SLIDE 78

The Problem AppStream Listaller Conclusion

Listaller?

Listaller is a complete solution for packaging and distributing 3rd-party applications. It provides tools for building cross-distro applications, creating and signing packages, update management and related features. It is completely invisible to the user on any system using PackageKit. Started in 2008 as an experiment

Covered features of PackageKit and AppStream Switched to PackageKit in 2009

Merged with Autopackage and some other projects in 2010 AppStream was started in 2011, in turn Listaller was rewritten from scratch, dropping duplicate functionality Rewrite finished in 2012, many new concepts were implemented in 2013

slide-79
SLIDE 79

The Problem AppStream Listaller Conclusion

Listaller?

Listaller is a complete solution for packaging and distributing 3rd-party applications. It provides tools for building cross-distro applications, creating and signing packages, update management and related features. It is completely invisible to the user on any system using PackageKit. Started in 2008 as an experiment

Covered features of PackageKit and AppStream Switched to PackageKit in 2009

Merged with Autopackage and some other projects in 2010 AppStream was started in 2011, in turn Listaller was rewritten from scratch, dropping duplicate functionality Rewrite finished in 2012, many new concepts were implemented in 2013

slide-80
SLIDE 80

The Problem AppStream Listaller Conclusion

Goals

System integration

Users should not notice that Listaller is used when installing apps Software updates should be retrieved using the same UI as the system itself Listaller apps should integrate seamlessly with the system

Cross-distro and -desktop compatibility Simplification

No catch-all solution, Listaller should cover the most common use-cases. Native distribution packages should cover the remaining cases.

Security

Signatures, security hints database, sandboxing, ...

Developer tools

Provide helpers for developers to make their apps run on multiple distributions Make packaging as simple as possible, do some QA on the packaged app

slide-81
SLIDE 81

The Problem AppStream Listaller Conclusion

Goals

System integration

Users should not notice that Listaller is used when installing apps Software updates should be retrieved using the same UI as the system itself Listaller apps should integrate seamlessly with the system

Cross-distro and -desktop compatibility Simplification

No catch-all solution, Listaller should cover the most common use-cases. Native distribution packages should cover the remaining cases.

Security

Signatures, security hints database, sandboxing, ...

Developer tools

Provide helpers for developers to make their apps run on multiple distributions Make packaging as simple as possible, do some QA on the packaged app

slide-82
SLIDE 82

The Problem AppStream Listaller Conclusion

Goals

System integration

Users should not notice that Listaller is used when installing apps Software updates should be retrieved using the same UI as the system itself Listaller apps should integrate seamlessly with the system

Cross-distro and -desktop compatibility Simplification

No catch-all solution, Listaller should cover the most common use-cases. Native distribution packages should cover the remaining cases.

Security

Signatures, security hints database, sandboxing, ...

Developer tools

Provide helpers for developers to make their apps run on multiple distributions Make packaging as simple as possible, do some QA on the packaged app

slide-83
SLIDE 83

The Problem AppStream Listaller Conclusion

Goals

System integration

Users should not notice that Listaller is used when installing apps Software updates should be retrieved using the same UI as the system itself Listaller apps should integrate seamlessly with the system

Cross-distro and -desktop compatibility Simplification

No catch-all solution, Listaller should cover the most common use-cases. Native distribution packages should cover the remaining cases.

Security

Signatures, security hints database, sandboxing, ...

Developer tools

Provide helpers for developers to make their apps run on multiple distributions Make packaging as simple as possible, do some QA on the packaged app

slide-84
SLIDE 84

The Problem AppStream Listaller Conclusion

Goals

System integration

Users should not notice that Listaller is used when installing apps Software updates should be retrieved using the same UI as the system itself Listaller apps should integrate seamlessly with the system

Cross-distro and -desktop compatibility Simplification

No catch-all solution, Listaller should cover the most common use-cases. Native distribution packages should cover the remaining cases.

Security

Signatures, security hints database, sandboxing, ...

Developer tools

Provide helpers for developers to make their apps run on multiple distributions Make packaging as simple as possible, do some QA on the packaged app

slide-85
SLIDE 85

The Problem AppStream Listaller Conclusion

Goals

System integration

Users should not notice that Listaller is used when installing apps Software updates should be retrieved using the same UI as the system itself Listaller apps should integrate seamlessly with the system

Cross-distro and -desktop compatibility Simplification

No catch-all solution, Listaller should cover the most common use-cases. Native distribution packages should cover the remaining cases.

Security

Signatures, security hints database, sandboxing, ...

Developer tools

Provide helpers for developers to make their apps run on multiple distributions Make packaging as simple as possible, do some QA on the packaged app

slide-86
SLIDE 86

The Problem AppStream Listaller Conclusion

Goals

System integration

Users should not notice that Listaller is used when installing apps Software updates should be retrieved using the same UI as the system itself Listaller apps should integrate seamlessly with the system

Cross-distro and -desktop compatibility Simplification

No catch-all solution, Listaller should cover the most common use-cases. Native distribution packages should cover the remaining cases.

Security

Signatures, security hints database, sandboxing, ...

Developer tools

Provide helpers for developers to make their apps run on multiple distributions Make packaging as simple as possible, do some QA on the packaged app

slide-87
SLIDE 87

The Problem AppStream Listaller Conclusion

Goals

System integration

Users should not notice that Listaller is used when installing apps Software updates should be retrieved using the same UI as the system itself Listaller apps should integrate seamlessly with the system

Cross-distro and -desktop compatibility Simplification

No catch-all solution, Listaller should cover the most common use-cases. Native distribution packages should cover the remaining cases.

Security

Signatures, security hints database, sandboxing, ...

Developer tools

Provide helpers for developers to make their apps run on multiple distributions Make packaging as simple as possible, do some QA on the packaged app

slide-88
SLIDE 88

The Problem AppStream Listaller Conclusion

Goals

System integration

Users should not notice that Listaller is used when installing apps Software updates should be retrieved using the same UI as the system itself Listaller apps should integrate seamlessly with the system

Cross-distro and -desktop compatibility Simplification

No catch-all solution, Listaller should cover the most common use-cases. Native distribution packages should cover the remaining cases.

Security

Signatures, security hints database, sandboxing, ...

Developer tools

Provide helpers for developers to make their apps run on multiple distributions Make packaging as simple as possible, do some QA on the packaged app

slide-89
SLIDE 89

The Problem AppStream Listaller Conclusion

Goals

System integration

Users should not notice that Listaller is used when installing apps Software updates should be retrieved using the same UI as the system itself Listaller apps should integrate seamlessly with the system

Cross-distro and -desktop compatibility Simplification

No catch-all solution, Listaller should cover the most common use-cases. Native distribution packages should cover the remaining cases.

Security

Signatures, security hints database, sandboxing, ...

Developer tools

Provide helpers for developers to make their apps run on multiple distributions Make packaging as simple as possible, do some QA on the packaged app

slide-90
SLIDE 90

The Problem AppStream Listaller Conclusion

Goals

System integration

Users should not notice that Listaller is used when installing apps Software updates should be retrieved using the same UI as the system itself Listaller apps should integrate seamlessly with the system

Cross-distro and -desktop compatibility Simplification

No catch-all solution, Listaller should cover the most common use-cases. Native distribution packages should cover the remaining cases.

Security

Signatures, security hints database, sandboxing, ...

Developer tools

Provide helpers for developers to make their apps run on multiple distributions Make packaging as simple as possible, do some QA on the packaged app

slide-91
SLIDE 91

The Problem AppStream Listaller Conclusion

Goals

System integration

Users should not notice that Listaller is used when installing apps Software updates should be retrieved using the same UI as the system itself Listaller apps should integrate seamlessly with the system

Cross-distro and -desktop compatibility Simplification

No catch-all solution, Listaller should cover the most common use-cases. Native distribution packages should cover the remaining cases.

Security

Signatures, security hints database, sandboxing, ...

Developer tools

Provide helpers for developers to make their apps run on multiple distributions Make packaging as simple as possible, do some QA on the packaged app

slide-92
SLIDE 92

The Problem AppStream Listaller Conclusion

Basic concept

Listaller contains a PackageKit plugin, mediating between Listaller and PackageKit The plugin acts as »meta-backend«, sending information about Listaller packages via PackageKit’s DBus interface, and making queries to the native backend Every PackageKit client can install, remove and update Listaller packages Listaller installs some XML for AppStream-compatible software centers, so they can display details about a 3rd-party application Uses a superset of the AppData specification as source for application metadata

slide-93
SLIDE 93

The Problem AppStream Listaller Conclusion

Basic concept

Listaller contains a PackageKit plugin, mediating between Listaller and PackageKit The plugin acts as »meta-backend«, sending information about Listaller packages via PackageKit’s DBus interface, and making queries to the native backend Every PackageKit client can install, remove and update Listaller packages Listaller installs some XML for AppStream-compatible software centers, so they can display details about a 3rd-party application Uses a superset of the AppData specification as source for application metadata

slide-94
SLIDE 94

The Problem AppStream Listaller Conclusion

Basic concept

Listaller contains a PackageKit plugin, mediating between Listaller and PackageKit The plugin acts as »meta-backend«, sending information about Listaller packages via PackageKit’s DBus interface, and making queries to the native backend Every PackageKit client can install, remove and update Listaller packages Listaller installs some XML for AppStream-compatible software centers, so they can display details about a 3rd-party application Uses a superset of the AppData specification as source for application metadata

slide-95
SLIDE 95

The Problem AppStream Listaller Conclusion

Basic concept

Listaller contains a PackageKit plugin, mediating between Listaller and PackageKit The plugin acts as »meta-backend«, sending information about Listaller packages via PackageKit’s DBus interface, and making queries to the native backend Every PackageKit client can install, remove and update Listaller packages Listaller installs some XML for AppStream-compatible software centers, so they can display details about a 3rd-party application Uses a superset of the AppData specification as source for application metadata

slide-96
SLIDE 96

The Problem AppStream Listaller Conclusion

Basic concept

Listaller contains a PackageKit plugin, mediating between Listaller and PackageKit The plugin acts as »meta-backend«, sending information about Listaller packages via PackageKit’s DBus interface, and making queries to the native backend Every PackageKit client can install, remove and update Listaller packages Listaller installs some XML for AppStream-compatible software centers, so they can display details about a 3rd-party application Uses a superset of the AppData specification as source for application metadata

slide-97
SLIDE 97

The Problem AppStream Listaller Conclusion

Listaller Tools

slide-98
SLIDE 98

The Problem AppStream Listaller Conclusion

Utopia package creation

1 Write AppStream AppData describing the application 2 Write a small pkoptions file, defining few basic options for

the package

3 Write a file/dir listing for the new package 4 Build the package!

Listaller will use appcompile to determine the buildsystem and build the app, install it to a temporary location and then add it to the package The depscan tool is used to determine dependencies and map them to a component (e.g. libglib2 is part of the GLib2 component) Package is GPG-signed afterwards During installation, a few optimizations and adjustments are made automatically A Listaller IPK installation does not run any user-defined script Listaller packages are simple LZMA2-compressed tarballs

slide-99
SLIDE 99

The Problem AppStream Listaller Conclusion

Utopia package creation

1 Write AppStream AppData describing the application 2 Write a small pkoptions file, defining few basic options for

the package

3 Write a file/dir listing for the new package 4 Build the package!

Listaller will use appcompile to determine the buildsystem and build the app, install it to a temporary location and then add it to the package The depscan tool is used to determine dependencies and map them to a component (e.g. libglib2 is part of the GLib2 component) Package is GPG-signed afterwards During installation, a few optimizations and adjustments are made automatically A Listaller IPK installation does not run any user-defined script Listaller packages are simple LZMA2-compressed tarballs

slide-100
SLIDE 100

The Problem AppStream Listaller Conclusion

Utopia package creation

1 Write AppStream AppData describing the application 2 Write a small pkoptions file, defining few basic options for

the package

3 Write a file/dir listing for the new package 4 Build the package!

Listaller will use appcompile to determine the buildsystem and build the app, install it to a temporary location and then add it to the package The depscan tool is used to determine dependencies and map them to a component (e.g. libglib2 is part of the GLib2 component) Package is GPG-signed afterwards During installation, a few optimizations and adjustments are made automatically A Listaller IPK installation does not run any user-defined script Listaller packages are simple LZMA2-compressed tarballs

slide-101
SLIDE 101

The Problem AppStream Listaller Conclusion

Utopia package creation

1 Write AppStream AppData describing the application 2 Write a small pkoptions file, defining few basic options for

the package

3 Write a file/dir listing for the new package 4 Build the package!

Listaller will use appcompile to determine the buildsystem and build the app, install it to a temporary location and then add it to the package The depscan tool is used to determine dependencies and map them to a component (e.g. libglib2 is part of the GLib2 component) Package is GPG-signed afterwards During installation, a few optimizations and adjustments are made automatically A Listaller IPK installation does not run any user-defined script Listaller packages are simple LZMA2-compressed tarballs

slide-102
SLIDE 102

The Problem AppStream Listaller Conclusion

Utopia package creation

1 Write AppStream AppData describing the application 2 Write a small pkoptions file, defining few basic options for

the package

3 Write a file/dir listing for the new package 4 Build the package!

Listaller will use appcompile to determine the buildsystem and build the app, install it to a temporary location and then add it to the package The depscan tool is used to determine dependencies and map them to a component (e.g. libglib2 is part of the GLib2 component) Package is GPG-signed afterwards During installation, a few optimizations and adjustments are made automatically A Listaller IPK installation does not run any user-defined script Listaller packages are simple LZMA2-compressed tarballs

slide-103
SLIDE 103

The Problem AppStream Listaller Conclusion

Utopia package creation

1 Write AppStream AppData describing the application 2 Write a small pkoptions file, defining few basic options for

the package

3 Write a file/dir listing for the new package 4 Build the package!

Listaller will use appcompile to determine the buildsystem and build the app, install it to a temporary location and then add it to the package The depscan tool is used to determine dependencies and map them to a component (e.g. libglib2 is part of the GLib2 component) Package is GPG-signed afterwards During installation, a few optimizations and adjustments are made automatically A Listaller IPK installation does not run any user-defined script Listaller packages are simple LZMA2-compressed tarballs

slide-104
SLIDE 104

The Problem AppStream Listaller Conclusion

Utopia package creation

1 Write AppStream AppData describing the application 2 Write a small pkoptions file, defining few basic options for

the package

3 Write a file/dir listing for the new package 4 Build the package!

Listaller will use appcompile to determine the buildsystem and build the app, install it to a temporary location and then add it to the package The depscan tool is used to determine dependencies and map them to a component (e.g. libglib2 is part of the GLib2 component) Package is GPG-signed afterwards During installation, a few optimizations and adjustments are made automatically A Listaller IPK installation does not run any user-defined script Listaller packages are simple LZMA2-compressed tarballs

slide-105
SLIDE 105

The Problem AppStream Listaller Conclusion

Utopia package creation

1 Write AppStream AppData describing the application 2 Write a small pkoptions file, defining few basic options for

the package

3 Write a file/dir listing for the new package 4 Build the package!

Listaller will use appcompile to determine the buildsystem and build the app, install it to a temporary location and then add it to the package The depscan tool is used to determine dependencies and map them to a component (e.g. libglib2 is part of the GLib2 component) Package is GPG-signed afterwards During installation, a few optimizations and adjustments are made automatically A Listaller IPK installation does not run any user-defined script Listaller packages are simple LZMA2-compressed tarballs

slide-106
SLIDE 106

The Problem AppStream Listaller Conclusion

Utopia package creation

1 Write AppStream AppData describing the application 2 Write a small pkoptions file, defining few basic options for

the package

3 Write a file/dir listing for the new package 4 Build the package!

Listaller will use appcompile to determine the buildsystem and build the app, install it to a temporary location and then add it to the package The depscan tool is used to determine dependencies and map them to a component (e.g. libglib2 is part of the GLib2 component) Package is GPG-signed afterwards During installation, a few optimizations and adjustments are made automatically A Listaller IPK installation does not run any user-defined script Listaller packages are simple LZMA2-compressed tarballs

slide-107
SLIDE 107

The Problem AppStream Listaller Conclusion

Utopia package creation

1 Write AppStream AppData describing the application 2 Write a small pkoptions file, defining few basic options for

the package

3 Write a file/dir listing for the new package 4 Build the package!

Listaller will use appcompile to determine the buildsystem and build the app, install it to a temporary location and then add it to the package The depscan tool is used to determine dependencies and map them to a component (e.g. libglib2 is part of the GLib2 component) Package is GPG-signed afterwards During installation, a few optimizations and adjustments are made automatically A Listaller IPK installation does not run any user-defined script Listaller packages are simple LZMA2-compressed tarballs

slide-108
SLIDE 108

The Problem AppStream Listaller Conclusion

Utopia package creation

1 Write AppStream AppData describing the application 2 Write a small pkoptions file, defining few basic options for

the package

3 Write a file/dir listing for the new package 4 Build the package!

Listaller will use appcompile to determine the buildsystem and build the app, install it to a temporary location and then add it to the package The depscan tool is used to determine dependencies and map them to a component (e.g. libglib2 is part of the GLib2 component) Package is GPG-signed afterwards During installation, a few optimizations and adjustments are made automatically A Listaller IPK installation does not run any user-defined script Listaller packages are simple LZMA2-compressed tarballs

slide-109
SLIDE 109

The Problem AppStream Listaller Conclusion

Dependency solving?

slide-110
SLIDE 110

The Problem AppStream Listaller Conclusion

Dependency solving...

Problem #1 Satisfying dependencies is a complex task, searching for the right dependency is difficult and takes time. We want to avoid complex dependency-solving. Problem #2 What if the distributor does not provide enough metadata to find a dependency? Problem #3 What if the ABI of a dependency is not stable? What if we absolutely require an old library version?

slide-111
SLIDE 111

The Problem AppStream Listaller Conclusion

Dependency solving...

Problem #1 Satisfying dependencies is a complex task, searching for the right dependency is difficult and takes time. We want to avoid complex dependency-solving. Problem #2 What if the distributor does not provide enough metadata to find a dependency? Problem #3 What if the ABI of a dependency is not stable? What if we absolutely require an old library version?

slide-112
SLIDE 112

The Problem AppStream Listaller Conclusion

Dependency solving...

Problem #1 Satisfying dependencies is a complex task, searching for the right dependency is difficult and takes time. We want to avoid complex dependency-solving. Problem #2 What if the distributor does not provide enough metadata to find a dependency? Problem #3 What if the ABI of a dependency is not stable? What if we absolutely require an old library version?

slide-113
SLIDE 113

The Problem AppStream Listaller Conclusion

Components to the rescue!

Most 3rd-party applications don’t need complex dependency-solving, they are built against a certain development platform

Apps might require GTK+3 (>= 3.12), or Qt5 (>= 5.2) or PulseAudio (>= 2.4)

A component is e.g. a toolkit, a basic building block the systems consists of. Public interfaces a component provides are described in a component-definition file. Listaller only needs to ensure that basic components are present for the application to run. Minor dependencies can be shipped with the application package Upstream should write component-definition files and ship them with their source Some dependencies can be satisfied by downloading a statically linked version provided by upstream or the distributor, or querying cpan/cran/pypi/gems/...

slide-114
SLIDE 114

The Problem AppStream Listaller Conclusion

Components to the rescue!

Most 3rd-party applications don’t need complex dependency-solving, they are built against a certain development platform

Apps might require GTK+3 (>= 3.12), or Qt5 (>= 5.2) or PulseAudio (>= 2.4)

A component is e.g. a toolkit, a basic building block the systems consists of. Public interfaces a component provides are described in a component-definition file. Listaller only needs to ensure that basic components are present for the application to run. Minor dependencies can be shipped with the application package Upstream should write component-definition files and ship them with their source Some dependencies can be satisfied by downloading a statically linked version provided by upstream or the distributor, or querying cpan/cran/pypi/gems/...

slide-115
SLIDE 115

The Problem AppStream Listaller Conclusion

Components to the rescue!

Most 3rd-party applications don’t need complex dependency-solving, they are built against a certain development platform

Apps might require GTK+3 (>= 3.12), or Qt5 (>= 5.2) or PulseAudio (>= 2.4)

A component is e.g. a toolkit, a basic building block the systems consists of. Public interfaces a component provides are described in a component-definition file. Listaller only needs to ensure that basic components are present for the application to run. Minor dependencies can be shipped with the application package Upstream should write component-definition files and ship them with their source Some dependencies can be satisfied by downloading a statically linked version provided by upstream or the distributor, or querying cpan/cran/pypi/gems/...

slide-116
SLIDE 116

The Problem AppStream Listaller Conclusion

Components to the rescue!

Most 3rd-party applications don’t need complex dependency-solving, they are built against a certain development platform

Apps might require GTK+3 (>= 3.12), or Qt5 (>= 5.2) or PulseAudio (>= 2.4)

A component is e.g. a toolkit, a basic building block the systems consists of. Public interfaces a component provides are described in a component-definition file. Listaller only needs to ensure that basic components are present for the application to run. Minor dependencies can be shipped with the application package Upstream should write component-definition files and ship them with their source Some dependencies can be satisfied by downloading a statically linked version provided by upstream or the distributor, or querying cpan/cran/pypi/gems/...

slide-117
SLIDE 117

The Problem AppStream Listaller Conclusion

Components to the rescue!

Most 3rd-party applications don’t need complex dependency-solving, they are built against a certain development platform

Apps might require GTK+3 (>= 3.12), or Qt5 (>= 5.2) or PulseAudio (>= 2.4)

A component is e.g. a toolkit, a basic building block the systems consists of. Public interfaces a component provides are described in a component-definition file. Listaller only needs to ensure that basic components are present for the application to run. Minor dependencies can be shipped with the application package Upstream should write component-definition files and ship them with their source Some dependencies can be satisfied by downloading a statically linked version provided by upstream or the distributor, or querying cpan/cran/pypi/gems/...

slide-118
SLIDE 118

The Problem AppStream Listaller Conclusion

Components to the rescue!

Most 3rd-party applications don’t need complex dependency-solving, they are built against a certain development platform

Apps might require GTK+3 (>= 3.12), or Qt5 (>= 5.2) or PulseAudio (>= 2.4)

A component is e.g. a toolkit, a basic building block the systems consists of. Public interfaces a component provides are described in a component-definition file. Listaller only needs to ensure that basic components are present for the application to run. Minor dependencies can be shipped with the application package Upstream should write component-definition files and ship them with their source Some dependencies can be satisfied by downloading a statically linked version provided by upstream or the distributor, or querying cpan/cran/pypi/gems/...

slide-119
SLIDE 119

The Problem AppStream Listaller Conclusion

Component Information

Think of it as an »non-developer pkg-config file« Describes the component version and all public interfaces this component provides Can map software dependencies to a component at package-build-time and a component to a native-package at install time

# GLib C utility library ID: GLib2 Name: GLib 2.0 Version: 2.36 VersionDynamic : shell$ glib -fake

  • -version

Libraries: libgio -2.0. so.0 libgobject -2.0. so.0 libglib -2.0. so.0 Binaries: gdbus gio - querymodules glib -compile -resources glib -compile -schemas gresource gsettings

slide-120
SLIDE 120

The Problem AppStream Listaller Conclusion

Component Information

Think of it as an »non-developer pkg-config file« Describes the component version and all public interfaces this component provides Can map software dependencies to a component at package-build-time and a component to a native-package at install time

# GLib C utility library ID: GLib2 Name: GLib 2.0 Version: 2.36 VersionDynamic : shell$ glib -fake

  • -version

Libraries: libgio -2.0. so.0 libgobject -2.0. so.0 libglib -2.0. so.0 Binaries: gdbus gio - querymodules glib -compile -resources glib -compile -schemas gresource gsettings

slide-121
SLIDE 121

The Problem AppStream Listaller Conclusion

Component Information

Think of it as an »non-developer pkg-config file« Describes the component version and all public interfaces this component provides Can map software dependencies to a component at package-build-time and a component to a native-package at install time

# GLib C utility library ID: GLib2 Name: GLib 2.0 Version: 2.36 VersionDynamic : shell$ glib -fake

  • -version

Libraries: libgio -2.0. so.0 libgobject -2.0. so.0 libglib -2.0. so.0 Binaries: gdbus gio - querymodules glib -compile -resources glib -compile -schemas gresource gsettings

slide-122
SLIDE 122

The Problem AppStream Listaller Conclusion

Component Information

Component definitions are shipped with every Listaller (IPK) package, they are available on every distribution

Data provided by the distributor overrides data shipped with the package

Component info can contain commands to extract a version number to determine the current component version on a new distribution In future, component data might refer to a statically linked copy of the component, to satisfy dependencies of old software The Listaller helper tool depscan is able to automatically scan the software binaries and match them to components

slide-123
SLIDE 123

The Problem AppStream Listaller Conclusion

Component Information

Component definitions are shipped with every Listaller (IPK) package, they are available on every distribution

Data provided by the distributor overrides data shipped with the package

Component info can contain commands to extract a version number to determine the current component version on a new distribution In future, component data might refer to a statically linked copy of the component, to satisfy dependencies of old software The Listaller helper tool depscan is able to automatically scan the software binaries and match them to components

slide-124
SLIDE 124

The Problem AppStream Listaller Conclusion

Component Information

Component definitions are shipped with every Listaller (IPK) package, they are available on every distribution

Data provided by the distributor overrides data shipped with the package

Component info can contain commands to extract a version number to determine the current component version on a new distribution In future, component data might refer to a statically linked copy of the component, to satisfy dependencies of old software The Listaller helper tool depscan is able to automatically scan the software binaries and match them to components

slide-125
SLIDE 125

The Problem AppStream Listaller Conclusion

Component Information

Component definitions are shipped with every Listaller (IPK) package, they are available on every distribution

Data provided by the distributor overrides data shipped with the package

Component info can contain commands to extract a version number to determine the current component version on a new distribution In future, component data might refer to a statically linked copy of the component, to satisfy dependencies of old software The Listaller helper tool depscan is able to automatically scan the software binaries and match them to components

slide-126
SLIDE 126

The Problem AppStream Listaller Conclusion

Component Information

Component definitions are shipped with every Listaller (IPK) package, they are available on every distribution

Data provided by the distributor overrides data shipped with the package

Component info can contain commands to extract a version number to determine the current component version on a new distribution In future, component data might refer to a statically linked copy of the component, to satisfy dependencies of old software The Listaller helper tool depscan is able to automatically scan the software binaries and match them to components

slide-127
SLIDE 127

The Problem AppStream Listaller Conclusion

Future

Finalize and formalize Listaller specifications Get upstream projects to ship component-definitions by default Get Listaller into more distributions Maybe in the end have a way for 3rd-party developers to target all Linux distributions with one app-package?

slide-128
SLIDE 128

The Problem AppStream Listaller Conclusion

Future

Finalize and formalize Listaller specifications Get upstream projects to ship component-definitions by default Get Listaller into more distributions Maybe in the end have a way for 3rd-party developers to target all Linux distributions with one app-package?

slide-129
SLIDE 129

The Problem AppStream Listaller Conclusion

Future

Finalize and formalize Listaller specifications Get upstream projects to ship component-definitions by default Get Listaller into more distributions Maybe in the end have a way for 3rd-party developers to target all Linux distributions with one app-package?

slide-130
SLIDE 130

The Problem AppStream Listaller Conclusion

Future

Finalize and formalize Listaller specifications Get upstream projects to ship component-definitions by default Get Listaller into more distributions Maybe in the end have a way for 3rd-party developers to target all Linux distributions with one app-package?

slide-131
SLIDE 131

The Problem AppStream Listaller Conclusion

Conclusion I

We need a solution to make it easy for 3rd-party developers to distribute their software on all distributions at once. We also need to increase visibility of existing applications in distributors repositories AppStream provides all metadata you want to build a software center The libappstream library abstracts all remaining differences, and is an implementation of AppStream which can be shared by all clients who want to make use of it’s features Listaller provides a way to ship applications on all Linux distributions and keep them up-to-date, reusing existing user interfaces The Listaller project is not yet mature and the specifications are not finalized, but this will happen soon with the 0.6 release

slide-132
SLIDE 132

The Problem AppStream Listaller Conclusion

Conclusion I

We need a solution to make it easy for 3rd-party developers to distribute their software on all distributions at once. We also need to increase visibility of existing applications in distributors repositories AppStream provides all metadata you want to build a software center The libappstream library abstracts all remaining differences, and is an implementation of AppStream which can be shared by all clients who want to make use of it’s features Listaller provides a way to ship applications on all Linux distributions and keep them up-to-date, reusing existing user interfaces The Listaller project is not yet mature and the specifications are not finalized, but this will happen soon with the 0.6 release

slide-133
SLIDE 133

The Problem AppStream Listaller Conclusion

Conclusion I

We need a solution to make it easy for 3rd-party developers to distribute their software on all distributions at once. We also need to increase visibility of existing applications in distributors repositories AppStream provides all metadata you want to build a software center The libappstream library abstracts all remaining differences, and is an implementation of AppStream which can be shared by all clients who want to make use of it’s features Listaller provides a way to ship applications on all Linux distributions and keep them up-to-date, reusing existing user interfaces The Listaller project is not yet mature and the specifications are not finalized, but this will happen soon with the 0.6 release

slide-134
SLIDE 134

The Problem AppStream Listaller Conclusion

Conclusion I

We need a solution to make it easy for 3rd-party developers to distribute their software on all distributions at once. We also need to increase visibility of existing applications in distributors repositories AppStream provides all metadata you want to build a software center The libappstream library abstracts all remaining differences, and is an implementation of AppStream which can be shared by all clients who want to make use of it’s features Listaller provides a way to ship applications on all Linux distributions and keep them up-to-date, reusing existing user interfaces The Listaller project is not yet mature and the specifications are not finalized, but this will happen soon with the 0.6 release

slide-135
SLIDE 135

The Problem AppStream Listaller Conclusion

Conclusion I

We need a solution to make it easy for 3rd-party developers to distribute their software on all distributions at once. We also need to increase visibility of existing applications in distributors repositories AppStream provides all metadata you want to build a software center The libappstream library abstracts all remaining differences, and is an implementation of AppStream which can be shared by all clients who want to make use of it’s features Listaller provides a way to ship applications on all Linux distributions and keep them up-to-date, reusing existing user interfaces The Listaller project is not yet mature and the specifications are not finalized, but this will happen soon with the 0.6 release

slide-136
SLIDE 136

The Problem AppStream Listaller Conclusion

Conclusion I

We welcome contributors to AppStream! Feedback is always wanted, and we are waiting for software-center implementations! Listaller needs developers as well! If you have an idea or want to improve something, get in contact!

slide-137
SLIDE 137

The Problem AppStream Listaller Conclusion

Conclusion I

We welcome contributors to AppStream! Feedback is always wanted, and we are waiting for software-center implementations! Listaller needs developers as well! If you have an idea or want to improve something, get in contact!

slide-138
SLIDE 138

The Problem AppStream Listaller Conclusion

Conclusion II

Writing Freedesktop standards is hard Never do things leading to the impression that you develop the standard primarily for GNOME/KDE Standards are created by implementing something, not by calling it a standard Communicate and blog as much as possible while introducing a new thing, so people know about it and can give feedback Sometimes it needs someone to just go ahead with a project and have others follow Discuss things with a small amount of people first, then open up to the wider community - ignore people bikeshedding about details, always ask for a better proposal

slide-139
SLIDE 139

The Problem AppStream Listaller Conclusion

Conclusion II

Writing Freedesktop standards is hard Never do things leading to the impression that you develop the standard primarily for GNOME/KDE Standards are created by implementing something, not by calling it a standard Communicate and blog as much as possible while introducing a new thing, so people know about it and can give feedback Sometimes it needs someone to just go ahead with a project and have others follow Discuss things with a small amount of people first, then open up to the wider community - ignore people bikeshedding about details, always ask for a better proposal

slide-140
SLIDE 140

The Problem AppStream Listaller Conclusion

Conclusion II

Writing Freedesktop standards is hard Never do things leading to the impression that you develop the standard primarily for GNOME/KDE Standards are created by implementing something, not by calling it a standard Communicate and blog as much as possible while introducing a new thing, so people know about it and can give feedback Sometimes it needs someone to just go ahead with a project and have others follow Discuss things with a small amount of people first, then open up to the wider community - ignore people bikeshedding about details, always ask for a better proposal

slide-141
SLIDE 141

The Problem AppStream Listaller Conclusion

Conclusion II

Writing Freedesktop standards is hard Never do things leading to the impression that you develop the standard primarily for GNOME/KDE Standards are created by implementing something, not by calling it a standard Communicate and blog as much as possible while introducing a new thing, so people know about it and can give feedback Sometimes it needs someone to just go ahead with a project and have others follow Discuss things with a small amount of people first, then open up to the wider community - ignore people bikeshedding about details, always ask for a better proposal

slide-142
SLIDE 142

The Problem AppStream Listaller Conclusion

Conclusion II

Writing Freedesktop standards is hard Never do things leading to the impression that you develop the standard primarily for GNOME/KDE Standards are created by implementing something, not by calling it a standard Communicate and blog as much as possible while introducing a new thing, so people know about it and can give feedback Sometimes it needs someone to just go ahead with a project and have others follow Discuss things with a small amount of people first, then open up to the wider community - ignore people bikeshedding about details, always ask for a better proposal

slide-143
SLIDE 143

The Problem AppStream Listaller Conclusion

Conclusion II

Writing Freedesktop standards is hard Never do things leading to the impression that you develop the standard primarily for GNOME/KDE Standards are created by implementing something, not by calling it a standard Communicate and blog as much as possible while introducing a new thing, so people know about it and can give feedback Sometimes it needs someone to just go ahead with a project and have others follow Discuss things with a small amount of people first, then open up to the wider community - ignore people bikeshedding about details, always ask for a better proposal

slide-144
SLIDE 144

The Problem AppStream Listaller Conclusion

Thank you for your attention!

(Further) Questions?

slide-145
SLIDE 145

The Problem AppStream Listaller Conclusion

Useful links

PackageKit: http://www.packagekit.org/ Listaller: http://listaller.tenstral.net/ AppStream Documentation: http://www.freedesktop.org/software/appstream/docs/ AppData Information & Validation: http://people.freedesktop.org/~hughsient/appdata/