Tuesday, June 02, 2009

Screen shots in the package manager

I’ve been doing some thinking about what would make Mandriva stand out and also what could help Linux distributions in general.   I think that although rpmdrake is pretty good, it has room for improvement.   Two features I am thinking of are screenshots of packages that are graphical and ways for end users to provide feedback about packages.

Here, I want to talk about my ideas for screenshots:

Requirements I’ve thought of:

  • Stored in srpms and owned by the package maintainer
  • Available from the mirrors for the package manager application like rpmdrake
  • Ability to be shared by other distributions
  • Everyday users able to submit screen shots to package maintainers
  • Easy to add to packages
  • Multiple screen shots per package, including where multiple packages are created from a single srpm.
  • Min/Max resolutions

To meet these, I see that this should be done starting from the bottom, which is how to store screenshots.  I’d like suggestions on the best way go about storing them is adding a “Screenshot0: filename.png” field to rpm, so that spec files can list screenshots, which would be included in the SOURCES directory the same as Sources and Patchs are.   The Screenshot[num]: fields should be able to be in multiple %package sections.

I’d invision that these screenshots should then be packaged and included in the generated src.rpm when the rpm is built.   I don’t see the need to include the screenshot in binary packages, as see this as un-necceary because users don’t need screenshot of installed packages, and including them would make packages bigger than they need to be.

So, these steps would involve changes to rpm,  rpmbuild and rpm-lint.  So far, these changes could be used for any rpm based distro.  I think that Fedora, OpenSuse and others will eventually also want screenshots for applications.  Advantages of the Screenshot field in the spec files is that automated tools can understand this and extract/update screenshots as needed.

The next stage I would see is the ability to get these screenshots onto the repositories.  To achieve this, I see that whatever tool is used to generate meta data for the package management tool would need to be updated to support generating a directory full of screenshots at different sizes, extracted from srpms.  In Mandriva’s case, modifications to genhdlist2.  I would expect it to extract full size screenshots from a directory of SRPMS and create a directory structure with screenshots for each package at various resolutions.  These would then be mirrored to repositories along with the hdlists.

The last piece of this puzzle would be to update rpmdrake to check for available screenshots and display them when a package is selected.  It would need to download them in the background from the same mirror as package and only if the a working internet connection.

This leaves a few features I’d like to see, but is the basic infrastrucre I’ve been thinking of.  With these in place, I’d then provide a way for users to submit screenshots to maintainers via a web based interface linked to from rpmdrake.  A maintainer could then see the associated screenshot and if it’s ok, have the tool automatically update the spec file and commit it to SVN in Mandriva’s repository.

I’d also invisiage distributions like Mandriva would probally have a web based package browser that would include these screenshots and a simple way for a user to trigger the installation from the web page.  The web based version may also include other ways for the user to provide feedback about packages, which I’ll discuss in a later post.