Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

POPCORN - Popularity Contest (for RPM)

MIT License

Copyright (c) 2009-2011 Pavol Rusnak

Copyright (c) 2011-2012 Ionuț Arțăriși


Popcorn lists system packages and for each package it reads access time of its "watched" files (see section Watched Files below). The most recent fileaccess time is considered as the "package access time". The packages are then split into four categories depending on the package install time and package access time:

  • (r) recent
    • package has been recently installed (less than 30 days)
    • ( now - install_time < 30 days )
  • (v) voted
    • package is older than 30 days and has been used in the last 30 days
    • ( now - install_time > 30 days ) and ( now - access_time < 30 days)
  • (o) old
    • package is older than 30 days and hasn't been used recently
    • ( now - install_time > 30 days ) and ( now - access_time > 30 days)
  • (n) nofiles
    • there are no watched files present in the package
    • access_time = 0

Each package falls exactly into one category, so (n + r + v + o) is the total number of the installed packages.

Popcorn is inspired by Debian Popcon available from



  • client-side written in Python
  • gathers info about packages and sends to server (via HTTP POST)


  • server which receives, processes, stores and displays submissions
  • see README.server for more information

Submission format

Format is plaintext. The first line contains the string POPCORN followed by the popcorn version, distribution name and version, machine architecture and uuid. Then the list of packages follows.

Each line represents one package, values are separated by space. First value is one character describing the category (see Introduction), second value is the package name, third, fourth and fifth are version, release and epoch, sixth and seventh are architecture and repository of the package.

Plaintext size is around 100 KiB on casual machine, which could be later compressed to around 20 KiB using HTTP gzip compression.


POPCORN <popcorn-client_version> <distro_name> <distro_version> <arch> <hw_uuid>
<category> <package> <version> <release> <epoch> <arch> <repository>


POPCORN 0.1 openSUSE 12.1 i686 7f3a469b-c052-4c9a-aa97-bffdb55e9878
o libgmp3 4.3.2 1.13 None i586 openSUSE
o libfolks0 0.2.0 1.2 None i586 obs://
v enchant 1.6.0 2.3 1 i586 openSUSE
o libx264-112 0.112svn20110115 None i586
n myspell-british 20100316 16.1 None noarch Uknown

Watched files

To find out whether the package has been used recently, access times of the files in the following directories are watched:


Note: if some of the filesystems are mounted with noatime, the packages from this filesystem are always in the category 'nofiles'

Please check README.server.markdown for information on setting up the server


RPM Popularity Contest



No releases published


No packages published