Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tree: 4313027da5

Fetching latest commit…

Cannot retrieve the latest commit at this time

..
Failed to load latest commit information.
LICENSE
README
popcorn
popcorn.changes
popcorn.conf
popcorn.cron
popcorn.log
popcorn.spec

README

POPCORN - Popularity Contest (for RPM)
======================================

**MIT License**

Copyright (c) 2009-2011 Pavol Rusnak <stick@gk2.sk>

Copyright (c) 2011-2012 Ionuț Arțăriși <iartarisi@suse.cz>


Introduction
------------

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 http://popcon.debian.org/


Packages
--------

popcorn-client

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

popcorn-server

* 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.

Format:

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

Example:

```
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://build.opensuse.org/GNOME
v enchant 1.6.0 2.3 1 i586 openSUSE
o libx264-112 0.112svn20110115 1.pm.2.6 None i586 http://packman.links2linux.de
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:

```
/bin
/boot
/lib
/lib64
/sbin
/usr/bin
/usr/games
/usr/include
/usr/lib
/usr/lib64
/usr/libexec
/usr/sbin
```

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**
Something went wrong with that request. Please try again.