SlideShare a Scribd company logo
1 of 79
Download to read offline
Free Software Research at Irill 
(highlights) 
Roberto Di Cosmo 
http://www.dicosmo.org 
18/09/2014 
Suse Labs Conference 2014 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 1 / 46
IRILL, a special place for FOSS 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 2 / 46
Who we are 
Researchers that love FOSS ... 
Vincent Balat Albert Cohen Julia Lawall Stefano Zacchiroli 
... and like to collaborate! 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 3 / 46
Our focus: software quality 
Some key examples: 
Coccinelle 
Beautiful work on semantic matching and pacthing; based on sophisticated 
theoretical tools, and yet so intuitive and practical: see Julia's talks 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 4 / 46
Our focus: software quality 
Some key examples: 
Coccinelle 
Beautiful work on semantic matching and pacthing; based on sophisticated 
theoretical tools, and yet so intuitive and practical: see Julia's talks 
GCC/LLVM 
Long term work led by Albert Cohen to provide cutting edge polyhedral 
optimisation for all of us 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 4 / 46
Our focus: software quality 
Some key examples: 
Coccinelle 
Beautiful work on semantic matching and pacthing; based on sophisticated 
theoretical tools, and yet so intuitive and practical: see Julia's talks 
GCC/LLVM 
Long term work led by Albert Cohen to provide cutting edge polyhedral 
optimisation for all of us 
GNU/Linux distributions our focus today 
Many great tools for users and maintainers developed over almost ten years 
to help distributions scale up, be released faster and have better QA 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 4 / 46
Credits: joint work with. . . 
Pietro Abate Jaap Boender Yacine Boufkhad 
Stefano Zacchiroli Ralf Treinen Jérôme Vouillon 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 5 / 46
Outline 
1 GNU/Linux Distributions: industrialising Free Software 
2 User side: improving package managers 
3 Back to the server side : Package QA 
Find uninstallable packages 
Learning from the future of repositories 
Find non co-installable packages 
Find new non co-installable packages 
Filter incoming packages 
4 In conclusion 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 6 / 46
Free Software, industrialised: distributions 
Idea from FOSS in the 1990s: distributions are intermediate software 
vendors between FOSS developers and users, oering to share upstream 
tracking, integration, testing and QA among all of us 
Project 2 
Project 1 
Project 3 
FOSS Bazaar 
User 
installations 
Server 
side 
Client 
side 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 7 / 46
Free Software, industrialised: distributions 
Idea from FOSS in the 1990s: distributions are intermediate software 
vendors between FOSS developers and users, oering to share upstream 
tracking, integration, testing and QA among all of us 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 7 / 46
Distributions: a somehow successful idea . . . 
Key notions: packages and package managers 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 8 / 46
Packages and their metadata 
Package = 
( 
some les 
some scripts 
metadata 
Identication 
Inter-package rel. 
I Dependencies 
I Conicts 
Feature declarations 
Other 
I Package maintainer 
I Textual descriptions 
I ... 
Example (package metadata) 
Package: aterm 
Version: 0.4.2-11 
Section: x11 
Installed-Size: 280 
Maintainer: Göran Weinholt ... 
Architecture: i386 
Depends: libc6 (= 2.3.2.ds1-4), 
libice6 | xlibs ( 4.1.0), ... 
Conflicts: suidmanager ( 0.50) 
Provides: x-terminal-emulator 
... 
A package is the elemental component of modern distribution systems (not 
FOSS-specic). A working system is deployed by installing a package set 
( 2'000+ for modern FOSS distros) 
. Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 9 / 46
Inter-package relationships get complex. . . 
To play Backgammon. . . 
Package: gnubg 
Version: 0.14.3+20060923-4 
Depends: gnubg-data, ttf-bitstream-vera, 
libartsc0 (= 1.5.0-1), ..., libgl1-mesa-glx 
| libgl1, ... 
Conflicts: ... 
. . . pull a few strings 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 10 / 46
Inter-package relationships get complex. . . 
To play Backgammon. . . 
Package: gnubg 
Version: 0.14.3+20060923-4 
Depends: gnubg-data, ttf-bitstream-vera, 
libartsc0 (= 1.5.0-1), ..., libgl1-mesa-glx 
| libgl1, ... 
Conflicts: ... 
. . . pull a few strings 
Distributions grow superlinearly 
Using and maintaining such large 
software collections is becoming hard! 
manual package review 
semi-automated tools 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 10 / 46
Using and maintaining free software distributions is hard 
We need advanced tools: 
1 end user side  package managers 
I install packages and their dependencies, . . . 
I . . . according to the user needs and policies 
2 distribution editor side  QA infrastructure 
I nd broken packages (now easy!) 
I nd packages which impact large parts of the distribution 
I predict repository update woes 
I identify compatibility issues 
I . . . 
At Irill, through the Mancoosi project1, we have made progress in both 
areas. 
Let's see some examples. 
1http://www.mancoosi.org 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 11 / 46
Outline 
1 GNU/Linux Distributions: industrialising Free Software 
2 User side: improving package managers 
3 Back to the server side : Package QA 
Find uninstallable packages 
Learning from the future of repositories 
Find non co-installable packages 
Find new non co-installable packages 
Filter incoming packages 
4 In conclusion 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 12 / 46
Installation woes: no solution 
$ sudo apt-get install baobab 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 13 / 46
Installation woes: no solution 
$ sudo apt-get install baobab 
Reading package lists... Done 
Building dependency tree 
Reading state information... Done 
Some packages could not be installed. This may mean that you have 
requested an impossible situation or if you are using the unstable 
distribution that some required packages have not yet been created 
or been moved out of Incoming. 
The following information may help to resolve the situation: 
The following packages have unmet dependencies: 
gnome-settings-daemon: Breaks: gnome-screensaver ( 2.28.0) 
but 2.26.1-1 is to be installed 
E: Broken packages 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 13 / 46
Installation woes: no solution 
$ sudo apt-get install baobab 
Reading package lists... Done 
Building dependency tree 
Reading state information... Done 
Some packages could not be installed. This may mean that you have 
requested an impossible situation or if you are using the unstable 
distribution that some required packages have not yet been created 
or been moved out of Incoming. 
The following information may help to resolve the situation: 
The following packages have unmet dependencies: 
gnome-settings-daemon: Breaks: gnome-screensaver ( 2.28.0) 
but 2.26.1-1 is to be installed 
E: Broken packages 
(whereas a solution did in fact exist) 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 13 / 46
Installation woes: debatable solution 
$ sudo apt-get install debhelper 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 14 / 46
Installation woes: debatable solution 
$ sudo apt-get install debhelper 
Reading Package Lists... Done 
Building Dependency Tree... Done 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 14 / 46
Installation woes: debatable solution 
$ sudo apt-get install debhelper 
Reading Package Lists... Done 
Building Dependency Tree... Done 
The following extra packages will be installed: 
armagetron armagetron-common autoconf bonobo-activation codebreaker debconf 
debconf-i18n debconf-utils dialog esound-common fb-music-high fontconfig 
frozen-bubble-data grepmail gv intltool-debian libaiksaurus-data 
libaiksaurus0c102 libatk1.0-0 libatk1.0-dev libbonobo-activation4 libbonobo2-0 
libbonobo2-common libdb3 libdbd-mysql-perl libdbi-perl libeel2-data libesd0 
... 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 14 / 46
Installation woes: debatable solution 
$ sudo apt-get install debhelper 
Reading Package Lists... Done 
Building Dependency Tree... Done 
The following extra packages will be installed: 
armagetron armagetron-common autoconf bonobo-activation codebreaker debconf 
debconf-i18n debconf-utils dialog esound-common fb-music-high fontconfig 
frozen-bubble-data grepmail gv intltool-debian libaiksaurus-data 
libaiksaurus0c102 libatk1.0-0 libatk1.0-dev libbonobo-activation4 libbonobo2-0 
libbonobo2-common libdb3 libdbd-mysql-perl libdbi-perl libeel2-data libesd0 
... 
The following packages will be REMOVED: 
autoconf2.13 frozen-bubble frozen-bubble-lib gconf2 gnomemeeting itk3.1-dev 
libbonoboui2-0 libbonoboui2-common libdigest-md5-perl libforms0.89 libgconf2-4 
libgnome2-0 libgnome2-common libgnomeui-0 libgnomevfs2-0 libgnomevfs2-common 
libgtk1.2-dev libgtk2.0-0png3 libgtk2.0-dev libmime-base64-perl 
libpango1.0-dev libsdl-mixer1.2-dev libsdl-perl libsdl-ttf1.2-dev 
libsdl1.2-dev libsmpeg-dev libstorable-perl nautilus tk8.3-dev tktable-dev 
x-window-system x-window-system-core xaw3dg-dev xlib6g xlib6g-dev xlibmesa-dev 
xlibmesa3 xlibosmesa3 xlibs-dev xlibs-pic xpdf xpdf-reader 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 14 / 46
Installation woes: debatable solution 
$ sudo apt-get install debhelper 
Reading Package Lists... Done 
Building Dependency Tree... Done 
The following extra packages will be installed: 
armagetron armagetron-common autoconf bonobo-activation codebreaker debconf 
debconf-i18n debconf-utils dialog esound-common fb-music-high fontconfig 
frozen-bubble-data grepmail gv intltool-debian libaiksaurus-data 
libaiksaurus0c102 libatk1.0-0 libatk1.0-dev libbonobo-activation4 libbonobo2-0 
libbonobo2-common libdb3 libdbd-mysql-perl libdbi-perl libeel2-data libesd0 
... 
The following packages will be REMOVED: 
autoconf2.13 frozen-bubble frozen-bubble-lib gconf2 gnomemeeting itk3.1-dev 
libbonoboui2-0 libbonoboui2-common libdigest-md5-perl libforms0.89 libgconf2-4 
libgnome2-0 libgnome2-common libgnomeui-0 libgnomevfs2-0 libgnomevfs2-common 
libgtk1.2-dev libgtk2.0-0png3 libgtk2.0-dev libmime-base64-perl 
libpango1.0-dev libsdl-mixer1.2-dev libsdl-perl libsdl-ttf1.2-dev 
libsdl1.2-dev libsmpeg-dev libstorable-perl nautilus tk8.3-dev tktable-dev 
x-window-system x-window-system-core xaw3dg-dev xlib6g xlib6g-dev xlibmesa-dev 
xlibmesa3 xlibosmesa3 xlibs-dev xlibs-pic xpdf xpdf-reader 
The following NEW packages will be installed: 
armagetron-common debconf-i18n fb-music-high fontconfig intltool-debian 
libaiksaurus-data libaiksaurus0c102 libeel2-data libfilehandle-unget-perl 
libfontconfig1 libforms1 libgdbm3 libgnutls7 libgsf-1 libice-dev libice6 
libidl0 liblzo1 libmagick5.5.7 libmail-mbox-messageparser-perl 
libmysqlclient12 libncursesw5 libnet-daemon-perl libnewt0.51 libpaper1 
libplrpc-perl libsdl-console ... 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 14 / 46
Installation woes: debatable solution 
$ sudo apt-get install debhelper 
Reading Package Lists... Done 
Building Dependency Tree... Done 
The following extra packages will be installed: 
armagetron armagetron-common autoconf bonobo-activation codebreaker debconf 
debconf-i18n debconf-utils dialog esound-common fb-music-high fontconfig 
frozen-bubble-data grepmail gv intltool-debian libaiksaurus-data 
libaiksaurus0c102 libatk1.0-0 libatk1.0-dev libbonobo-activation4 libbonobo2-0 
libbonobo2-common libdb3 libdbd-mysql-perl libdbi-perl libeel2-data libesd0 
... 
The following packages will be REMOVED: 
autoconf2.13 frozen-bubble frozen-bubble-lib gconf2 gnomemeeting itk3.1-dev 
libbonoboui2-0 libbonoboui2-common libdigest-md5-perl libforms0.89 libgconf2-4 
libgnome2-0 libgnome2-common libgnomeui-0 libgnomevfs2-0 libgnomevfs2-common 
libgtk1.2-dev libgtk2.0-0png3 libgtk2.0-dev libmime-base64-perl 
libpango1.0-dev libsdl-mixer1.2-dev libsdl-perl libsdl-ttf1.2-dev 
libsdl1.2-dev libsmpeg-dev libstorable-perl nautilus tk8.3-dev tktable-dev 
x-window-system x-window-system-core xaw3dg-dev xlib6g xlib6g-dev xlibmesa-dev 
xlibmesa3 xlibosmesa3 xlibs-dev xlibs-pic xpdf xpdf-reader 
The following NEW packages will be installed: 
armagetron-common debconf-i18n fb-music-high fontconfig intltool-debian 
libaiksaurus-data libaiksaurus0c102 libeel2-data libfilehandle-unget-perl 
libfontconfig1 libforms1 libgdbm3 libgnutls7 libgsf-1 libice-dev libice6 
libidl0 liblzo1 libmagick5.5.7 libmail-mbox-messageparser-perl 
libmysqlclient12 libncursesw5 libnet-daemon-perl libnewt0.51 libpaper1 
libplrpc-perl libsdl-console ... 
75 packages upgraded, 80 newly installed, 42 to remove and 858 not upgraded. 
Need to get 67.1MB of archives. After unpacking 26.9MB will be used. 
Do you want to continue? [Y/n] 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 14 / 46
Installation woes: debatable solution 
$ sudo apt-get install debhelper 
Reading Package Lists... Done 
Building Dependency Tree... Done 
The following extra packages will be installed: 
armagetron armagetron-common autoconf bonobo-activation codebreaker debconf 
debconf-i18n debconf-utils dialog esound-common fb-music-high fontconfig 
frozen-bubble-data grepmail gv intltool-debian libaiksaurus-data 
libaiksaurus0c102 libatk1.0-0 libatk1.0-dev libbonobo-activation4 libbonobo2-0 
libbonobo2-common libdb3 libdbd-mysql-perl libdbi-perl libeel2-data libesd0 
... 
The following packages will be REMOVED: 
autoconf2.13 frozen-bubble frozen-bubble-lib gconf2 gnomemeeting itk3.1-dev 
libbonoboui2-0 libbonoboui2-common libdigest-md5-perl libforms0.89 libgconf2-4 
libgnome2-0 libgnome2-common libgnomeui-0 libgnomevfs2-0 libgnomevfs2-common 
libgtk1.2-dev libgtk2.0-0png3 libgtk2.0-dev libmime-base64-perl 
libpango1.0-dev libsdl-mixer1.2-dev libsdl-perl libsdl-ttf1.2-dev 
libsdl1.2-dev libsmpeg-dev libstorable-perl nautilus tk8.3-dev tktable-dev 
x-window-system x-window-system-core xaw3dg-dev xlib6g xlib6g-dev xlibmesa-dev 
xlibmesa3 xlibosmesa3 xlibs-dev xlibs-pic xpdf xpdf-reader 
The following NEW packages will be installed: 
armagetron-common debconf-i18n fb-music-high fontconfig intltool-debian 
libaiksaurus-data libaiksaurus0c102 libeel2-data libfilehandle-unget-perl 
libfontconfig1 libforms1 libgdbm3 libgnutls7 libgsf-1 libice-dev libice6 
libidl0 liblzo1 libmagick5.5.7 libmail-mbox-messageparser-perl 
libmysqlclient12 libncursesw5 libnet-daemon-perl libnewt0.51 libpaper1 
libplrpc-perl libsdl-console ... 
75 packages upgraded, 80 newly installed, 42 to remove and 858 not upgraded. 
Need to get 67.1MB of archives. After unpacking 26.9MB will be used. 
Do you want to continue? [Y/n] Abort. 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 14 / 46
How dicult are package installation problems? 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 15 / 46
How dicult are package installation problems? 
Theorem 
The following problems are NP-complete: 
installability of a single package 
co-installability of a set of packages 
Proof idea 
Equivalence with boolean satisability. 
Di Cosmo, Leroy, Treinen, Vouillon et al. 
Managing the complexity of large free and open source package-based 
software distributions. 
ASE 2006: Automated Software Engineering. 
Alternative proof of NP-hardness (Daniel Burrows, 2008) 
Encode Sudoku solving as a package installation problem, left as exercise 
for the public. 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 15 / 46
Install/upgrade: nding a needle in a haystack 
Finding a solution is NP-complete, but installing and upgrading is more 
demanding... how many ways are there to install a package? 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 16 / 46
Install/upgrade: nding a needle in a haystack 
Finding a solution is NP-complete, but installing and upgrading is more 
demanding... how many ways are there to install a package? 
Too many upgrade candidates 
Suppose we have components qi , for 1  i  n, available in versions 1 and 
2, all of which are installed in version 1 on the system. 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 16 / 46
Install/upgrade: nding a needle in a haystack 
Finding a solution is NP-complete, but installing and upgrading is more 
demanding... how many ways are there to install a package? 
Too many upgrade candidates 
Suppose we have components qi , for 1  i  n, available in versions 1 and 
2, all of which are installed in version 1 on the system. 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 16 / 46
Install/upgrade: nding a needle in a haystack 
Finding a solution is NP-complete, but installing and upgrading is more 
demanding... how many ways are there to install a package? 
Too many upgrade candidates 
Suppose we have components qi , for 1  i  n, available in versions 1 and 
2, all of which are installed in version 1 on the system. 
We want to install a component p in version 1 that depends on all of 
q1; : : : ; qn, any version. 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 16 / 46
Install/upgrade: nding a needle in a haystack 
Finding a solution is NP-complete, but installing and upgrading is more 
demanding... how many ways are there to install a package? 
Too many upgrade candidates 
Suppose we have components qi , for 1  i  n, available in versions 1 and 
2, all of which are installed in version 1 on the system. 
We want to install a component p in version 1 that depends on all of 
q1; : : : ; qn, any version. 
Any of the 2n congurations f(p; 1)g [ f(qi ; i )ji 2 1 : : : n; 1  i  2g is a 
solution. 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 16 / 46
Install/upgrade: nding a needle in a haystack 
Finding a solution is NP-complete, but installing and upgrading is more 
demanding... how many ways are there to install a package? 
Too many upgrade candidates 
Suppose we have components qi , for 1  i  n, available in versions 1 and 
2, all of which are installed in version 1 on the system. 
We want to install a component p in version 1 that depends on all of 
q1; : : : ; qn, any version. 
Any of the 2n congurations f(p; 1)g [ f(qi ; i )ji 2 1 : : : n; 1  i  2g is a 
solution. 
Which one do we choose? 
paranoid only install p 
trendy install p and step up all qi 's to version 2 
... and exponentially many in between! 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 16 / 46
For users, dependency solving is not (yet) good enough! 
Main issues: 
1 incompleteness of ad-hoc dependency solvers 
2 poor expressivity 
3 moving target 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 17 / 46
For users, dependency solving is not (yet) good enough! 
Main issues: 
1 incompleteness of ad-hoc dependency solvers 
Example 
package: a package: b 
version: 2 version: 2 
depends: b (= 1) depends: a (= 1) 
package: a package: b 
version: 1 version: 1 
depends: b depends: a 
# apt-get install a b   fails 
The need for real solvers starts spreading 
Now ok for zypper, dnf, 0install, that use a SAT solver, but... 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 17 / 46
For users, dependency solving is not (yet) good enough! 
Main issues: 
1 incompleteness of ad-hoc dependency solvers 
2 poor expressivity (AKA lack of user-level policies) 
does your package manager enable you (sysadm) to: 
1 minimize installed size cool for embedded 
2 minimize download size 28.8 Kbps or mobile connections 
3 prefer version aligned installations 
4 minimise downgrades, or removals 
5 mix and match releases with more exibility than pinning? 
We need (measurable) solution quality, wrt user desiderata. 
see http://www.dicosmo.org/Articles/usercriteria.pdf 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 17 / 46
For users, dependency solving is not (yet) good enough! 
Main issues: 
1 incompleteness of ad-hoc dependency solvers 
2 poor expressivity 
3 moving target (research problem) 
I implementing a given state of the art solving strategy may be ne 
today, . . . 
I what if repositories grow ten times bigger? or add new features? 
I package manager developers need to connect with research on solvers 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 17 / 46
For users, dependency solving is not (yet) good enough! 
Main issues: 
1 incompleteness of ad-hoc dependency solvers 
2 poor expressivity 
3 moving target 
On the other hand. . . 
Various research communities have powerful constraint solvers able to 
address (some of) the above problems, and would love to validate them on 
real world use cases. 
We can close the gap! 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 17 / 46
Separation of concerns 
Use a common format for installation/upgrade problems... 
Figure: Common Upgradeability Description Format (CUDF) 
See www.mancoosi.org/cudf, and the libcudf library by Stefano Zacchiroli 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 18 / 46
Separation of concerns (cont.) 
Use a common format for installation/upgrade problems... 
Figure: Modular component manager 
See www.mancoosi.org/cudf, and the libcudf library by Stefano Zacchiroli 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 18 / 46
A language for user preferences 
A preference expression is built from four basic ingredients: 
package selectors denote in a proposed solution certain classes of packages 
(the ones that changed, the ones that got removed, etc.) 
measurements can be applied to a package selector to obtain an integer 
value (the number of package selected, the number of 
packages selected that are up-to-date, etc.) 
maximisation/minimisation directives to ask the solver to nd a solution 
that maximises or minimises the value of a measurement 
aggregation combinations can be used to ask the solver to combine 
criteria in lexicographical order 
For full details, see 
www.dicosmo.org/Articles/usercriteria.pdf 
www.mancoosi.org/misc-2012/criteria/ 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 19 / 46
Strategy to improve the state of the art 
Distribution 
editors 
report failures 
via DUDF 
Users 
Mancoosi 
Distribution 
editors 
upgrade 
install 
verify reports 
submit problems 
via CUDF 
interesting 
problems 
improved 
algorithms 
improved tools 
Competition 
Researchers 
(Mancoosi project, 2008) 
MISC competition http://www.mancoosi.org/misc/: 2010, 11, 12 
1 make the solving community aware of distro needs 
2 nd reusable common-ground dependency solvers 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 20 / 46
Stocktacking 
Several CUDF solvers are available 
$ apt-cache search cudf 
aspcud - CUDF solver based on Answer Set Programming 
mccs - multi-critera CUDF solver 
packup - CUDF solver based on pseudo-Boolean constraints 
aspcud supports sophisticated user preferences, e.g.: 
aspcud sample.cudf sol.cudf 
-count(down), -notuptodate(solution), 
-aligned(solution,source,sourceversion), 
-unsat_recommends(solution), -count(new) 
P2OSGi provisioning platform for Eclipsespeaks CUDF 
OPAMthe OCaml package managerprefers aspcud/CUDF 
[your component manager here] ? 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 21 / 46
Improved tools, added bonus for CUDF adopters 
Building systems 
Minimal system size -sum(solution,installedsize),-count(solution) 
Noah's ark +count(solution) 
Noah's ark, fresh -notuptodate(solution),+count(solution) 
Fast bootstrap -sum(solution,compiletime) 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 22 / 46
Improved tools, added bonus for CUDF adopters 
Building systems 
Minimal system size -sum(solution,installedsize),-count(solution) 
Noah's ark +count(solution) 
Noah's ark, fresh -notuptodate(solution),+count(solution) 
Fast bootstrap -sum(solution,compiletime) 
Repairing a broken system conguration 
Use an empty request with 
xup -count(changed),-count(down),-notuptodate(solution) 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 22 / 46
Improved tools, added bonus for CUDF adopters 
Building systems 
Minimal system size -sum(solution,installedsize),-count(solution) 
Noah's ark +count(solution) 
Noah's ark, fresh -notuptodate(solution),+count(solution) 
Fast bootstrap -sum(solution,compiletime) 
Repairing a broken system conguration 
Use an empty request with 
xup -count(changed),-count(down),-notuptodate(solution) 
Kiss cool eect 
All of this requires zero changes to the package manager code! 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 22 / 46
Improved tools, added bonus for CUDF adopters 
Building systems 
Minimal system size -sum(solution,installedsize),-count(solution) 
Noah's ark +count(solution) 
Noah's ark, fresh -notuptodate(solution),+count(solution) 
Fast bootstrap -sum(solution,compiletime) 
Repairing a broken system conguration 
Use an empty request with 
xup -count(changed),-count(down),-notuptodate(solution) 
Kiss cool eect 
All of this requires zero changes to the package manager code! 
Can nd unexpected usages, like thinning virtual machines 
https://github.com/rdicosmo/ami-thinner 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 22 / 46
Outline 
1 GNU/Linux Distributions: industrialising Free Software 
2 User side: improving package managers 
3 Back to the server side : Package QA 
Find uninstallable packages 
Learning from the future of repositories 
Find non co-installable packages 
Find new non co-installable packages 
Filter incoming packages 
4 In conclusion 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 23 / 46
Working for the QA team 
The QA team and the release manager need to track tens of thousands of 
packages, their bugs, their incompatibilities, etc. 
We want to catch automatically installation-related errors before they hit 
the user and the BTS! 
Static analysis of package dependencies 
nd packages that cannot be installed at all, and... 
I spot the ones that surely need to be xed (know who to blame) 
I provide advance warning for future problems 
nd the incompatibilities between packages 
show how these incompatibilities evolve 
automate package migration 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 24 / 46
QA 101: nd individually broken packages 
The problem 
In a repository R, nd all packages that cannot be installed at all 
Solving tens of thousands of NP-complete problem? 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 25 / 46
QA 101: nd individually broken packages 
The problem 
In a repository R, nd all packages that cannot be installed at all 
Solving tens of thousands of NP-complete problem? 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 25 / 46
QA 101: nd individually broken packages 
The problem 
In a repository R, nd all packages that cannot be installed at all 
Solving tens of thousands of NP-complete problem?In practice: 
explicit conicts between packages are not very frequent (without 
conicts, dependencies are dual Horn clauses) 
recent SAT solvers are able to handle current instances easily 
A practical tool 
rpmcheck/debcheck (Vouillon, 2006) 
I List all packages that cannot be installed at all in a repository 
I Provide short explanations 
I fast: analyses  400000 (binary) packages in a few seconds on 
commodity desktop hardware 
Integrated in the dose3 as distcheck, with many improvements by 
Pietro Abate et al. http://www.mancoosi.org/software/ 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 25 / 46
Usage in Debian 
https://qa.debian.org/dose/ 
Release goal: 0 non-installable packages 
Also: Debian autobuilder network (check whether the Build-Deps can be 
satised) 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 26 / 46
Usage in Debian (cont.) 
Verify installability of packages before uploading them to the archive 
I used daily by Emdebian 
Check that build-dependencies are satisable before attempting a 
package build 
I life changing for porters (quote) 
Generate test cases for nding errors occurring during package 
installation 
I le conicts, by Ralf Treinen 
I  650 bugs reported over time,  10 outstanding 
I https://qa.debian.org/dose/file-overwrites.html 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 27 / 46
QA 101, level 2: what can we say about the future? 
Denition (outdated packages) 
p is outdated if p is not installable, and it remains uninstallable no matter 
how the other packages evolve (i.e. p's maintainer has no excuses) 
Denition (challengers) 
p challenges q if upgrading p forces to upgrade q 
What they have in common: 
properties that hold in all installations of any future evolution of the 
repository 
seems unfeasible, but we can eciently decide some properties of this 
kind 
Abate, Di Cosmo, Treinen, Zacchiroli 
Learning from the Future of Component Repositories 
CBSE 2012. Best paper award 
Tools in the dose library now used in qa.debian.org/dose 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 28 / 46
Speculative analysis  example 
Outdated packages 
110 outdated packages in Debian testing (Oct 2011) 
60% because of ongoing transition Python 2.6 ! 2.7 
20% because of kdebindings, broken as part of a large refactoring 
process 
20% outdated dependencies unknown to developers 
I xed now thanks to our reports 
Signicance 
automatically distinguish between transiently and permanently 
uninstallable packages; pinpoint actual responsibilities for xing 
uninstallability issues! 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 29 / 46
Speculative analysis  example (cont.) 
Challengers (Debian Lenny) 
Source Version Target Version Breaks 
python-defaults 2.5.2-3  3 1079 
python-defaults 2.5.2-3 2.6  .  3 1075 
e2fsprogs 1.41.3-1 any 139 
ghc6 6.8.2dfsg1-1  6.8.2+ 136 
libio-compress-base-perl 2.012-1  2.012. 80 
libcompress-raw-zlib-perl 2.012-1  2.012. 80 
libio-compress-zlib-perl 2.012-1  2.012. 79 
icedove 2.0.0.19-1  2.1-0 78 
iceweasel 3.0.6-1  3.1 70 
haskell-mtl 1.1.0.0-2  1.1.0.0+ 48 
sip4-qt3 4.7.6-1  4.8 47 
ghc6 6.8.2dfsg1-1 6.8.2dfsg1+  .  6.8.2+ 36 
haskell-parsec 2.1.0.0-2  2.1.0.0+ 29 
Signicance 
provide a map of future uninstallability issues, sorted by severity, great 
dashboard for a release manager 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 30 / 46
QA 201: Package Co-Installability 
Next step: interaction between packages 
Example: is there any package which cannot be installed 
together with iceweasel? with kde-full? 
Denition: a set of packages are co-installable if they can be installed 
together. 
all packages should be installable (individually!) 
some package incompatibilities are expected 
Can we summarise all incompatibility issues, and avoid browsing through 
hundreds of hyperlinked pages? 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 31 / 46
Coinst 
A simplication theory for repositories, based on the extraction of a 
co-installability kernel, i.e. a repository much smaller than the original but 
equivalent wrt co-installability. 
Highlights: 
reexive/transitive dependency closure 
equivalent classes and quotients 
machine-checked proofs (in Coq!) 
In a word: tough maths at work! 
A tool: coinst (packaged in Debian) 
Vouillon, Di Cosmo 
On Software Components Co-Installability 
ESEC/FSE 2011: Foundations of Software Engineering. 
Best Artifact Award. 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 32 / 46
Co-Installability Graphs 
coinst -root iceweasel -o graph.dot Packages_i386 
iceweasel 
xul-ext-sage 
xul-ext-gnome-keyring 
libasound2 
xul-ext-greasemonkey 
liboss4-salsa-asound2 
coinst -root kde-full -o graph.dot Packages_i386 
libphonon4 libqt4-phonon 
kde-window-manager kwin-style-dekorator 
libgps20 fso-gpsd 
oxygen-icon-theme fdpowermon-icons 
libasound2 liboss4-salsa-asound2 
kde-full 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 33 / 46
libzo ke per-mt-dev libzo ke per-st-dev 
libtomcat6-java (x 10) libtomcat7-java (x 7) 
libdb5.1-java (x 5) 
libdb5.3-java (x 2) 
w3m-el-snapshot w3m-el 
fso-gsm0710muxd gsm0710muxd 
libnl2-dev (x 6) 
libnl-3-dev (x 5) 
zephyr-server zephyr-server-krb5 libzephyr4-krb5 libzephyr4 
# 
zab ix-proxy-mysql 
zab ix-proxy-pgsql 
zab ix-proxy-sqlite3 
zab ix-server-mysql 
zab ix-server-pgsql 
mdbto ls-dbg 
tomcat6 (x 2) jenkins 
openbabel (x 2) babel-1.4.0 
xmpuz les 
filelight-l10n 
xpuz les 
libasound2 (x 235 ) 
# 
libxine-dev libxine2-dev 
libxerces-c-dev (x 3) 
fso-config-gta01 
fso-config-gta02 
libxerces-c2-dev (x 2) 
xabacus 
xmabacus 
libsnack2 (x 2) libsnack2-alsa 
libportaudio-dev portaudio19-dev (x 4) 
libopenh323-1.18.0 (x 2) 
icheck qtmobility-dev 
libalog0.3-ful 
u cpsend 
fam 
wims-extra-al 
snd-gtk-pulse 
kde-l10n-k 
kde-l10n-ja 
kde-l10n-it 
kde-l10n-is 
kde-l10n-id 
kde-l10n-ia 
kde-l10n-hu 
kde-l10n-hr 
kde-l10n-hi 
kde-l10n-he 
kde-l10n-gu 
kde-l10n-gl 
kde-l10n-ga 
kde-l10n-fr 
kde-l10n-fi 
kde-l10n-eu 
kde-l10n-et 
kde-l10n-es 
kde-l10n-engb 
kde-l10n-el 
kde-l10n-de 
kde-l10n-da 
kde-l10n-cs 
kde-l10n-cavalencia 
kde-l10n-ca 
kde-l10n-bg 
kde-l10n-ar 
snd-gtk-jack # 
snd-nox (x 2) 
libdb5.1-java-gcj (x 2) 
libdb5.3-java-gcj 
libplayer-dev 
open-font-design-to lkit 
mscore (x 2) 
quas el-client-kde4 (x 2) 
quas el (x 2) 
libgtkhtml3.14-dev (x 9) 
libche se-dev (x 4) 
robot-player-dev 
libgnomeada2.14.2-dbg (x 2) 
fpc (x 2) 
python-jarabe-0.90 (x 4) 
python-jarabe-0.8 (x 4) 
sugar-browse-activity-0.86 (x 5) ∨ 
sugar-con ect-activity (x 9) ∨ 
python-jarabe-0.86 (x 4) 
sugar-calculate-activity 
sucrose-0.8 
sugar-emulator-0.8 (x 2) 
sugar-emulator-0.90 (x 2) 
sucrose-0.90 
sucrose-0.86 
sugar-emulator-0.86 (x 2) 
sugar-emulator-0.84 (x 2) 
libdevil-dev (x 39) 
libcups2-dev (x 1 ) 
libcupsdriver1-dev (x 9) 
libkaya-sdl-dev 
libguichan-dev 
mysqmail-pure-ftpd-log er 
gforge-lists-mailman 
exim4 (x 3) 
fusionforge-standard (x 2) 
wims-extra-es 
unixodbc-dev (x 12) 
python-sugar-0.8 (x 2) 
python-sugar-0.90 (x 2) 
python-sugar-0.86 (x 2) 
python-sugar-0.92 
sugar-artwork-0.92 
sugar-artwork-0.8 
sugar-artwork-0.90 
sugar-artwork-0.86 
# 
gs -man 
pure-ftpd-mysql 
pure-ftpd-postgresql 
pure-ftpd 
pure-ftpd-ldap 
proftpd-basic (x 19) 
wzdftpd (x 7) 
ftpd-s l 
mud leftpd 
heimdal-servers (x 2) 
rsh-redone-server 
mailutils-pop3d 
dovecot-pop3d 
ipopd 
popa3d 
courier-pop (x 2) 
solid-pop3d 
kolab-cyrus-pop3d 
kolab-cyrus-imapd 
citadel-server (x 2) 
mailutils-imap4d 
dovecot-imapd (x 2) 
courier-imap (x 2) 
esmtp-run 
s mtp 
masqmail 
msmtp-mta 
postfix (x 14) 
courier-mta (x 4) 
rmail 
libapache2-mod-php5 (x 3) 
libgd2-xpm (x 103) 
libiodbc2-dev 
# 
# 
# 
# 
cyrus-clients-2.4 (x 2) 
# 
# 
libapache2-mod-php5filter 
# 
# 
# 
# 
auth2db-frontend (x 5) 
guile-2.0-dev 
libtext-markdown-perl (x 3) 
snort-pgsql 
systemd-sysv 
xfingerd 
oidentd 
pidentd 
socklog-run 
rsyslog (x 6) 
inetutils-syslogd 
dsyslog (x 5) 
syslog-ng-core (x 5) 
systemd (x 3) 
# 
sysvinit 
upstart 
tor us-apache2 
hunspel -de-at-frami 
hunspel -de-de-frami 
filtergen 
ferm 
hunspel -fr 
myspel -de-at 
myspel -de-de 
sysv-rc (x 4) file-rc 
# 
python-sugar-0.84 (x 2) 
# 
sugar-artwork-0.84 
sudo sudo-ldap 
stardict-gnome 
stardict-gtk 
leafnode 
sn 
cyrus-pop3d-2.4 (x 3) 
tftpd-hpa 
∨ 
snort # 
busybox-syslogd 
klogd 
snort-mysql 
rxvt-ml 
rxvt-beta 
rxvt 
libreadline6-dev (x 18) 
libreadline-gplv2-dev (x 2) 
libmdbodbc1 (x 2) 
libmyodbc 
tdsodbc 
# 
yardradius 
bif mailutils-comsatd 
blends-doc cd -doc 
cpufreqd powernowd 
debget debian-go dies 
ecm gmp-ecm 
heimdal-docs krb5-doc 
radiusd-livingston # 
radsecproxy 
quas el-data 
quas el-data-kde4 
libqt4-dbg (x 3) 
qt-x11-fre -dbg 
gdb (x 15) gdb-minimal 
python-xat r (x 8) 
python-pyxat r (x 2) 
python-sqlite (x 13) 
python-pysqlite1.1 (x 2) 
lib o st-mpi-python1.46-dev (x 2) 
lib o st-mpi1.46-dev 
python-pyface (x 5) 
gnome-dbg 
gnome-core (x 2) 
libmapnik-dev (x 2) 
# 
libhdf5-serial-dev 
libhdf5-mpich-dev 
libme p-openmpi-dev 
python-traitsbackendqt 
python-traitsbackendwx 
slurm-l nl-torque 
gridengine-client 
torque-client 
ircd-ircu 
ngircd 
dancer-ircd 
python-envisage python-envisageplugins 
python-pyorbit-omg python-omniorb-omg 
# 
libpt-dev 
libjpeg8-dev (x 39) 
libjpeg62-dev 
libpt2.4.5-dev (x 2) 
libpt-1.10.10-dev (x 2) 
php5-mysql (x 2 ) php5-mysqlnd 
∨ 
apache2-mpm-itk 
apache2-mpm-prefork (x 4) 
phonon-backend-nul 
phonon-backend-vlc (x 2) 
phonon-backend-gstreamer (x 3) 
libphonon4 (x 24) libqt4-phonon 
libpcp3-dev (x 2) libpgpo l-dev 
libpcp3 (x 18) pgpo l2 
python-vtk (x 5) 
paraview-python 
e17-dev 
libecore-dev (x 3) 
libedje-dev 
libgrib-api-1.9.9 (x 5) 
libhdf5-openmpi-1.8.4 (x 28) 
# 
libopenh323-1.18.0-develop 
libopenmpi-dev (x 20) 
libopal-dev 
obex-data-server (x 3) obexd-server 
libneon27-dev 
libneon27-gnutls-dev 
libkrb5-dev (x 30) 
libgnutls-dev (x 44) 
heimdal-dev 
libelektra-dev (x 3) 
libgnutls28-dev 
mplayer (x 2) 
mplayer2 (x 2) 
mo n-bug y mo n-bug y-esd 
minbif (x 2) 
minbif-webcam 
mew-bin 
mew-beta-bin 
libgl1-mesa-glx (x 17) libgl1-mesa-swx11 (x 4) 
# 
libme p-dev 
libme p-mpi-dev 
maven2 maven 
ma tkit 
percona-to lkit 
lsb # 
nul mailer 
# 
# 
# 
xmail 
# 
lpr 
lprng 
# 
live-config-upstart 
live-config-runit # 
# 
live-config-systemd 
live-config-sysvinit 
# 
libnl-dev 
libiodbc2 (x 98) 
odbc-postgresql (x 2) 
libhdf4-alt-dev 
libhdf4-dev (x 2) 
libgpod4 (x 42) 
libgpod4-nogtk 
libgdchart-gd2-noxpm 
libgdchart-gd2-xpm 
libgd2-noxpm 
libgd-gd2-perl (x 28) 
libgd-gd2-noxpm-perl 
libswscale2 
libswscale-extra-2 
libavutil-extra-51 
libpostproc52 
xinetd 
libpostproc-extra-52 
libavutil51 
libavformat53 
# 
kc 
libavformat-extra-53 libavcodec-extra-53 
libavfilter2 
netscript-2.4-upstart 
strongswan-starter 
libavfilter-extra-2 
libavdevice53 
libavdevice-extra-53 
libavcodec53 
libalog0.3-base (x 3) 
gnat-4.4 (x 41) 
gnat-4.6 (x 8) 
# 
libhdf5-serial-1.8.4 
libhdf5-mpich-1.8.4 
libgrib-api-data 
lam4-dev 
mpi-doc 
# 
mpich2-doc 
openmpi-doc 
lam-mpidoc 
python-kombu (x 4) 
python-cjson (x 2) 
kdif 3 
kdif 3-qt 
oxygen-icon-theme fdpowermon-icons 
kdesvn-kio-plugins 
kdesdk-kio-plugins 
libjack0 (x 2) 
libjack-jackd2-0 (x 2) 
# 
raco n (x 3) 
# 
openswan (x 5) 
strongswan-ikev2 (x 2) 
strongswan-ikev1 
in (x 2) 
in 2-inews 
in 2-dev 
# 
inetutils-telnetd 
# 
krb5-telnetd 
krb5-rsh-server 
# 
telnetd 
# 
telnetd-s l 
iputils-ping (x 2 ) inetutils-ping 
# 
inetutils-inetd 
openbsd-inetd 
rlinetd 
ike (x 2) 
# 
ifupdown (x 3) 
netscript-2.4 
iceape (x 4) 
xul-ext-requestpolicy 
mget y-fax hylafax-client (x 4) 
inetutils-ftpd 
krb5-ftpd 
ftpd 
twoftpd-run 
runit (x 3) daemonto ls-run 
vsftpd 
wu-ftpd 
libhdf5-lam-1.8.4 
sendmail-bin (x 3) 
harden-servers (x 2) pyftpd 
# 
rpcbind (x 1 ) 
rsh-server 
# 
guile-1.6-dev 
guile-1.8-dev (x 4) 
gtalk (x 2) 
inetutils-talkd 
talkd 
# 
grub-pc (x 4) 
grub-efi-ia32 (x 2) 
grub-corebo t (x 2) 
grub2-com on 
grub-ie 1275 
grub-efi-amd64 
grub-legacy 
# 
libgrib-api-0d-1 (x 2) 
perlmagick 
graphicsmagick-libmagick-dev-compat 
libmagickcore-dev (x 6) 
graphicsmagick-imagemagick-compat octave-image 
imagemagick (x 2) 
gpivto ls-mpi gpivto ls 
gpiv 
gpiv-mpi 
gpe-login 
xdm 
wdm 
slim 
kdm (x 2) 
gnuspo l (x 3) system-config-printer-udev 
gnome-control-center (x 3) 
gpe-conf (x 3) 
gnome-control-center-data 
cap lets-data 
git-daemon-run 
git-daemon-sysvinit 
gdm3 (x 2) 
# 
fusionforge-ful 
∨ 
exim4-daemon-heavy (x 3) 
fusionforge-minimal 
fuse (x 57) 
lo p-aes-utils 
libgps20 (x 14) 
fso-gpsd 
fso-frameworkd (x 3) 
libphone-utils0 (x 4) 
# 
fso-config-general 
fre radius-com on (x 8) 
fontforge (x 2) fontforge-nox 
fltk1.1-games 
fltk1.3-games 
kde-l10n-zhtw 
kde-l10n-zhcn 
kde-l10n-wa 
kde-l10n-uk 
kde-l10n-tr 
kde-l10n-th 
kde-l10n-sv 
kde-l10n-sr 
kde-l10n-sl 
kde-l10n-sk 
kde-l10n-ru 
kde-l10n-ro 
kde-l10n-ptbr 
kde-l10n-pt 
kde-l10n-pl 
kde-l10n-pa 
kde-l10n-n 
kde-l10n-nl 
kde-l10n-nds 
kde-l10n-nb 
kde-l10n-mai 
kde-l10n-lv 
kde-l10n-lt 
kde-l10n-ko 
kde-l10n-kn (x 2) 
kde-l10n-km 
festvox-kdlpc16k 
festvox-kdlpc8k 
festvox-kal pc16k 
festvox-kal pc8k 
cman (x 3) 
fence-agents 
gamin (x 11) 
libfam0 (x 3) 
# 
exim4-config (x 4) 
# 
exim4-daemon-light (x 2) 
# 
evince (x 3) 
evince-gtk 
epiphany-browser (x 5) 
swfdec-mozil a 
# 
emacs23 (x 2) 
emacs23-lucid 
emacs23-nox 
# 
libdap-dev 
libdnet-dev (x 2) 
libcurl4-gnutls-dev (x 24) 
# 
dma 
discount # 
markdown 
isc-dhcp-server (x 4) 
dhcp-helper isc-dhcp-relay (x 2) 
# 
libdb5.1-dev (x 5) 
libdb4.8-dev 
libdb5.3-dev (x 2) 
dconf-to ls 
dconf 
libcyrus-imap-perl24 (x 4) 
kolab-libcyrus-imap-perl (x 3) 
cyrus-n tpd-2.4 (x 3) # 
cyrus-com on (x 7) 
kolab-cyrus-com on 
in 2 
in 2-lfs 
cyrus-imapd-2.4 (x 3) 
# 
uw-imapd 
# 
kolab-cyrus-clients 
libcurl4-ns -dev (x 2) 
libcurl4-opens l-dev 
cups-client (x 15) 
cups-bsd (x 2) 
controlaula 
ltsp-controlaula 
gnome-font-viewer 
console-to ls (x 4) 
kbd 
console-setup (x 2) 
console-setup-mini 
libcoin60-doc 
inventor-dev 
libcoin60-dev 
resource-agents (x 5) cluster-agents 
citadel-mta (x 2) 
ucspi-unix 
check-mk-livestatus 
cfingerd 
efingerd 
pawserv (x 2) 
udhcpd 
sysklogd 
fingerd 
lib o st1.46-dev (x 18) 
lib o st1.48-dev (x 63) 
lib o st-mpi-python1.46.1 
lib o st-mpi-python1.48.0 
bitlbe (x 2) bitlbe -libpurple 
fp-compiler-2.4.4 (x 14) 
binutils-gold 
# 
bidentd 
ident2 
nul identd 
cron (x 5) 
bcron-run 
bandwidthd bandwidthd-pgsql 
# 
atftpd 
tftpd 
python-pyatspi 
python-pyatspi2 (x 5) 
asterisk-core-sounds-es-gsm asterisk-prompt-es-co 
# 
asterisk-voicemail 
asterisk-voicemail-imapstorage 
asterisk-voicemail-odbcstorage 
iputils-arping (x 3) 
arping 
ardour 
ardour-i686 
apache2-prefork-dev 
apache2-threaded-dev 
apache2-mpm-event # 
# 
apache2-mpm-worker 
libasound2-dev (x 2) 
libos 4-salsa-dev 
libos -salsa-asound2 
libos 4-salsa-asound2 
xul-ext-adblock-plus (x 2) 
libabiword-2.9-dev (x 4) 
libace-foxreactor-dev (x 3) 
acetoneiso 
akonadi-kde-resource-go gledata (x 358) 
plasma-widget-amule (x 56) 
libapq-postgresql-dbg (x 2) 
auth2db (x 5) 
banshe -extension-lirc (x 6) 
bluedevil 
lib o st-al -dev (x 4) 
lib o st-mpi-dev (x 2) 
cdo (x 3) 
libcegui-mk2-dev 
chemical-structures 
cl-sql-odbc (x 2) 
code-saturne (x 13) 
con ectomeviewer (x 2) 
courier-faxmail 
cyrus-admin-2.2 (x 5) 
cyrus-clients-2.2 
cyrus-replication (x 2) ∨ 
digikam-dbg (x 20) 
docbo kwiki 
do dle-dbg (x 2) 
libdose2-ocaml-dev (x 2) 
libe t-dev (x 3) 
∨ 
fai-quickstart 
∨ 
fileschanged ∨ 
libfluidsynth-dev (x 2) 
fre radius-iodbc 
fre vo (x 4) 
fusionforge-plugin-blocks (x 25) 
python-gamera-dev (x 2) 
∨ 
∨ 
∨ 
libgd-gd2-noxpm-ocaml-dev (x 2) 
libgdal1-dev (x 3) 
libgdb-dev 
libgeda-dev 
geogebra-kde (x 2) 
glance (x 20) 
gnome-osd 
gnome-ses ion (x 4) 
gnome-utils 
gosa (x 4 ) 
goto-fai-backend 
∨ 
gpe 
gradle (x 2) 
gros ∨ 
grub-cho se-default ∨ 
grub-imagebo t ∨ 
hapm (x 3) 
libhdf5-lam-dev 
libigstk4-dev (x 3) 
il uminator-demo 
imagemagick-dbg 
jackd1 (x 2) 
jackd2 (x 3) 
jenkins-tomcat 
libk3b-dev (x 7) 
libkaya-gd-dev 
kdeartwork (x 19) 
kdepim-dbg (x 3) 
kdeplasma-ad ons-dbg 
kdesvn (x 2) 
keystone (x 2) 
kolabd 
libalog-ful -dbg (x 2) 
libapache2-mod-log-sql (x 5) 
f mpeg-dbg (x 2) 
libgd2-xpm-dev 
libgdchart-gd2-noxpm-dev 
libgdchart-gd2-xpm-dev 
libgpod-dev 
libgpod-nogtk-dev 
libmojomojo-perl 
libphone-ui-2010 517 (x 2) 
libphone-ui-dev 
libtuxcap-dev 
ltsp-client 
ltsp-server-standalone 
libluabind-dev 
libmagics+ -dev (x 4) 
maven-debian-helper 
gnome (x 2) 
mew 
mew-beta 
monodevelop-debug er-gdb 
mysqmail-courier-log er 
∨ 
mysqmail-dovecot-log er 
∨ 
nagiosgrapher 
network-manager-strongswan 
nova-compute-kvm 
nova-network 
octave-pkg-dev (x 2) 
og videoto ls (x 2) 
libsaml2-dev (x 3) 
libopenwalnut1-dev 
libapache2-mod-pas enger (x 2) 
∨ 
libpcp-logsum ary-perl (x 2) 
pfqueue (x 2) ∨ 
python-fs 
python-traitsgui ∨ 
qt-sdk 
r-base-core-dbg (x 2) 
redhat-cluster-suite (x 2) 
request-tracker3.8 (x 6) 
sa-learn-cyrus ∨ 
sdpam 
sepia 
snd-gtk 
∨ 
libsoqt4-dev 
startupmanager 
strongswan (x 2) 
∨ 
python-jarabe-0.84 (x 6) 
sucrose-0.84 
∨ 
task-kde-desktop 
task-lxde-desktop 
tcos-tftp-dhcp 
libkwebkit-dbg 
ytalk 
∨ 
∨ 
zoneminder 
xmakemol xmakemol-gl 
libxine1-doc libxine2-doc 
xserver-xorg-input-mtrack xserver-xorg-input-multitouch 
wmnd wmnd-snmp 
wl 
wl-beta 
semi 
vm (x 2) 
gnus 
libwine-gecko-dbg-unstable libwine-gecko-unstable 
w3c-dtd-xhtml w3c-sgml-lib (x 2) 
ucspi-tcp ucspi-tcp-ipv6 
tk8.4-doc tk8.5-doc 
texmacs-com on (x 2) texmacs-extra-fonts 
tcl-trf (x 2) tcl-trf-doc 
tcl8.4-doc tcl8.5-doc 
libtag1-rusxmms libtag1-vanil a 
synce-hal (x 2) synce-serial 
slapos-client python-zc.buildout 
slurm-l nl (x 2) sinfo 
# 
qterm 
# 
torque-client-x11 
shorewal 6-lite 
uif 
# 
shorewal -lite 
fiaif 
shorewal (x 2) 
shorewal -init ∨ 
scid-rating-data scid-spel -data 
# 
rxvt-unicode (x 2) 
rxvt-unicode-256color 
rxvt-unicode-lite 
ruby-bacon ruby-rspec-core (x 7) 
libamrita-ruby1.8 (x 2) ruby-amrita2 (x 4) 
rt-tests xenomai-runtime 
libreadline5-dbg libreadline6-dbg 
lib64readline-gplv2-dev lib64readline6-dev 
# 
ratbox-services-mysql 
ratbox-services-pgsql 
ratbox-services-sqlite 
raptor-utils raptor2-utils 
radiusclient1 (x 2) 
libradiusclient-ng-dev 
libradius1-dev 
radare radare-gtk 
libqwt-doc libqwt5-doc 
libqwt-dev libqwt5-qt4-dev 
python-quixote (x 2) python-quixote1 (x 2) 
qca-dev libqca2-dev (x 2) 
psi3 yagiuda 
planet-venus racket (x 2) 
pimd smcroute 
php-apc php5-xcache 
pen mush pen mush-mysql 
orvil e-write xtel 
openwince-jtag urjtag 
opendns ec-enforcer-mysql (x 2) opendns ec-enforcer-sqlite3 (x 2) 
olpc-kbdshim olpc-kbdshim-hal 
libode-dev libode-sp-dev 
oce-draw opencascade-draw 
liboce-foundation-dev (x 5) libopencascade-foundation-dev (x 6) 
# 
nginx-extras (x 2) 
nginx-ful (x 2) 
nginx-light (x 2) 
nginx ∨ 
libnetpbm10-dev 
libnetpbm9-dev 
libpgm-dev 
tftp tftp-hpa 
telnet telnet-s l 
harden-clients 
x2vnc 
ftp-upload 
ftp ftp-s l 
mtr mtr-tiny modem anager (x 2) wader-core 
libapache2-mod-wsgi libapache2-mod-wsgi-py3 
mlterm mlterm-tiny 
ipadic chasen-can adic naist-jdic (x 2) 
mcstrans policycoreutils (x 6) 
myspel -hu hunspel -hu 
myspel -fr # 
myspel -fr-gut 
myspel -da 
hunspel -vi 
hunspel -sr 
hunspel -sh 
hunspel -da 
lzma xz-lzma 
liblua50-socket-dev liblua50-socket2 luasocket 
luasocket-dev 
# 
libxbase2.0-bin 
dvb-ap s (x 2) 
libxdb-dev 
libupnp3-dev (x 2) libupnp4-dev 
libunique-doc libunique-3.0-doc 
libsieve2-dev libmailutils-dev (x 2) 
libsendmail-milter-perl libsendmail-pmilter-perl 
libpam-ldap libpam-ldapd 
libpam-heimdal libpam-krb5 
libowfat-dev 
libudt-dev 
libcdb-dev 
libodbc-ruby-doc ruby-odbc (x 10) 
libns -ldap libns -ldapd 
libnet-proxy-perl s lh 
libmimedir-dev libmimedir-gnome-dev (x 2) 
libev-libevent-dev libevent-dev 
libapache2-authen tlm-perl libauthen-smb-perl (x 2) 
libantlr3c-3.2-0 libantlr3c-antlrdbg-3.2-0 
ldap2dns ldap2zone ldapdns 
laptop-mode-to ls noflushd 
joe joe-jup 
# 
ircd-hybrid 
# 
# 
ircd-irc2 
inspircd (x 2) 
charybdis 
ircd-ratbox (x 2) 
im-config im-switch 
# 
hunspel -de-ch 
myspel -de-ch 
hunspel -de-ch-frami 
# 
hunspel -de-at 
# 
myspel -de-de-oldspel 
hunspel -de-de 
hunspel -de-med ∨ 
ifrench ifrench-gut hwloc hwloc-nox 
hunspel -ru myspel -ru 
hunspel -en-us myspel -en-us 
hunspel -to ls myspel -to ls 
hel o hel o-debhelper 
heimdal-clients (x 3) 
otp 
krb5-clients 
# 
krb5-user (x 4) 
openafs-kpas wd 
libgnutls26-dbg libgnutls28-dbg 
# 
gnome-p 
openresolv 
resolvconf 
gnoki -smsd (x 3) smsto ls 
gmt (x 2) gmt-manpages 
gimp-dcraw gimp-ufraw 
libgfs-1.3-2 (x 3) libgfs-mpi-1.3-2 (x 3) 
gc -mingw32 
mingw32 
mingw32-binutils 
binutils-mingw-w64-x86-64 
binutils-mingw-w64-i686 
binutils-mingw-w64 (x 5) 
# 
libstdc+ 6-4.4-doc 
libstdc+ 6-4.5-doc 
libstdc+ 6-4.6-doc 
# 
libstdc+ 6-4.4-dbg 
libstdc+ 6-4.5-dbg 
libstdc+ 6-4.6-dbg 
# 
lib64stdc+ 6-4.4-dbg 
lib64stdc+ 6-4.5-dbg 
lib64stdc+ 6-4.6-dbg 
libwn -dev libwn 6-dev 
fre bsd-sendpr gnats-user (x 2) 
fre bsd-buildutils (x 2) pmake 
fo matic-db fo matic-db-compres ed-p ds 
fo kb-plainx fo kb-wmaker 
libfltk1.1-dev (x 3) libfltk1.3-dev (x 2) 
flex flex-old 
bison (x 2) bison+ 
pretzel (x 3) 
firebird2.5-clas ic-com on (x 2) 
firebird2.5-super (x 2) firebird2.5-server-com on (x 3) 
firebird2.5-clas ic 
firebird2.5-superclas ic 
firebird2.1-server-com on (x 2) 
firebird2.1-clas ic 
firebird2.1-super 
fb-music-high fb-music-low 
et ercap-graphical et ercap-text-only 
erlang-base erlang-base-hipe 
elvis elvis-console 
elinks-data (x 2) elinks-lite 
libdwarf-dev libdw-dev libelf-dev (x 2) libelfg0-dev (x 2) 
nscd unscd 
dvi2ps-fontdata-ptexfake ptex-base (x 6) 
python-dnspython (x 5) linkchecker (x 2) 
dicod (x 4) dictd 
dico le-dico-de-rene-cougnenc 
dhcpcd pump (x 2) 
# 
dbsk d-cdb 
sk search 
yask serv 
libdb5.1-tcl libdb5.3-tcl 
libdb5.1-stl-dev libdb5.3-stl-dev libdb5.1-sql-dev (x 2) libdb5.3-sql-dev 
libsasl2-modules-gs api-heimdal (x 2) libsasl2-modules-gs api-mit (x 2) 
libcunit1 (x 2) libcunit1-ncurses (x 2) 
cros fire-maps cros fire-maps-smal 
crack crack-md5 
courier-maildrop (x 5) maildrop 
conky-cli conky-std 
libclut er-gtk-1.0-doc (x 2) libclut er-gtk-0.10-doc 
libclo g-isl-dev libclo g-p l-dev 
# 
chrony 
ntp (x 2) 
open tpd 
python-cher ypy3 (x 4) python-cher ypy (x 3) 
check-mk-config-icinga check-mk-config-nagios3 
busybox (x 4) busybox-static 
bo tchart bo tchart2 
lib o st1.46-doc lib o st1.48-doc (x 2) 
# 
bacula-com on-mysql (x 3) 
bacula-com on-pgsql (x 3) 
bacula-com on-sqlite3 (x 5) 
libavahi-ui-dev libavahi-ui-gtk3-dev 
# 
aumix 
aumix-gtk 
os -preserve 
mpg123-el ∨ 
# 
asterisk-core-sounds-fr-gsm 
asterisk-prompt-fr-armel e 
asterisk-prompt-fr-proformatique 
# 
apsfilter 
magicfilter 
printfilters-p d 
# 
apcupsd (x 2) 
nut-server (x 5) 
powstatd 
apache2-suexec apache2-suexec-custom 
amavisd-new (x 3) pham -ldap-amavis 
# 
aide 
aide-dynamic 
aide-xen 
2ping (x 29205) 
console-setup-fre bsd MIS ING DEP 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 34 / 46
Interactive graph viewers on 
http://coinst.irill.org/ 
libzo ke per-mt-dev libzo ke per-st-dev 
libtomcat6-java (x 10) libtomcat7-java (x 7) 
libdb5.1-java (x 5) 
libdb5.3-java (x 2) 
w3m-el-snapshot w3m-el 
fso-gsm0710muxd gsm0710muxd 
libnl2-dev (x 6) 
libnl-3-dev (x 5) 
zephyr-server zephyr-server-krb5 libzephyr4-krb5 libzephyr4 
# 
zab ix-proxy-mysql 
zab ix-proxy-pgsql 
zab ix-proxy-sqlite3 
zab ix-server-mysql 
zab ix-server-pgsql 
mdbto ls-dbg 
tomcat6 (x 2) jenkins 
openbabel (x 2) babel-1.4.0 
xmpuz les 
filelight-l10n 
xpuz les 
libasound2 (x 235 ) 
# 
libxine-dev libxine2-dev 
libxerces-c-dev (x 3) 
fso-config-gta01 
fso-config-gta02 
libxerces-c2-dev (x 2) 
xabacus 
xmabacus 
libsnack2 (x 2) libsnack2-alsa 
libportaudio-dev portaudio19-dev (x 4) 
libopenh323-1.18.0 (x 2) 
icheck qtmobility-dev 
libalog0.3-ful 
u cpsend 
fam 
wims-extra-al 
snd-gtk-pulse 
kde-l10n-k 
kde-l10n-ja 
kde-l10n-it 
kde-l10n-is 
kde-l10n-id 
kde-l10n-ia 
kde-l10n-hu 
kde-l10n-hr 
kde-l10n-hi 
kde-l10n-he 
kde-l10n-gu 
kde-l10n-gl 
kde-l10n-ga 
kde-l10n-fr 
kde-l10n-fi 
kde-l10n-eu 
kde-l10n-et 
kde-l10n-es 
kde-l10n-engb 
kde-l10n-el 
kde-l10n-de 
kde-l10n-da 
kde-l10n-cs 
kde-l10n-cavalencia 
kde-l10n-ca 
kde-l10n-bg 
kde-l10n-ar 
snd-gtk-jack # 
snd-nox (x 2) 
libdb5.1-java-gcj (x 2) 
libdb5.3-java-gcj 
libplayer-dev 
open-font-design-to lkit 
mscore (x 2) 
quas el-client-kde4 (x 2) 
quas el (x 2) 
libgtkhtml3.14-dev (x 9) 
libche se-dev (x 4) 
robot-player-dev 
libgnomeada2.14.2-dbg (x 2) 
fpc (x 2) 
python-jarabe-0.90 (x 4) 
python-jarabe-0.8 (x 4) 
sugar-browse-activity-0.86 (x 5) ∨ 
sugar-con ect-activity (x 9) ∨ 
python-jarabe-0.86 (x 4) 
sugar-calculate-activity 
sucrose-0.8 
sugar-emulator-0.8 (x 2) 
sugar-emulator-0.90 (x 2) 
sucrose-0.90 
sucrose-0.86 
sugar-emulator-0.86 (x 2) 
sugar-emulator-0.84 (x 2) 
libdevil-dev (x 39) 
libcups2-dev (x 1 ) 
libcupsdriver1-dev (x 9) 
libkaya-sdl-dev 
libguichan-dev 
mysqmail-pure-ftpd-log er 
gforge-lists-mailman 
exim4 (x 3) 
fusionforge-standard (x 2) 
wims-extra-es 
unixodbc-dev (x 12) 
python-sugar-0.8 (x 2) 
python-sugar-0.90 (x 2) 
python-sugar-0.86 (x 2) 
python-sugar-0.92 
sugar-artwork-0.92 
sugar-artwork-0.8 
sugar-artwork-0.90 
sugar-artwork-0.86 
# 
gs -man 
pure-ftpd-mysql 
pure-ftpd-postgresql 
pure-ftpd 
pure-ftpd-ldap 
proftpd-basic (x 19) 
wzdftpd (x 7) 
ftpd-s l 
mud leftpd 
heimdal-servers (x 2) 
rsh-redone-server 
mailutils-pop3d 
dovecot-pop3d 
ipopd 
popa3d 
courier-pop (x 2) 
solid-pop3d 
kolab-cyrus-pop3d 
kolab-cyrus-imapd 
citadel-server (x 2) 
mailutils-imap4d 
dovecot-imapd (x 2) 
courier-imap (x 2) 
esmtp-run 
s mtp 
masqmail 
msmtp-mta 
postfix (x 14) 
courier-mta (x 4) 
rmail 
libapache2-mod-php5 (x 3) 
libgd2-xpm (x 103) 
libiodbc2-dev 
# 
# 
# 
# 
cyrus-clients-2.4 (x 2) 
# 
# 
libapache2-mod-php5filter 
# 
# 
# 
# 
auth2db-frontend (x 5) 
guile-2.0-dev 
libtext-markdown-perl (x 3) 
snort-pgsql 
systemd-sysv 
xfingerd 
oidentd 
pidentd 
socklog-run 
rsyslog (x 6) 
inetutils-syslogd 
dsyslog (x 5) 
syslog-ng-core (x 5) 
systemd (x 3) 
# 
sysvinit 
upstart 
tor us-apache2 
hunspel -de-at-frami 
hunspel -de-de-frami 
filtergen 
ferm 
hunspel -fr 
myspel -de-at 
myspel -de-de 
sysv-rc (x 4) file-rc 
# 
python-sugar-0.84 (x 2) 
# 
sugar-artwork-0.84 
sudo sudo-ldap 
stardict-gnome 
stardict-gtk 
leafnode 
sn 
cyrus-pop3d-2.4 (x 3) 
tftpd-hpa 
∨ 
snort # 
busybox-syslogd 
klogd 
snort-mysql 
rxvt-ml 
rxvt-beta 
rxvt 
libreadline6-dev (x 18) 
libreadline-gplv2-dev (x 2) 
libmdbodbc1 (x 2) 
libmyodbc 
tdsodbc 
# 
yardradius 
bif mailutils-comsatd 
blends-doc cd -doc 
cpufreqd powernowd 
debget debian-go dies 
ecm gmp-ecm 
heimdal-docs krb5-doc 
radiusd-livingston # 
radsecproxy 
quas el-data 
quas el-data-kde4 
libqt4-dbg (x 3) 
qt-x11-fre -dbg 
gdb (x 15) gdb-minimal 
python-xat r (x 8) 
python-pyxat r (x 2) 
python-sqlite (x 13) 
python-pysqlite1.1 (x 2) 
lib o st-mpi-python1.46-dev (x 2) 
lib o st-mpi1.46-dev 
python-pyface (x 5) 
gnome-dbg 
gnome-core (x 2) 
libmapnik-dev (x 2) 
# 
libhdf5-serial-dev 
libhdf5-mpich-dev 
libme p-openmpi-dev 
python-traitsbackendqt 
python-traitsbackendwx 
slurm-l nl-torque 
gridengine-client 
torque-client 
ircd-ircu 
ngircd 
dancer-ircd 
python-envisage python-envisageplugins 
python-pyorbit-omg python-omniorb-omg 
# 
libpt-dev 
libjpeg8-dev (x 39) 
libjpeg62-dev 
libpt2.4.5-dev (x 2) 
libpt-1.10.10-dev (x 2) 
php5-mysql (x 2 ) php5-mysqlnd 
∨ 
apache2-mpm-itk 
apache2-mpm-prefork (x 4) 
phonon-backend-nul 
phonon-backend-vlc (x 2) 
phonon-backend-gstreamer (x 3) 
libphonon4 (x 24) libqt4-phonon 
libpcp3-dev (x 2) libpgpo l-dev 
libpcp3 (x 18) pgpo l2 
python-vtk (x 5) 
paraview-python 
e17-dev 
libecore-dev (x 3) 
libedje-dev 
libgrib-api-1.9.9 (x 5) 
libhdf5-openmpi-1.8.4 (x 28) 
# 
libopenh323-1.18.0-develop 
libopenmpi-dev (x 20) 
libopal-dev 
obex-data-server (x 3) obexd-server 
libneon27-dev 
libneon27-gnutls-dev 
libkrb5-dev (x 30) 
libgnutls-dev (x 44) 
heimdal-dev 
libelektra-dev (x 3) 
libgnutls28-dev 
mplayer (x 2) 
mplayer2 (x 2) 
mo n-bug y mo n-bug y-esd 
minbif (x 2) 
minbif-webcam 
mew-bin 
mew-beta-bin 
libgl1-mesa-glx (x 17) libgl1-mesa-swx11 (x 4) 
# 
libme p-dev 
libme p-mpi-dev 
maven2 maven 
ma tkit 
percona-to lkit 
lsb # 
nul mailer 
# 
# 
# 
xmail 
# 
lpr 
lprng 
# 
live-config-upstart 
live-config-runit # 
# 
live-config-systemd 
live-config-sysvinit 
# 
libnl-dev 
libiodbc2 (x 98) 
odbc-postgresql (x 2) 
libhdf4-alt-dev 
libhdf4-dev (x 2) 
libgpod4 (x 42) 
libgpod4-nogtk 
libgdchart-gd2-noxpm 
libgdchart-gd2-xpm 
libgd2-noxpm 
libgd-gd2-perl (x 28) 
libgd-gd2-noxpm-perl 
libswscale2 
libswscale-extra-2 
libavutil-extra-51 
libpostproc52 
xinetd 
libpostproc-extra-52 
libavutil51 
libavformat53 
# 
kc 
libavformat-extra-53 libavcodec-extra-53 
libavfilter2 
netscript-2.4-upstart 
strongswan-starter 
libavfilter-extra-2 
libavdevice53 
libavdevice-extra-53 
libavcodec53 
libalog0.3-base (x 3) 
gnat-4.4 (x 41) 
gnat-4.6 (x 8) 
# 
libhdf5-serial-1.8.4 
libhdf5-mpich-1.8.4 
libgrib-api-data 
lam4-dev 
mpi-doc 
# 
mpich2-doc 
openmpi-doc 
lam-mpidoc 
python-kombu (x 4) 
python-cjson (x 2) 
kdif 3 
kdif 3-qt 
oxygen-icon-theme fdpowermon-icons 
kdesvn-kio-plugins 
kdesdk-kio-plugins 
libjack0 (x 2) 
libjack-jackd2-0 (x 2) 
# 
raco n (x 3) 
# 
openswan (x 5) 
strongswan-ikev2 (x 2) 
strongswan-ikev1 
in (x 2) 
in 2-inews 
in 2-dev 
# 
inetutils-telnetd 
# 
krb5-telnetd 
krb5-rsh-server 
# 
telnetd 
# 
telnetd-s l 
iputils-ping (x 2 ) inetutils-ping 
# 
inetutils-inetd 
openbsd-inetd 
rlinetd 
ike (x 2) 
# 
ifupdown (x 3) 
netscript-2.4 
iceape (x 4) 
xul-ext-requestpolicy 
mget y-fax hylafax-client (x 4) 
inetutils-ftpd 
krb5-ftpd 
ftpd 
twoftpd-run 
runit (x 3) daemonto ls-run 
vsftpd 
wu-ftpd 
libhdf5-lam-1.8.4 
sendmail-bin (x 3) 
harden-servers (x 2) pyftpd 
# 
rpcbind (x 1 ) 
rsh-server 
# 
guile-1.6-dev 
guile-1.8-dev (x 4) 
gtalk (x 2) 
inetutils-talkd 
talkd 
# 
grub-pc (x 4) 
grub-efi-ia32 (x 2) 
grub-corebo t (x 2) 
grub2-com on 
grub-ie 1275 
grub-efi-amd64 
grub-legacy 
# 
libgrib-api-0d-1 (x 2) 
perlmagick 
graphicsmagick-libmagick-dev-compat 
libmagickcore-dev (x 6) 
graphicsmagick-imagemagick-compat octave-image 
imagemagick (x 2) 
gpivto ls-mpi gpivto ls 
gpiv 
gpiv-mpi 
gpe-login 
xdm 
wdm 
slim 
kdm (x 2) 
gnuspo l (x 3) system-config-printer-udev 
gnome-control-center (x 3) 
gpe-conf (x 3) 
gnome-control-center-data 
cap lets-data 
git-daemon-run 
git-daemon-sysvinit 
gdm3 (x 2) 
# 
fusionforge-ful 
∨ 
exim4-daemon-heavy (x 3) 
fusionforge-minimal 
fuse (x 57) 
lo p-aes-utils 
libgps20 (x 14) 
fso-gpsd 
fso-frameworkd (x 3) 
libphone-utils0 (x 4) 
# 
fso-config-general 
fre radius-com on (x 8) 
fontforge (x 2) fontforge-nox 
fltk1.1-games 
fltk1.3-games 
kde-l10n-zhtw 
kde-l10n-zhcn 
kde-l10n-wa 
kde-l10n-uk 
kde-l10n-tr 
kde-l10n-th 
kde-l10n-sv 
kde-l10n-sr 
kde-l10n-sl 
kde-l10n-sk 
kde-l10n-ru 
kde-l10n-ro 
kde-l10n-ptbr 
kde-l10n-pt 
kde-l10n-pl 
kde-l10n-pa 
kde-l10n-n 
kde-l10n-nl 
kde-l10n-nds 
kde-l10n-nb 
kde-l10n-mai 
kde-l10n-lv 
kde-l10n-lt 
kde-l10n-ko 
kde-l10n-kn (x 2) 
kde-l10n-km 
festvox-kdlpc16k 
festvox-kdlpc8k 
festvox-kal pc16k 
festvox-kal pc8k 
cman (x 3) 
fence-agents 
gamin (x 11) 
libfam0 (x 3) 
# 
exim4-config (x 4) 
# 
exim4-daemon-light (x 2) 
# 
evince (x 3) 
evince-gtk 
epiphany-browser (x 5) 
swfdec-mozil a 
# 
emacs23 (x 2) 
emacs23-lucid 
emacs23-nox 
# 
libdap-dev 
libdnet-dev (x 2) 
libcurl4-gnutls-dev (x 24) 
# 
dma 
discount # 
markdown 
isc-dhcp-server (x 4) 
dhcp-helper isc-dhcp-relay (x 2) 
# 
libdb5.1-dev (x 5) 
libdb4.8-dev 
libdb5.3-dev (x 2) 
dconf-to ls 
dconf 
libcyrus-imap-perl24 (x 4) 
kolab-libcyrus-imap-perl (x 3) 
cyrus-n tpd-2.4 (x 3) # 
cyrus-com on (x 7) 
kolab-cyrus-com on 
in 2 
in 2-lfs 
cyrus-imapd-2.4 (x 3) 
# 
uw-imapd 
# 
kolab-cyrus-clients 
libcurl4-ns -dev (x 2) 
libcurl4-opens l-dev 
cups-client (x 15) 
cups-bsd (x 2) 
controlaula 
ltsp-controlaula 
gnome-font-viewer 
console-to ls (x 4) 
kbd 
console-setup (x 2) 
console-setup-mini 
libcoin60-doc 
inventor-dev 
libcoin60-dev 
resource-agents (x 5) cluster-agents 
citadel-mta (x 2) 
ucspi-unix 
check-mk-livestatus 
cfingerd 
efingerd 
pawserv (x 2) 
udhcpd 
sysklogd 
fingerd 
lib o st1.46-dev (x 18) 
lib o st1.48-dev (x 63) 
lib o st-mpi-python1.46.1 
lib o st-mpi-python1.48.0 
bitlbe (x 2) bitlbe -libpurple 
fp-compiler-2.4.4 (x 14) 
binutils-gold 
# 
bidentd 
ident2 
nul identd 
cron (x 5) 
bcron-run 
bandwidthd bandwidthd-pgsql 
# 
atftpd 
tftpd 
python-pyatspi 
python-pyatspi2 (x 5) 
asterisk-core-sounds-es-gsm asterisk-prompt-es-co 
# 
asterisk-voicemail 
asterisk-voicemail-imapstorage 
asterisk-voicemail-odbcstorage 
iputils-arping (x 3) 
arping 
ardour 
ardour-i686 
apache2-prefork-dev 
apache2-threaded-dev 
apache2-mpm-event # 
# 
apache2-mpm-worker 
libasound2-dev (x 2) 
libos 4-salsa-dev 
libos -salsa-asound2 
libos 4-salsa-asound2 
xul-ext-adblock-plus (x 2) 
libabiword-2.9-dev (x 4) 
libace-foxreactor-dev (x 3) 
acetoneiso 
akonadi-kde-resource-go gledata (x 358) 
plasma-widget-amule (x 56) 
libapq-postgresql-dbg (x 2) 
auth2db (x 5) 
banshe -extension-lirc (x 6) 
bluedevil 
lib o st-al -dev (x 4) 
lib o st-mpi-dev (x 2) 
cdo (x 3) 
libcegui-mk2-dev 
chemical-structures 
cl-sql-odbc (x 2) 
code-saturne (x 13) 
con ectomeviewer (x 2) 
courier-faxmail 
cyrus-admin-2.2 (x 5) 
cyrus-clients-2.2 
cyrus-replication (x 2) ∨ 
digikam-dbg (x 20) 
docbo kwiki 
do dle-dbg (x 2) 
libdose2-ocaml-dev (x 2) 
libe t-dev (x 3) 
∨ 
fai-quickstart 
∨ 
fileschanged ∨ 
libfluidsynth-dev (x 2) 
fre radius-iodbc 
fre vo (x 4) 
fusionforge-plugin-blocks (x 25) 
python-gamera-dev (x 2) 
∨ 
∨ 
∨ 
libgd-gd2-noxpm-ocaml-dev (x 2) 
libgdal1-dev (x 3) 
libgdb-dev 
libgeda-dev 
geogebra-kde (x 2) 
glance (x 20) 
gnome-osd 
gnome-ses ion (x 4) 
gnome-utils 
gosa (x 4 ) 
goto-fai-backend 
∨ 
gpe 
gradle (x 2) 
gros ∨ 
grub-cho se-default ∨ 
grub-imagebo t ∨ 
hapm (x 3) 
libhdf5-lam-dev 
libigstk4-dev (x 3) 
il uminator-demo 
imagemagick-dbg 
jackd1 (x 2) 
jackd2 (x 3) 
jenkins-tomcat 
libk3b-dev (x 7) 
libkaya-gd-dev 
kdeartwork (x 19) 
kdepim-dbg (x 3) 
kdeplasma-ad ons-dbg 
kdesvn (x 2) 
keystone (x 2) 
kolabd 
libalog-ful -dbg (x 2) 
libapache2-mod-log-sql (x 5) 
f mpeg-dbg (x 2) 
libgd2-xpm-dev 
libgdchart-gd2-noxpm-dev 
libgdchart-gd2-xpm-dev 
libgpod-dev 
libgpod-nogtk-dev 
libmojomojo-perl 
libphone-ui-2010 517 (x 2) 
libphone-ui-dev 
libtuxcap-dev 
ltsp-client 
ltsp-server-standalone 
libluabind-dev 
libmagics+ -dev (x 4) 
maven-debian-helper 
gnome (x 2) 
mew 
mew-beta 
monodevelop-debug er-gdb 
mysqmail-courier-log er 
∨ 
mysqmail-dovecot-log er 
∨ 
nagiosgrapher 
network-manager-strongswan 
nova-compute-kvm 
nova-network 
octave-pkg-dev (x 2) 
og videoto ls (x 2) 
libsaml2-dev (x 3) 
libopenwalnut1-dev 
libapache2-mod-pas enger (x 2) 
∨ 
libpcp-logsum ary-perl (x 2) 
pfqueue (x 2) ∨ 
python-fs 
python-traitsgui ∨ 
qt-sdk 
r-base-core-dbg (x 2) 
redhat-cluster-suite (x 2) 
request-tracker3.8 (x 6) 
sa-learn-cyrus ∨ 
sdpam 
sepia 
snd-gtk 
∨ 
libsoqt4-dev 
startupmanager 
strongswan (x 2) 
∨ 
python-jarabe-0.84 (x 6) 
sucrose-0.84 
∨ 
task-kde-desktop 
task-lxde-desktop 
tcos-tftp-dhcp 
libkwebkit-dbg 
ytalk 
∨ 
∨ 
zoneminder 
xmakemol xmakemol-gl 
libxine1-doc libxine2-doc 
xserver-xorg-input-mtrack xserver-xorg-input-multitouch 
wmnd wmnd-snmp 
wl 
wl-beta 
semi 
vm (x 2) 
gnus 
libwine-gecko-dbg-unstable libwine-gecko-unstable 
w3c-dtd-xhtml w3c-sgml-lib (x 2) 
ucspi-tcp ucspi-tcp-ipv6 
tk8.4-doc tk8.5-doc 
texmacs-com on (x 2) texmacs-extra-fonts 
tcl-trf (x 2) tcl-trf-doc 
tcl8.4-doc tcl8.5-doc 
libtag1-rusxmms libtag1-vanil a 
synce-hal (x 2) synce-serial 
slapos-client python-zc.buildout 
slurm-l nl (x 2) sinfo 
# 
qterm 
# 
torque-client-x11 
shorewal 6-lite 
uif 
# 
shorewal -lite 
fiaif 
shorewal (x 2) 
shorewal -init ∨ 
scid-rating-data scid-spel -data 
# 
rxvt-unicode (x 2) 
rxvt-unicode-256color 
rxvt-unicode-lite 
ruby-bacon ruby-rspec-core (x 7) 
libamrita-ruby1.8 (x 2) ruby-amrita2 (x 4) 
rt-tests xenomai-runtime 
libreadline5-dbg libreadline6-dbg 
lib64readline-gplv2-dev lib64readline6-dev 
# 
ratbox-services-mysql 
ratbox-services-pgsql 
ratbox-services-sqlite 
raptor-utils raptor2-utils 
radiusclient1 (x 2) 
libradiusclient-ng-dev 
libradius1-dev 
radare radare-gtk 
libqwt-doc libqwt5-doc 
libqwt-dev libqwt5-qt4-dev 
python-quixote (x 2) python-quixote1 (x 2) 
qca-dev libqca2-dev (x 2) 
psi3 yagiuda 
planet-venus racket (x 2) 
pimd smcroute 
php-apc php5-xcache 
pen mush pen mush-mysql 
orvil e-write xtel 
openwince-jtag urjtag 
opendns ec-enforcer-mysql (x 2) opendns ec-enforcer-sqlite3 (x 2) 
olpc-kbdshim olpc-kbdshim-hal 
libode-dev libode-sp-dev 
oce-draw opencascade-draw 
liboce-foundation-dev (x 5) libopencascade-foundation-dev (x 6) 
# 
nginx-extras (x 2) 
nginx-ful (x 2) 
nginx-light (x 2) 
nginx ∨ 
libnetpbm10-dev 
libnetpbm9-dev 
libpgm-dev 
tftp tftp-hpa 
telnet telnet-s l 
harden-clients 
x2vnc 
ftp-upload 
ftp ftp-s l 
mtr mtr-tiny modem anager (x 2) wader-core 
libapache2-mod-wsgi libapache2-mod-wsgi-py3 
mlterm mlterm-tiny 
ipadic chasen-can adic naist-jdic (x 2) 
mcstrans policycoreutils (x 6) 
myspel -hu hunspel -hu 
myspel -fr # 
myspel -fr-gut 
myspel -da 
hunspel -vi 
hunspel -sr 
hunspel -sh 
hunspel -da 
lzma xz-lzma 
liblua50-socket-dev liblua50-socket2 luasocket 
luasocket-dev 
# 
libxbase2.0-bin 
dvb-ap s (x 2) 
libxdb-dev 
libupnp3-dev (x 2) libupnp4-dev 
libunique-doc libunique-3.0-doc 
libsieve2-dev libmailutils-dev (x 2) 
libsendmail-milter-perl libsendmail-pmilter-perl 
libpam-ldap libpam-ldapd 
libpam-heimdal libpam-krb5 
libowfat-dev 
libudt-dev 
libcdb-dev 
libodbc-ruby-doc ruby-odbc (x 10) 
libns -ldap libns -ldapd 
libnet-proxy-perl s lh 
libmimedir-dev libmimedir-gnome-dev (x 2) 
libev-libevent-dev libevent-dev 
libapache2-authen tlm-perl libauthen-smb-perl (x 2) 
libantlr3c-3.2-0 libantlr3c-antlrdbg-3.2-0 
ldap2dns ldap2zone ldapdns 
laptop-mode-to ls noflushd 
joe joe-jup 
# 
ircd-hybrid 
# 
# 
ircd-irc2 
inspircd (x 2) 
charybdis 
ircd-ratbox (x 2) 
im-config im-switch 
# 
hunspel -de-ch 
myspel -de-ch 
hunspel -de-ch-frami 
# 
hunspel -de-at 
# 
myspel -de-de-oldspel 
hunspel -de-de 
hunspel -de-med ∨ 
ifrench ifrench-gut hwloc hwloc-nox 
hunspel -ru myspel -ru 
hunspel -en-us myspel -en-us 
hunspel -to ls myspel -to ls 
hel o hel o-debhelper 
heimdal-clients (x 3) 
otp 
krb5-clients 
# 
krb5-user (x 4) 
openafs-kpas wd 
libgnutls26-dbg libgnutls28-dbg 
# 
gnome-p 
openresolv 
resolvconf 
gnoki -smsd (x 3) smsto ls 
gmt (x 2) gmt-manpages 
gimp-dcraw gimp-ufraw 
libgfs-1.3-2 (x 3) libgfs-mpi-1.3-2 (x 3) 
gc -mingw32 
mingw32 
mingw32-binutils 
binutils-mingw-w64-x86-64 
binutils-mingw-w64-i686 
binutils-mingw-w64 (x 5) 
# 
libstdc+ 6-4.4-doc 
libstdc+ 6-4.5-doc 
libstdc+ 6-4.6-doc 
# 
libstdc+ 6-4.4-dbg 
libstdc+ 6-4.5-dbg 
libstdc+ 6-4.6-dbg 
# 
lib64stdc+ 6-4.4-dbg 
lib64stdc+ 6-4.5-dbg 
lib64stdc+ 6-4.6-dbg 
libwn -dev libwn 6-dev 
fre bsd-sendpr gnats-user (x 2) 
fre bsd-buildutils (x 2) pmake 
fo matic-db fo matic-db-compres ed-p ds 
fo kb-plainx fo kb-wmaker 
libfltk1.1-dev (x 3) libfltk1.3-dev (x 2) 
flex flex-old 
bison (x 2) bison+ 
pretzel (x 3) 
firebird2.5-clas ic-com on (x 2) 
firebird2.5-super (x 2) firebird2.5-server-com on (x 3) 
firebird2.5-clas ic 
firebird2.5-superclas ic 
firebird2.1-server-com on (x 2) 
firebird2.1-clas ic 
firebird2.1-super 
fb-music-high fb-music-low 
et ercap-graphical et ercap-text-only 
erlang-base erlang-base-hipe 
elvis elvis-console 
elinks-data (x 2) elinks-lite 
libdwarf-dev libdw-dev libelf-dev (x 2) libelfg0-dev (x 2) 
nscd unscd 
dvi2ps-fontdata-ptexfake ptex-base (x 6) 
python-dnspython (x 5) linkchecker (x 2) 
dicod (x 4) dictd 
dico le-dico-de-rene-cougnenc 
dhcpcd pump (x 2) 
# 
dbsk d-cdb 
sk search 
yask serv 
libdb5.1-tcl libdb5.3-tcl 
libdb5.1-stl-dev libdb5.3-stl-dev libdb5.1-sql-dev (x 2) libdb5.3-sql-dev 
libsasl2-modules-gs api-heimdal (x 2) libsasl2-modules-gs api-mit (x 2) 
libcunit1 (x 2) libcunit1-ncurses (x 2) 
cros fire-maps cros fire-maps-smal 
crack crack-md5 
courier-maildrop (x 5) maildrop 
conky-cli conky-std 
libclut er-gtk-1.0-doc (x 2) libclut er-gtk-0.10-doc 
libclo g-isl-dev libclo g-p l-dev 
# 
chrony 
ntp (x 2) 
open tpd 
python-cher ypy3 (x 4) python-cher ypy (x 3) 
check-mk-config-icinga check-mk-config-nagios3 
busybox (x 4) busybox-static 
bo tchart bo tchart2 
lib o st1.46-doc lib o st1.48-doc (x 2) 
# 
bacula-com on-mysql (x 3) 
bacula-com on-pgsql (x 3) 
bacula-com on-sqlite3 (x 5) 
libavahi-ui-dev libavahi-ui-gtk3-dev 
# 
aumix 
aumix-gtk 
os -preserve 
mpg123-el ∨ 
# 
asterisk-core-sounds-fr-gsm 
asterisk-prompt-fr-armel e 
asterisk-prompt-fr-proformatique 
# 
apsfilter 
magicfilter 
printfilters-p d 
# 
apcupsd (x 2) 
nut-server (x 5) 
powstatd 
apache2-suexec apache2-suexec-custom 
amavisd-new (x 3) pham -ldap-amavis 
# 
aide 
aide-dynamic 
aide-xen 
2ping (x 29205) 
console-setup-fre bsd MIS ING DEP 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 34 / 46
Ubuntu main: 7'000 packages, 31'000 dependencies 
libclutter-1.0-0 (x 2) 
libclutter-eglx-es11-1.0-0 (x 2) 
ubiquity-slideshow-kubuntu ubiquity-slideshow-ubuntu 
libjack-jackd2-0 (x 2) libjack0 (x 3) 
libiodbc2-dev unixodbc-dev 
libreadline5-dbg libreadline6-dbg 
openbsd-inetd xinetd 
ubuntu-desktop 
ubuntu-netbook 
libgd2-xpm-dev 
libgd2-noxpm-dev 
libecore-dev 
libedje-dev (x 2) 
librdf0-dev 
librpm-dev 
apache2-threaded-dev 
tk8.4-doc tk8.5-doc tcl8.4-doc tcl8.5-doc 
libsdl1.2debian-oss 
libsdl1.2debian-pulseaudio 
hunspell-fr (x 3) myspell-fr 
libsdl1.2debian-all # 
libsdl1.2debian-alsa 
libsdl1.2debian-esd 
foomatic-db-compressed-ppds (x 4) foomatic-db 
libgd2-xpm (x 10) 
libjpeg62-dev (x 23) libjpeg8-dev 
libgd2-noxpm 
libcurl4-gnutls-dev (x 4) libcurl4-openssl-dev 
libreadline6-dev (x 6) libreadline5-dev 
libdb4.8-dev (x 5) libdb4.7-dev (x 2) 
network-manager-kde plasma-widget-networkmanagement (x 2) 
libstdc++6-4.4-doc libstdc++6-4.5-doc libstdc++6-4.4-dbg libstdc++6-4.5-dbg 
apache2-prefork-dev 
libqt4-dbg (x 24) qt-x11-free-dbg 
libneon27-dev libneon27-gnutls-dev 
libgpod4 (x 9) libgpod4-nogtk (x 2) 
# 
libgl1-mesa-glx (x 8) libgl1-mesa-swx11 (x 3) 
libclutter-eglx-es20-1.0-0 (x 2) 
libclutter-1.0-dev (x 2) 
libclutter-eglx-es11-1.0-dev 
libclutter-eglx-es20-1.0-dev 
libelf-dev (x 3) libelfg0-dev 
libdb4.7-java (x 3) libdb4.8-java (x 3) 
lib64stdc++6-4.4-dbg lib64stdc++6-4.5-dbg 
lib64readline5-dev lib64readline6-dev 
hunspell-tools myspell-tools 
hunspell-de-de (x 3) myspell-de-de-oldspell 
hello hello-debhelper 
grub grub-legacy-ec2 
# 
grub-efi-amd64 
grub-efi-ia32 (x 2) 
grub-pc 
flex flex-old 
exim4-daemon-heavy (x 2) 
exim4-daemon-light (x 2) 
exim4-config (x 5) postfix (x 9) 
emacs23 emacs23-nox 
debconf-english debconf-i18n 
# 
bacula-common-mysql (x 3) 
bacula-common-pgsql (x 3) 
bacula-common-sqlite3 (x 3) 
# 
apache2-mpm-event 
apache2-mpm-prefork (x 2) 
apache2-mpm-worker 
eucalyptus-nc ∨ 
abrowser (x 7049) 
http://coinst.irill.org 
Running time: less than 10 seconds! 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 35 / 46
QA 301: New Co-Installability Issues 
Compare two versions of a repository 
New issues are more likely to be bugs 
Can report precisely what changes caused an issue 
Example a b 
p q 
Many new issues between packages p and q due to a single 
new conict between packages a and b. 
Vouillon, Di Cosmo 
Broken Sets in Software Repository Evolution 
ICSE 2013 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 36 / 46
Finding New Co-Installability Issues 
Tool coinst-upgrades http://coinst.irill.org/upgrades 
graphs illustrating each new issue 
context: other packages involved, package popularities (popcon) 
The new version of unoconv depends on any version of python3-uno 
unoconv python3-uno python-uno 
The new version of tdsodbc conicts with any version of libiodbc2 
tdsodbc libiodbc2 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 37 / 46
Finding New Co-Installability Issues 
Tool coinst-upgrades http://coinst.irill.org/upgrades 
graphs illustrating each new issue 
context: other packages involved, package popularities (popcon) 
The new version of unoconv depends on any version of python3-uno 
unoconv python3-uno python-uno 
The new version of tdsodbc conicts with any version of libiodbc2 
tdsodbc libiodbc2 
Package libiodbc2 had been unmaintained for years 
Should not be a big issue if it gets removed, right? 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 37 / 46
Context is Crucial 
tdsodbc libiodbc2 
Depend on libiodbc2 (about 380 packages): kcolorchooser, kdesdk-misc, 
kdevelop-php-docs, blinken, kdevelop, kmousetool, ktorrent, kalgebra, 
konqueror, klipper, kchmviewer, mplayerthumbs, libsmokekutils3, kjots, 
ksshaskpass, cantor, network-manager-kde, kbattleship, choqok, 
kdesdk-dbg, krusader-dbg, libkdegames-dev, kmidimon, klettres, 
quassel-kde4, libakonadi-ruby, konq-plugins, ktorrent-dbg, kiriki, 
plasma-widgets-workspace, kvirc-dbg, konversation-dbg, libkiten-dev, 
kdm-gdmcompat, plasma-netbook, libokular-ruby1.8, eqonomize, 
kdenetwork-dbg, libsmokeplasma3, kspread, lokalize, korganizer, parley, 
kfourinline, libsmokekde-dev, knd, kdepim-groupware, ksnapshot, 
libiodbc2-dev, plasma-runners-addons, libsmokekdeui4-3, printer-applet, 
ark, kdeutils, kover, rocs, kdesvn-dbg, kdevplatform-dev, libkdepim4, ktron, 
cantor-backend-sage, kinfocenter, . . . 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 38 / 46
QA 501: package migration 
Unstable 
Testing 
Conicting goals 
package should reach testing rapidly 
keep testing as stable as possible 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 39 / 46
The comigrate tool 
Supplement/Replace Britney 
Generate hints that can be fed to Britney 
Interactively investigate migration issues 
Run it repeatedly, studying dierent scenarios 
Report of issues preventing package migration 
http://coinst.irill.org/report/ 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 40 / 46
Tool Core: Computing Package Migrations 
Tentative migration 
Boolean solver 
(Co-)installability 
analysis 
New constraints 
Start with simple constraints 
The Boolean solver generates a tentative migration 
Check for (co-)installability issues; analyse these issues to generate 
new constraints (package A cannot migrate, or package A cannot 
migrate without package B) 
Repeat until no more issue is found 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 41 / 46
Performance 
Britney 
Comigrate 
(installability) 
Comigrate 
(co-installability) 
Comigrate 
(installability, 
with caching) 
Comigrate 
(co-installability, 
with caching) 
3 5.5 10 18 30 55 100 180 300 550 
Running time (seconds) 
Data collected twice a day from 2013-06-24 to 2013-09-09 
Missing datapoints: Britney can take more than 24 hours (Perl 
transition).... 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 42 / 46
Outline 
1 GNU/Linux Distributions: industrialising Free Software 
2 User side: improving package managers 
3 Back to the server side : Package QA 
Find uninstallable packages 
Learning from the future of repositories 
Find non co-installable packages 
Find new non co-installable packages 
Filter incoming packages 
4 In conclusion 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 43 / 46
A recurring pattern 
In all examples above 
identify a problem whose solution requires a research eort (discussion 
with the maintainers) 
work hard to nd a solution 
implement a tool, validate it on real world cases 
publish a research article 
foster adoption 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 44 / 46
A recurring pattern 
In all examples above 
identify a problem whose solution requires a research eort (discussion 
with the maintainers) 
work hard to nd a solution 
implement a tool, validate it on real world cases 
publish a research article 
foster adoption 
In a picture 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 44 / 46
Conclusions 
Free Software and Computer Science 
Free Software is ubiquitous, its growth poses new challenges 
many dicult issues with quality assurance in Free Software ... 
are indeed interesting and deep problems in Computer Science, 
and can be the basis for very fruitful collaborations 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 45 / 46
Conclusions 
Free Software and Computer Science 
Free Software is ubiquitous, its growth poses new challenges 
many dicult issues with quality assurance in Free Software ... 
are indeed interesting and deep problems in Computer Science, 
and can be the basis for very fruitful collaborations 
Collaborate with us at Irill, in general 
Irill is a unique place: it hosts researchers that share the Free Software 
values, love to solve problems, and build valuable tools. 
We share a dream: make Free Software the best software in town. 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 45 / 46
Conclusions 
Free Software and Computer Science 
Free Software is ubiquitous, its growth poses new challenges 
many dicult issues with quality assurance in Free Software ... 
are indeed interesting and deep problems in Computer Science, 
and can be the basis for very fruitful collaborations 
Collaborate with us at Irill, in general 
Irill is a unique place: it hosts researchers that share the Free Software 
values, love to solve problems, and build valuable tools. 
We share a dream: make Free Software the best software in town. 
Collaborate with us at Irill, on distributions 
We have built powerful tools for QA in GNU/Linux distributions... 
some are already distribution neutral, thanks to CUDF; all can be ported. 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 45 / 46
Bibliography and tools excerpts 
Di Cosmo, Leroy, Treinen, Vouillon et al 
Managing the complexity of large free and open source 
package-based software distributions. 
ASE 2006: Automated Software Engineering. 
Abate, Di Cosmo, Treinen, Zacchiroli 
Learning from the Future of Component Repositories 
CBSE 2012: Component Based Software Engineering. 
Abate, Di Cosmo, Treinen, Zacchiroli 
A modular package manager architecture. 
Information and Software Technology, 2012. 
Vouillon, Dogguy, Di Cosmo. 
Easing software component repository evolution. 
ICSE 2014. 
Tools 
Cudf library: http://gforge.inria.fr/projects/cudf/ 
Dose library: http://gforge.inria.fr/projects/dose/ 
Coinst suite: http://coinst.irill.org 
Debian QA: http://qa.debian.org/dose 
Learn more at 
www.mancoosi.org and 
www.irill.org 
Questions? 
roberto@dicosmo.org 
@rdicosmo 
Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 46 / 46

More Related Content

Viewers also liked

Nagios Conference 2011 - Nathan Vonnahme - Writing Custom Nagios Plugins In Perl
Nagios Conference 2011 - Nathan Vonnahme - Writing Custom Nagios Plugins In PerlNagios Conference 2011 - Nathan Vonnahme - Writing Custom Nagios Plugins In Perl
Nagios Conference 2011 - Nathan Vonnahme - Writing Custom Nagios Plugins In PerlNagios
 
South America 2008: Open Social For Brand Advertising and Media
South America 2008: Open Social For Brand Advertising and MediaSouth America 2008: Open Social For Brand Advertising and Media
South America 2008: Open Social For Brand Advertising and MediaPatrick Chanezon
 
Presentación semana santa2015
Presentación semana santa2015Presentación semana santa2015
Presentación semana santa2015Cole Navalazarza
 
Propuesta Individual. Higiene, cuidado del cuerpo y cuidados medicos.
Propuesta Individual. Higiene, cuidado del cuerpo y cuidados medicos.Propuesta Individual. Higiene, cuidado del cuerpo y cuidados medicos.
Propuesta Individual. Higiene, cuidado del cuerpo y cuidados medicos.luciana mastrantonio
 
Mi perfil de consumidor digital
Mi perfil de consumidor digitalMi perfil de consumidor digital
Mi perfil de consumidor digitalLucile Osef
 
Dosier de prensa Vcentral_ Samelan
Dosier de prensa Vcentral_ SamelanDosier de prensa Vcentral_ Samelan
Dosier de prensa Vcentral_ SamelanIMAGINECOMS
 
Volha Chuvakin Ph.D. Defense Presentation "Some Aspects of Internet Portal Ma...
Volha Chuvakin Ph.D. Defense Presentation "Some Aspects of Internet Portal Ma...Volha Chuvakin Ph.D. Defense Presentation "Some Aspects of Internet Portal Ma...
Volha Chuvakin Ph.D. Defense Presentation "Some Aspects of Internet Portal Ma...volha_chuvakin
 
L informe de hablemos press en diciembre del 2014
L informe de hablemos press en diciembre  del 2014L informe de hablemos press en diciembre  del 2014
L informe de hablemos press en diciembre del 2014FreedomofExpression
 
HTML Article Formador De Formadores (12)
HTML Article   Formador De Formadores (12)HTML Article   Formador De Formadores (12)
HTML Article Formador De Formadores (12)changmybkpakpct
 
TRANSPORTE ESPECIAL INVERSIONES FALCON S.A.S
TRANSPORTE ESPECIAL INVERSIONES FALCON S.A.STRANSPORTE ESPECIAL INVERSIONES FALCON S.A.S
TRANSPORTE ESPECIAL INVERSIONES FALCON S.A.SCesar Sotomayor Guerrero
 
Comunicación Interactiva
Comunicación InteractivaComunicación Interactiva
Comunicación InteractivaKonrad Montero
 
Biografía de armando para libros
Biografía  de armando para librosBiografía  de armando para libros
Biografía de armando para librosArmando Arzalluz
 
Manual instructiuni-nokia-c6-01-black
Manual instructiuni-nokia-c6-01-blackManual instructiuni-nokia-c6-01-black
Manual instructiuni-nokia-c6-01-blackQuickmobile
 
CV LIN Rodrigo Rojas 2016
CV LIN Rodrigo Rojas 2016CV LIN Rodrigo Rojas 2016
CV LIN Rodrigo Rojas 2016Rodrigo Rojas
 
Idea Generator Chapter 5 - Ten tools to enhance your team's performance
Idea Generator Chapter 5 - Ten tools to enhance your team's performance  Idea Generator Chapter 5 - Ten tools to enhance your team's performance
Idea Generator Chapter 5 - Ten tools to enhance your team's performance bill woodruff
 
Rios jazmin12
Rios jazmin12Rios jazmin12
Rios jazmin12jazmin98
 
Presentacio Joomla Ecommerce Volcanica2009
Presentacio Joomla Ecommerce Volcanica2009Presentacio Joomla Ecommerce Volcanica2009
Presentacio Joomla Ecommerce Volcanica2009Jordi Catà
 
Responding to an AMCP Action Alert
Responding to an AMCP Action AlertResponding to an AMCP Action Alert
Responding to an AMCP Action AlertStephanie Vance
 
Informe evaluación II Encuentro Regional de Ecoescuelas
Informe evaluación II Encuentro Regional de EcoescuelasInforme evaluación II Encuentro Regional de Ecoescuelas
Informe evaluación II Encuentro Regional de EcoescuelasRedAndaluzadeEcoescuelas
 

Viewers also liked (20)

Nagios Conference 2011 - Nathan Vonnahme - Writing Custom Nagios Plugins In Perl
Nagios Conference 2011 - Nathan Vonnahme - Writing Custom Nagios Plugins In PerlNagios Conference 2011 - Nathan Vonnahme - Writing Custom Nagios Plugins In Perl
Nagios Conference 2011 - Nathan Vonnahme - Writing Custom Nagios Plugins In Perl
 
South America 2008: Open Social For Brand Advertising and Media
South America 2008: Open Social For Brand Advertising and MediaSouth America 2008: Open Social For Brand Advertising and Media
South America 2008: Open Social For Brand Advertising and Media
 
MARCELA VEGA
MARCELA VEGA MARCELA VEGA
MARCELA VEGA
 
Presentación semana santa2015
Presentación semana santa2015Presentación semana santa2015
Presentación semana santa2015
 
Propuesta Individual. Higiene, cuidado del cuerpo y cuidados medicos.
Propuesta Individual. Higiene, cuidado del cuerpo y cuidados medicos.Propuesta Individual. Higiene, cuidado del cuerpo y cuidados medicos.
Propuesta Individual. Higiene, cuidado del cuerpo y cuidados medicos.
 
Mi perfil de consumidor digital
Mi perfil de consumidor digitalMi perfil de consumidor digital
Mi perfil de consumidor digital
 
Dosier de prensa Vcentral_ Samelan
Dosier de prensa Vcentral_ SamelanDosier de prensa Vcentral_ Samelan
Dosier de prensa Vcentral_ Samelan
 
Volha Chuvakin Ph.D. Defense Presentation "Some Aspects of Internet Portal Ma...
Volha Chuvakin Ph.D. Defense Presentation "Some Aspects of Internet Portal Ma...Volha Chuvakin Ph.D. Defense Presentation "Some Aspects of Internet Portal Ma...
Volha Chuvakin Ph.D. Defense Presentation "Some Aspects of Internet Portal Ma...
 
L informe de hablemos press en diciembre del 2014
L informe de hablemos press en diciembre  del 2014L informe de hablemos press en diciembre  del 2014
L informe de hablemos press en diciembre del 2014
 
HTML Article Formador De Formadores (12)
HTML Article   Formador De Formadores (12)HTML Article   Formador De Formadores (12)
HTML Article Formador De Formadores (12)
 
TRANSPORTE ESPECIAL INVERSIONES FALCON S.A.S
TRANSPORTE ESPECIAL INVERSIONES FALCON S.A.STRANSPORTE ESPECIAL INVERSIONES FALCON S.A.S
TRANSPORTE ESPECIAL INVERSIONES FALCON S.A.S
 
Comunicación Interactiva
Comunicación InteractivaComunicación Interactiva
Comunicación Interactiva
 
Biografía de armando para libros
Biografía  de armando para librosBiografía  de armando para libros
Biografía de armando para libros
 
Manual instructiuni-nokia-c6-01-black
Manual instructiuni-nokia-c6-01-blackManual instructiuni-nokia-c6-01-black
Manual instructiuni-nokia-c6-01-black
 
CV LIN Rodrigo Rojas 2016
CV LIN Rodrigo Rojas 2016CV LIN Rodrigo Rojas 2016
CV LIN Rodrigo Rojas 2016
 
Idea Generator Chapter 5 - Ten tools to enhance your team's performance
Idea Generator Chapter 5 - Ten tools to enhance your team's performance  Idea Generator Chapter 5 - Ten tools to enhance your team's performance
Idea Generator Chapter 5 - Ten tools to enhance your team's performance
 
Rios jazmin12
Rios jazmin12Rios jazmin12
Rios jazmin12
 
Presentacio Joomla Ecommerce Volcanica2009
Presentacio Joomla Ecommerce Volcanica2009Presentacio Joomla Ecommerce Volcanica2009
Presentacio Joomla Ecommerce Volcanica2009
 
Responding to an AMCP Action Alert
Responding to an AMCP Action AlertResponding to an AMCP Action Alert
Responding to an AMCP Action Alert
 
Informe evaluación II Encuentro Regional de Ecoescuelas
Informe evaluación II Encuentro Regional de EcoescuelasInforme evaluación II Encuentro Regional de Ecoescuelas
Informe evaluación II Encuentro Regional de Ecoescuelas
 

Similar to FOSS Research at Irill Highlights

Leveraging Solver Preferences to Tame your Package Manager
Leveraging Solver Preferences to Tame your Package ManagerLeveraging Solver Preferences to Tame your Package Manager
Leveraging Solver Preferences to Tame your Package ManagerRoberto Di Cosmo
 
S.zacchiroli 20121205-fossa
S.zacchiroli 20121205-fossaS.zacchiroli 20121205-fossa
S.zacchiroli 20121205-fossahere_and_there
 
Mining Component Repositories for Installability Issues
Mining Component Repositories for Installability IssuesMining Component Repositories for Installability Issues
Mining Component Repositories for Installability IssuesRoberto Di Cosmo
 
SFScon21 - Carlo Piana - Alberto Pianon - Aliens4friends: make yourself an al...
SFScon21 - Carlo Piana - Alberto Pianon - Aliens4friends: make yourself an al...SFScon21 - Carlo Piana - Alberto Pianon - Aliens4friends: make yourself an al...
SFScon21 - Carlo Piana - Alberto Pianon - Aliens4friends: make yourself an al...South Tyrol Free Software Conference
 
Effectively using Open Source with conda
Effectively using Open Source with condaEffectively using Open Source with conda
Effectively using Open Source with condaTravis Oliphant
 
Distro Recipes 2013 : Upstream management and consequences on the distributi...
Distro Recipes 2013 : Upstream management and consequences on the  distributi...Distro Recipes 2013 : Upstream management and consequences on the  distributi...
Distro Recipes 2013 : Upstream management and consequences on the distributi...Anne Nicolas
 
Ada in Fedora linux
Ada in Fedora linuxAda in Fedora linux
Ada in Fedora linuxPavel Zhukov
 
The Gory Details of Debian packages
The Gory Details of Debian packagesThe Gory Details of Debian packages
The Gory Details of Debian packagesJeremiah Foster
 
Docker for business: How I stopped worrying about antipatterns
Docker for business: How I stopped worrying about antipatternsDocker for business: How I stopped worrying about antipatterns
Docker for business: How I stopped worrying about antipatternsLenses.io
 
Distributions and package management in the containers era
Distributions and package management in the containers eraDistributions and package management in the containers era
Distributions and package management in the containers eranussbauml
 
Part 2 of 'Introduction to Linux for bioinformatics': Installing software
Part 2 of 'Introduction to Linux for bioinformatics': Installing softwarePart 2 of 'Introduction to Linux for bioinformatics': Installing software
Part 2 of 'Introduction to Linux for bioinformatics': Installing softwareJoachim Jacob
 
Preparing_Your_Computer.pdf
Preparing_Your_Computer.pdfPreparing_Your_Computer.pdf
Preparing_Your_Computer.pdfprago1
 
Respositórios do Ubuntu, santo apt-get e outras coisas
Respositórios do Ubuntu, santo apt-get e outras coisasRespositórios do Ubuntu, santo apt-get e outras coisas
Respositórios do Ubuntu, santo apt-get e outras coisasQuefo.me
 
Nt1330 Unit 4.3 Assignment 1
Nt1330 Unit 4.3 Assignment 1Nt1330 Unit 4.3 Assignment 1
Nt1330 Unit 4.3 Assignment 1Amanda Reed
 
necLinuxProjectReport
necLinuxProjectReportnecLinuxProjectReport
necLinuxProjectReportDeepak Karn
 
IzPack - fOSSa 2009
IzPack - fOSSa 2009IzPack - fOSSa 2009
IzPack - fOSSa 2009julien.ponge
 
Managing the evolution of F/OSS with Model Driven Techniques
Managing the evolution of F/OSS with Model Driven TechniquesManaging the evolution of F/OSS with Model Driven Techniques
Managing the evolution of F/OSS with Model Driven TechniquesAlfonso Pierantonio
 

Similar to FOSS Research at Irill Highlights (20)

Leveraging Solver Preferences to Tame your Package Manager
Leveraging Solver Preferences to Tame your Package ManagerLeveraging Solver Preferences to Tame your Package Manager
Leveraging Solver Preferences to Tame your Package Manager
 
S.zacchiroli 20121205-fossa
S.zacchiroli 20121205-fossaS.zacchiroli 20121205-fossa
S.zacchiroli 20121205-fossa
 
Mining Component Repositories for Installability Issues
Mining Component Repositories for Installability IssuesMining Component Repositories for Installability Issues
Mining Component Repositories for Installability Issues
 
SFScon21 - Carlo Piana - Alberto Pianon - Aliens4friends: make yourself an al...
SFScon21 - Carlo Piana - Alberto Pianon - Aliens4friends: make yourself an al...SFScon21 - Carlo Piana - Alberto Pianon - Aliens4friends: make yourself an al...
SFScon21 - Carlo Piana - Alberto Pianon - Aliens4friends: make yourself an al...
 
Effectively using Open Source with conda
Effectively using Open Source with condaEffectively using Open Source with conda
Effectively using Open Source with conda
 
Distro Recipes 2013 : Upstream management and consequences on the distributi...
Distro Recipes 2013 : Upstream management and consequences on the  distributi...Distro Recipes 2013 : Upstream management and consequences on the  distributi...
Distro Recipes 2013 : Upstream management and consequences on the distributi...
 
Ada in Fedora linux
Ada in Fedora linuxAda in Fedora linux
Ada in Fedora linux
 
The Gory Details of Debian packages
The Gory Details of Debian packagesThe Gory Details of Debian packages
The Gory Details of Debian packages
 
Foss Presentation
Foss PresentationFoss Presentation
Foss Presentation
 
Docker for business: How I stopped worrying about antipatterns
Docker for business: How I stopped worrying about antipatternsDocker for business: How I stopped worrying about antipatterns
Docker for business: How I stopped worrying about antipatterns
 
Fedora Modularity
Fedora ModularityFedora Modularity
Fedora Modularity
 
Deft v7
Deft v7Deft v7
Deft v7
 
Distributions and package management in the containers era
Distributions and package management in the containers eraDistributions and package management in the containers era
Distributions and package management in the containers era
 
Part 2 of 'Introduction to Linux for bioinformatics': Installing software
Part 2 of 'Introduction to Linux for bioinformatics': Installing softwarePart 2 of 'Introduction to Linux for bioinformatics': Installing software
Part 2 of 'Introduction to Linux for bioinformatics': Installing software
 
Preparing_Your_Computer.pdf
Preparing_Your_Computer.pdfPreparing_Your_Computer.pdf
Preparing_Your_Computer.pdf
 
Respositórios do Ubuntu, santo apt-get e outras coisas
Respositórios do Ubuntu, santo apt-get e outras coisasRespositórios do Ubuntu, santo apt-get e outras coisas
Respositórios do Ubuntu, santo apt-get e outras coisas
 
Nt1330 Unit 4.3 Assignment 1
Nt1330 Unit 4.3 Assignment 1Nt1330 Unit 4.3 Assignment 1
Nt1330 Unit 4.3 Assignment 1
 
necLinuxProjectReport
necLinuxProjectReportnecLinuxProjectReport
necLinuxProjectReport
 
IzPack - fOSSa 2009
IzPack - fOSSa 2009IzPack - fOSSa 2009
IzPack - fOSSa 2009
 
Managing the evolution of F/OSS with Model Driven Techniques
Managing the evolution of F/OSS with Model Driven TechniquesManaging the evolution of F/OSS with Model Driven Techniques
Managing the evolution of F/OSS with Model Driven Techniques
 

Recently uploaded

"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 

Recently uploaded (20)

"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 

FOSS Research at Irill Highlights

  • 1. Free Software Research at Irill (highlights) Roberto Di Cosmo http://www.dicosmo.org 18/09/2014 Suse Labs Conference 2014 Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 1 / 46
  • 2. IRILL, a special place for FOSS Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 2 / 46
  • 3. Who we are Researchers that love FOSS ... Vincent Balat Albert Cohen Julia Lawall Stefano Zacchiroli ... and like to collaborate! Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 3 / 46
  • 4. Our focus: software quality Some key examples: Coccinelle Beautiful work on semantic matching and pacthing; based on sophisticated theoretical tools, and yet so intuitive and practical: see Julia's talks Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 4 / 46
  • 5. Our focus: software quality Some key examples: Coccinelle Beautiful work on semantic matching and pacthing; based on sophisticated theoretical tools, and yet so intuitive and practical: see Julia's talks GCC/LLVM Long term work led by Albert Cohen to provide cutting edge polyhedral optimisation for all of us Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 4 / 46
  • 6. Our focus: software quality Some key examples: Coccinelle Beautiful work on semantic matching and pacthing; based on sophisticated theoretical tools, and yet so intuitive and practical: see Julia's talks GCC/LLVM Long term work led by Albert Cohen to provide cutting edge polyhedral optimisation for all of us GNU/Linux distributions our focus today Many great tools for users and maintainers developed over almost ten years to help distributions scale up, be released faster and have better QA Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 4 / 46
  • 7. Credits: joint work with. . . Pietro Abate Jaap Boender Yacine Boufkhad Stefano Zacchiroli Ralf Treinen Jérôme Vouillon Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 5 / 46
  • 8. Outline 1 GNU/Linux Distributions: industrialising Free Software 2 User side: improving package managers 3 Back to the server side : Package QA Find uninstallable packages Learning from the future of repositories Find non co-installable packages Find new non co-installable packages Filter incoming packages 4 In conclusion Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 6 / 46
  • 9. Free Software, industrialised: distributions Idea from FOSS in the 1990s: distributions are intermediate software vendors between FOSS developers and users, oering to share upstream tracking, integration, testing and QA among all of us Project 2 Project 1 Project 3 FOSS Bazaar User installations Server side Client side Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 7 / 46
  • 10. Free Software, industrialised: distributions Idea from FOSS in the 1990s: distributions are intermediate software vendors between FOSS developers and users, oering to share upstream tracking, integration, testing and QA among all of us Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 7 / 46
  • 11. Distributions: a somehow successful idea . . . Key notions: packages and package managers Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 8 / 46
  • 12. Packages and their metadata Package = ( some les some scripts metadata Identication Inter-package rel. I Dependencies I Conicts Feature declarations Other I Package maintainer I Textual descriptions I ... Example (package metadata) Package: aterm Version: 0.4.2-11 Section: x11 Installed-Size: 280 Maintainer: Göran Weinholt ... Architecture: i386 Depends: libc6 (= 2.3.2.ds1-4), libice6 | xlibs ( 4.1.0), ... Conflicts: suidmanager ( 0.50) Provides: x-terminal-emulator ... A package is the elemental component of modern distribution systems (not FOSS-specic). A working system is deployed by installing a package set ( 2'000+ for modern FOSS distros) . Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 9 / 46
  • 13. Inter-package relationships get complex. . . To play Backgammon. . . Package: gnubg Version: 0.14.3+20060923-4 Depends: gnubg-data, ttf-bitstream-vera, libartsc0 (= 1.5.0-1), ..., libgl1-mesa-glx | libgl1, ... Conflicts: ... . . . pull a few strings Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 10 / 46
  • 14. Inter-package relationships get complex. . . To play Backgammon. . . Package: gnubg Version: 0.14.3+20060923-4 Depends: gnubg-data, ttf-bitstream-vera, libartsc0 (= 1.5.0-1), ..., libgl1-mesa-glx | libgl1, ... Conflicts: ... . . . pull a few strings Distributions grow superlinearly Using and maintaining such large software collections is becoming hard! manual package review semi-automated tools Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 10 / 46
  • 15. Using and maintaining free software distributions is hard We need advanced tools: 1 end user side package managers I install packages and their dependencies, . . . I . . . according to the user needs and policies 2 distribution editor side QA infrastructure I nd broken packages (now easy!) I nd packages which impact large parts of the distribution I predict repository update woes I identify compatibility issues I . . . At Irill, through the Mancoosi project1, we have made progress in both areas. Let's see some examples. 1http://www.mancoosi.org Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 11 / 46
  • 16. Outline 1 GNU/Linux Distributions: industrialising Free Software 2 User side: improving package managers 3 Back to the server side : Package QA Find uninstallable packages Learning from the future of repositories Find non co-installable packages Find new non co-installable packages Filter incoming packages 4 In conclusion Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 12 / 46
  • 17. Installation woes: no solution $ sudo apt-get install baobab Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 13 / 46
  • 18. Installation woes: no solution $ sudo apt-get install baobab Reading package lists... Done Building dependency tree Reading state information... Done Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: gnome-settings-daemon: Breaks: gnome-screensaver ( 2.28.0) but 2.26.1-1 is to be installed E: Broken packages Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 13 / 46
  • 19. Installation woes: no solution $ sudo apt-get install baobab Reading package lists... Done Building dependency tree Reading state information... Done Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: gnome-settings-daemon: Breaks: gnome-screensaver ( 2.28.0) but 2.26.1-1 is to be installed E: Broken packages (whereas a solution did in fact exist) Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 13 / 46
  • 20. Installation woes: debatable solution $ sudo apt-get install debhelper Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 14 / 46
  • 21. Installation woes: debatable solution $ sudo apt-get install debhelper Reading Package Lists... Done Building Dependency Tree... Done Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 14 / 46
  • 22. Installation woes: debatable solution $ sudo apt-get install debhelper Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: armagetron armagetron-common autoconf bonobo-activation codebreaker debconf debconf-i18n debconf-utils dialog esound-common fb-music-high fontconfig frozen-bubble-data grepmail gv intltool-debian libaiksaurus-data libaiksaurus0c102 libatk1.0-0 libatk1.0-dev libbonobo-activation4 libbonobo2-0 libbonobo2-common libdb3 libdbd-mysql-perl libdbi-perl libeel2-data libesd0 ... Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 14 / 46
  • 23. Installation woes: debatable solution $ sudo apt-get install debhelper Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: armagetron armagetron-common autoconf bonobo-activation codebreaker debconf debconf-i18n debconf-utils dialog esound-common fb-music-high fontconfig frozen-bubble-data grepmail gv intltool-debian libaiksaurus-data libaiksaurus0c102 libatk1.0-0 libatk1.0-dev libbonobo-activation4 libbonobo2-0 libbonobo2-common libdb3 libdbd-mysql-perl libdbi-perl libeel2-data libesd0 ... The following packages will be REMOVED: autoconf2.13 frozen-bubble frozen-bubble-lib gconf2 gnomemeeting itk3.1-dev libbonoboui2-0 libbonoboui2-common libdigest-md5-perl libforms0.89 libgconf2-4 libgnome2-0 libgnome2-common libgnomeui-0 libgnomevfs2-0 libgnomevfs2-common libgtk1.2-dev libgtk2.0-0png3 libgtk2.0-dev libmime-base64-perl libpango1.0-dev libsdl-mixer1.2-dev libsdl-perl libsdl-ttf1.2-dev libsdl1.2-dev libsmpeg-dev libstorable-perl nautilus tk8.3-dev tktable-dev x-window-system x-window-system-core xaw3dg-dev xlib6g xlib6g-dev xlibmesa-dev xlibmesa3 xlibosmesa3 xlibs-dev xlibs-pic xpdf xpdf-reader Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 14 / 46
  • 24. Installation woes: debatable solution $ sudo apt-get install debhelper Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: armagetron armagetron-common autoconf bonobo-activation codebreaker debconf debconf-i18n debconf-utils dialog esound-common fb-music-high fontconfig frozen-bubble-data grepmail gv intltool-debian libaiksaurus-data libaiksaurus0c102 libatk1.0-0 libatk1.0-dev libbonobo-activation4 libbonobo2-0 libbonobo2-common libdb3 libdbd-mysql-perl libdbi-perl libeel2-data libesd0 ... The following packages will be REMOVED: autoconf2.13 frozen-bubble frozen-bubble-lib gconf2 gnomemeeting itk3.1-dev libbonoboui2-0 libbonoboui2-common libdigest-md5-perl libforms0.89 libgconf2-4 libgnome2-0 libgnome2-common libgnomeui-0 libgnomevfs2-0 libgnomevfs2-common libgtk1.2-dev libgtk2.0-0png3 libgtk2.0-dev libmime-base64-perl libpango1.0-dev libsdl-mixer1.2-dev libsdl-perl libsdl-ttf1.2-dev libsdl1.2-dev libsmpeg-dev libstorable-perl nautilus tk8.3-dev tktable-dev x-window-system x-window-system-core xaw3dg-dev xlib6g xlib6g-dev xlibmesa-dev xlibmesa3 xlibosmesa3 xlibs-dev xlibs-pic xpdf xpdf-reader The following NEW packages will be installed: armagetron-common debconf-i18n fb-music-high fontconfig intltool-debian libaiksaurus-data libaiksaurus0c102 libeel2-data libfilehandle-unget-perl libfontconfig1 libforms1 libgdbm3 libgnutls7 libgsf-1 libice-dev libice6 libidl0 liblzo1 libmagick5.5.7 libmail-mbox-messageparser-perl libmysqlclient12 libncursesw5 libnet-daemon-perl libnewt0.51 libpaper1 libplrpc-perl libsdl-console ... Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 14 / 46
  • 25. Installation woes: debatable solution $ sudo apt-get install debhelper Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: armagetron armagetron-common autoconf bonobo-activation codebreaker debconf debconf-i18n debconf-utils dialog esound-common fb-music-high fontconfig frozen-bubble-data grepmail gv intltool-debian libaiksaurus-data libaiksaurus0c102 libatk1.0-0 libatk1.0-dev libbonobo-activation4 libbonobo2-0 libbonobo2-common libdb3 libdbd-mysql-perl libdbi-perl libeel2-data libesd0 ... The following packages will be REMOVED: autoconf2.13 frozen-bubble frozen-bubble-lib gconf2 gnomemeeting itk3.1-dev libbonoboui2-0 libbonoboui2-common libdigest-md5-perl libforms0.89 libgconf2-4 libgnome2-0 libgnome2-common libgnomeui-0 libgnomevfs2-0 libgnomevfs2-common libgtk1.2-dev libgtk2.0-0png3 libgtk2.0-dev libmime-base64-perl libpango1.0-dev libsdl-mixer1.2-dev libsdl-perl libsdl-ttf1.2-dev libsdl1.2-dev libsmpeg-dev libstorable-perl nautilus tk8.3-dev tktable-dev x-window-system x-window-system-core xaw3dg-dev xlib6g xlib6g-dev xlibmesa-dev xlibmesa3 xlibosmesa3 xlibs-dev xlibs-pic xpdf xpdf-reader The following NEW packages will be installed: armagetron-common debconf-i18n fb-music-high fontconfig intltool-debian libaiksaurus-data libaiksaurus0c102 libeel2-data libfilehandle-unget-perl libfontconfig1 libforms1 libgdbm3 libgnutls7 libgsf-1 libice-dev libice6 libidl0 liblzo1 libmagick5.5.7 libmail-mbox-messageparser-perl libmysqlclient12 libncursesw5 libnet-daemon-perl libnewt0.51 libpaper1 libplrpc-perl libsdl-console ... 75 packages upgraded, 80 newly installed, 42 to remove and 858 not upgraded. Need to get 67.1MB of archives. After unpacking 26.9MB will be used. Do you want to continue? [Y/n] Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 14 / 46
  • 26. Installation woes: debatable solution $ sudo apt-get install debhelper Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: armagetron armagetron-common autoconf bonobo-activation codebreaker debconf debconf-i18n debconf-utils dialog esound-common fb-music-high fontconfig frozen-bubble-data grepmail gv intltool-debian libaiksaurus-data libaiksaurus0c102 libatk1.0-0 libatk1.0-dev libbonobo-activation4 libbonobo2-0 libbonobo2-common libdb3 libdbd-mysql-perl libdbi-perl libeel2-data libesd0 ... The following packages will be REMOVED: autoconf2.13 frozen-bubble frozen-bubble-lib gconf2 gnomemeeting itk3.1-dev libbonoboui2-0 libbonoboui2-common libdigest-md5-perl libforms0.89 libgconf2-4 libgnome2-0 libgnome2-common libgnomeui-0 libgnomevfs2-0 libgnomevfs2-common libgtk1.2-dev libgtk2.0-0png3 libgtk2.0-dev libmime-base64-perl libpango1.0-dev libsdl-mixer1.2-dev libsdl-perl libsdl-ttf1.2-dev libsdl1.2-dev libsmpeg-dev libstorable-perl nautilus tk8.3-dev tktable-dev x-window-system x-window-system-core xaw3dg-dev xlib6g xlib6g-dev xlibmesa-dev xlibmesa3 xlibosmesa3 xlibs-dev xlibs-pic xpdf xpdf-reader The following NEW packages will be installed: armagetron-common debconf-i18n fb-music-high fontconfig intltool-debian libaiksaurus-data libaiksaurus0c102 libeel2-data libfilehandle-unget-perl libfontconfig1 libforms1 libgdbm3 libgnutls7 libgsf-1 libice-dev libice6 libidl0 liblzo1 libmagick5.5.7 libmail-mbox-messageparser-perl libmysqlclient12 libncursesw5 libnet-daemon-perl libnewt0.51 libpaper1 libplrpc-perl libsdl-console ... 75 packages upgraded, 80 newly installed, 42 to remove and 858 not upgraded. Need to get 67.1MB of archives. After unpacking 26.9MB will be used. Do you want to continue? [Y/n] Abort. Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 14 / 46
  • 27. How dicult are package installation problems? Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 15 / 46
  • 28. How dicult are package installation problems? Theorem The following problems are NP-complete: installability of a single package co-installability of a set of packages Proof idea Equivalence with boolean satisability. Di Cosmo, Leroy, Treinen, Vouillon et al. Managing the complexity of large free and open source package-based software distributions. ASE 2006: Automated Software Engineering. Alternative proof of NP-hardness (Daniel Burrows, 2008) Encode Sudoku solving as a package installation problem, left as exercise for the public. Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 15 / 46
  • 29. Install/upgrade: nding a needle in a haystack Finding a solution is NP-complete, but installing and upgrading is more demanding... how many ways are there to install a package? Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 16 / 46
  • 30. Install/upgrade: nding a needle in a haystack Finding a solution is NP-complete, but installing and upgrading is more demanding... how many ways are there to install a package? Too many upgrade candidates Suppose we have components qi , for 1 i n, available in versions 1 and 2, all of which are installed in version 1 on the system. Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 16 / 46
  • 31. Install/upgrade: nding a needle in a haystack Finding a solution is NP-complete, but installing and upgrading is more demanding... how many ways are there to install a package? Too many upgrade candidates Suppose we have components qi , for 1 i n, available in versions 1 and 2, all of which are installed in version 1 on the system. Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 16 / 46
  • 32. Install/upgrade: nding a needle in a haystack Finding a solution is NP-complete, but installing and upgrading is more demanding... how many ways are there to install a package? Too many upgrade candidates Suppose we have components qi , for 1 i n, available in versions 1 and 2, all of which are installed in version 1 on the system. We want to install a component p in version 1 that depends on all of q1; : : : ; qn, any version. Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 16 / 46
  • 33. Install/upgrade: nding a needle in a haystack Finding a solution is NP-complete, but installing and upgrading is more demanding... how many ways are there to install a package? Too many upgrade candidates Suppose we have components qi , for 1 i n, available in versions 1 and 2, all of which are installed in version 1 on the system. We want to install a component p in version 1 that depends on all of q1; : : : ; qn, any version. Any of the 2n congurations f(p; 1)g [ f(qi ; i )ji 2 1 : : : n; 1 i 2g is a solution. Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 16 / 46
  • 34. Install/upgrade: nding a needle in a haystack Finding a solution is NP-complete, but installing and upgrading is more demanding... how many ways are there to install a package? Too many upgrade candidates Suppose we have components qi , for 1 i n, available in versions 1 and 2, all of which are installed in version 1 on the system. We want to install a component p in version 1 that depends on all of q1; : : : ; qn, any version. Any of the 2n congurations f(p; 1)g [ f(qi ; i )ji 2 1 : : : n; 1 i 2g is a solution. Which one do we choose? paranoid only install p trendy install p and step up all qi 's to version 2 ... and exponentially many in between! Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 16 / 46
  • 35. For users, dependency solving is not (yet) good enough! Main issues: 1 incompleteness of ad-hoc dependency solvers 2 poor expressivity 3 moving target Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 17 / 46
  • 36. For users, dependency solving is not (yet) good enough! Main issues: 1 incompleteness of ad-hoc dependency solvers Example package: a package: b version: 2 version: 2 depends: b (= 1) depends: a (= 1) package: a package: b version: 1 version: 1 depends: b depends: a # apt-get install a b fails The need for real solvers starts spreading Now ok for zypper, dnf, 0install, that use a SAT solver, but... Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 17 / 46
  • 37. For users, dependency solving is not (yet) good enough! Main issues: 1 incompleteness of ad-hoc dependency solvers 2 poor expressivity (AKA lack of user-level policies) does your package manager enable you (sysadm) to: 1 minimize installed size cool for embedded 2 minimize download size 28.8 Kbps or mobile connections 3 prefer version aligned installations 4 minimise downgrades, or removals 5 mix and match releases with more exibility than pinning? We need (measurable) solution quality, wrt user desiderata. see http://www.dicosmo.org/Articles/usercriteria.pdf Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 17 / 46
  • 38. For users, dependency solving is not (yet) good enough! Main issues: 1 incompleteness of ad-hoc dependency solvers 2 poor expressivity 3 moving target (research problem) I implementing a given state of the art solving strategy may be ne today, . . . I what if repositories grow ten times bigger? or add new features? I package manager developers need to connect with research on solvers Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 17 / 46
  • 39. For users, dependency solving is not (yet) good enough! Main issues: 1 incompleteness of ad-hoc dependency solvers 2 poor expressivity 3 moving target On the other hand. . . Various research communities have powerful constraint solvers able to address (some of) the above problems, and would love to validate them on real world use cases. We can close the gap! Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 17 / 46
  • 40. Separation of concerns Use a common format for installation/upgrade problems... Figure: Common Upgradeability Description Format (CUDF) See www.mancoosi.org/cudf, and the libcudf library by Stefano Zacchiroli Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 18 / 46
  • 41. Separation of concerns (cont.) Use a common format for installation/upgrade problems... Figure: Modular component manager See www.mancoosi.org/cudf, and the libcudf library by Stefano Zacchiroli Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 18 / 46
  • 42. A language for user preferences A preference expression is built from four basic ingredients: package selectors denote in a proposed solution certain classes of packages (the ones that changed, the ones that got removed, etc.) measurements can be applied to a package selector to obtain an integer value (the number of package selected, the number of packages selected that are up-to-date, etc.) maximisation/minimisation directives to ask the solver to nd a solution that maximises or minimises the value of a measurement aggregation combinations can be used to ask the solver to combine criteria in lexicographical order For full details, see www.dicosmo.org/Articles/usercriteria.pdf www.mancoosi.org/misc-2012/criteria/ Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 19 / 46
  • 43. Strategy to improve the state of the art Distribution editors report failures via DUDF Users Mancoosi Distribution editors upgrade install verify reports submit problems via CUDF interesting problems improved algorithms improved tools Competition Researchers (Mancoosi project, 2008) MISC competition http://www.mancoosi.org/misc/: 2010, 11, 12 1 make the solving community aware of distro needs 2 nd reusable common-ground dependency solvers Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 20 / 46
  • 44. Stocktacking Several CUDF solvers are available $ apt-cache search cudf aspcud - CUDF solver based on Answer Set Programming mccs - multi-critera CUDF solver packup - CUDF solver based on pseudo-Boolean constraints aspcud supports sophisticated user preferences, e.g.: aspcud sample.cudf sol.cudf -count(down), -notuptodate(solution), -aligned(solution,source,sourceversion), -unsat_recommends(solution), -count(new) P2OSGi provisioning platform for Eclipsespeaks CUDF OPAMthe OCaml package managerprefers aspcud/CUDF [your component manager here] ? Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 21 / 46
  • 45. Improved tools, added bonus for CUDF adopters Building systems Minimal system size -sum(solution,installedsize),-count(solution) Noah's ark +count(solution) Noah's ark, fresh -notuptodate(solution),+count(solution) Fast bootstrap -sum(solution,compiletime) Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 22 / 46
  • 46. Improved tools, added bonus for CUDF adopters Building systems Minimal system size -sum(solution,installedsize),-count(solution) Noah's ark +count(solution) Noah's ark, fresh -notuptodate(solution),+count(solution) Fast bootstrap -sum(solution,compiletime) Repairing a broken system conguration Use an empty request with xup -count(changed),-count(down),-notuptodate(solution) Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 22 / 46
  • 47. Improved tools, added bonus for CUDF adopters Building systems Minimal system size -sum(solution,installedsize),-count(solution) Noah's ark +count(solution) Noah's ark, fresh -notuptodate(solution),+count(solution) Fast bootstrap -sum(solution,compiletime) Repairing a broken system conguration Use an empty request with xup -count(changed),-count(down),-notuptodate(solution) Kiss cool eect All of this requires zero changes to the package manager code! Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 22 / 46
  • 48. Improved tools, added bonus for CUDF adopters Building systems Minimal system size -sum(solution,installedsize),-count(solution) Noah's ark +count(solution) Noah's ark, fresh -notuptodate(solution),+count(solution) Fast bootstrap -sum(solution,compiletime) Repairing a broken system conguration Use an empty request with xup -count(changed),-count(down),-notuptodate(solution) Kiss cool eect All of this requires zero changes to the package manager code! Can nd unexpected usages, like thinning virtual machines https://github.com/rdicosmo/ami-thinner Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 22 / 46
  • 49. Outline 1 GNU/Linux Distributions: industrialising Free Software 2 User side: improving package managers 3 Back to the server side : Package QA Find uninstallable packages Learning from the future of repositories Find non co-installable packages Find new non co-installable packages Filter incoming packages 4 In conclusion Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 23 / 46
  • 50. Working for the QA team The QA team and the release manager need to track tens of thousands of packages, their bugs, their incompatibilities, etc. We want to catch automatically installation-related errors before they hit the user and the BTS! Static analysis of package dependencies nd packages that cannot be installed at all, and... I spot the ones that surely need to be xed (know who to blame) I provide advance warning for future problems nd the incompatibilities between packages show how these incompatibilities evolve automate package migration Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 24 / 46
  • 51. QA 101: nd individually broken packages The problem In a repository R, nd all packages that cannot be installed at all Solving tens of thousands of NP-complete problem? Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 25 / 46
  • 52. QA 101: nd individually broken packages The problem In a repository R, nd all packages that cannot be installed at all Solving tens of thousands of NP-complete problem? Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 25 / 46
  • 53. QA 101: nd individually broken packages The problem In a repository R, nd all packages that cannot be installed at all Solving tens of thousands of NP-complete problem?In practice: explicit conicts between packages are not very frequent (without conicts, dependencies are dual Horn clauses) recent SAT solvers are able to handle current instances easily A practical tool rpmcheck/debcheck (Vouillon, 2006) I List all packages that cannot be installed at all in a repository I Provide short explanations I fast: analyses 400000 (binary) packages in a few seconds on commodity desktop hardware Integrated in the dose3 as distcheck, with many improvements by Pietro Abate et al. http://www.mancoosi.org/software/ Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 25 / 46
  • 54. Usage in Debian https://qa.debian.org/dose/ Release goal: 0 non-installable packages Also: Debian autobuilder network (check whether the Build-Deps can be satised) Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 26 / 46
  • 55. Usage in Debian (cont.) Verify installability of packages before uploading them to the archive I used daily by Emdebian Check that build-dependencies are satisable before attempting a package build I life changing for porters (quote) Generate test cases for nding errors occurring during package installation I le conicts, by Ralf Treinen I 650 bugs reported over time, 10 outstanding I https://qa.debian.org/dose/file-overwrites.html Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 27 / 46
  • 56. QA 101, level 2: what can we say about the future? Denition (outdated packages) p is outdated if p is not installable, and it remains uninstallable no matter how the other packages evolve (i.e. p's maintainer has no excuses) Denition (challengers) p challenges q if upgrading p forces to upgrade q What they have in common: properties that hold in all installations of any future evolution of the repository seems unfeasible, but we can eciently decide some properties of this kind Abate, Di Cosmo, Treinen, Zacchiroli Learning from the Future of Component Repositories CBSE 2012. Best paper award Tools in the dose library now used in qa.debian.org/dose Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 28 / 46
  • 57. Speculative analysis example Outdated packages 110 outdated packages in Debian testing (Oct 2011) 60% because of ongoing transition Python 2.6 ! 2.7 20% because of kdebindings, broken as part of a large refactoring process 20% outdated dependencies unknown to developers I xed now thanks to our reports Signicance automatically distinguish between transiently and permanently uninstallable packages; pinpoint actual responsibilities for xing uninstallability issues! Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 29 / 46
  • 58. Speculative analysis example (cont.) Challengers (Debian Lenny) Source Version Target Version Breaks python-defaults 2.5.2-3 3 1079 python-defaults 2.5.2-3 2.6 . 3 1075 e2fsprogs 1.41.3-1 any 139 ghc6 6.8.2dfsg1-1 6.8.2+ 136 libio-compress-base-perl 2.012-1 2.012. 80 libcompress-raw-zlib-perl 2.012-1 2.012. 80 libio-compress-zlib-perl 2.012-1 2.012. 79 icedove 2.0.0.19-1 2.1-0 78 iceweasel 3.0.6-1 3.1 70 haskell-mtl 1.1.0.0-2 1.1.0.0+ 48 sip4-qt3 4.7.6-1 4.8 47 ghc6 6.8.2dfsg1-1 6.8.2dfsg1+ . 6.8.2+ 36 haskell-parsec 2.1.0.0-2 2.1.0.0+ 29 Signicance provide a map of future uninstallability issues, sorted by severity, great dashboard for a release manager Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 30 / 46
  • 59. QA 201: Package Co-Installability Next step: interaction between packages Example: is there any package which cannot be installed together with iceweasel? with kde-full? Denition: a set of packages are co-installable if they can be installed together. all packages should be installable (individually!) some package incompatibilities are expected Can we summarise all incompatibility issues, and avoid browsing through hundreds of hyperlinked pages? Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 31 / 46
  • 60. Coinst A simplication theory for repositories, based on the extraction of a co-installability kernel, i.e. a repository much smaller than the original but equivalent wrt co-installability. Highlights: reexive/transitive dependency closure equivalent classes and quotients machine-checked proofs (in Coq!) In a word: tough maths at work! A tool: coinst (packaged in Debian) Vouillon, Di Cosmo On Software Components Co-Installability ESEC/FSE 2011: Foundations of Software Engineering. Best Artifact Award. Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 32 / 46
  • 61. Co-Installability Graphs coinst -root iceweasel -o graph.dot Packages_i386 iceweasel xul-ext-sage xul-ext-gnome-keyring libasound2 xul-ext-greasemonkey liboss4-salsa-asound2 coinst -root kde-full -o graph.dot Packages_i386 libphonon4 libqt4-phonon kde-window-manager kwin-style-dekorator libgps20 fso-gpsd oxygen-icon-theme fdpowermon-icons libasound2 liboss4-salsa-asound2 kde-full Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 33 / 46
  • 62. libzo ke per-mt-dev libzo ke per-st-dev libtomcat6-java (x 10) libtomcat7-java (x 7) libdb5.1-java (x 5) libdb5.3-java (x 2) w3m-el-snapshot w3m-el fso-gsm0710muxd gsm0710muxd libnl2-dev (x 6) libnl-3-dev (x 5) zephyr-server zephyr-server-krb5 libzephyr4-krb5 libzephyr4 # zab ix-proxy-mysql zab ix-proxy-pgsql zab ix-proxy-sqlite3 zab ix-server-mysql zab ix-server-pgsql mdbto ls-dbg tomcat6 (x 2) jenkins openbabel (x 2) babel-1.4.0 xmpuz les filelight-l10n xpuz les libasound2 (x 235 ) # libxine-dev libxine2-dev libxerces-c-dev (x 3) fso-config-gta01 fso-config-gta02 libxerces-c2-dev (x 2) xabacus xmabacus libsnack2 (x 2) libsnack2-alsa libportaudio-dev portaudio19-dev (x 4) libopenh323-1.18.0 (x 2) icheck qtmobility-dev libalog0.3-ful u cpsend fam wims-extra-al snd-gtk-pulse kde-l10n-k kde-l10n-ja kde-l10n-it kde-l10n-is kde-l10n-id kde-l10n-ia kde-l10n-hu kde-l10n-hr kde-l10n-hi kde-l10n-he kde-l10n-gu kde-l10n-gl kde-l10n-ga kde-l10n-fr kde-l10n-fi kde-l10n-eu kde-l10n-et kde-l10n-es kde-l10n-engb kde-l10n-el kde-l10n-de kde-l10n-da kde-l10n-cs kde-l10n-cavalencia kde-l10n-ca kde-l10n-bg kde-l10n-ar snd-gtk-jack # snd-nox (x 2) libdb5.1-java-gcj (x 2) libdb5.3-java-gcj libplayer-dev open-font-design-to lkit mscore (x 2) quas el-client-kde4 (x 2) quas el (x 2) libgtkhtml3.14-dev (x 9) libche se-dev (x 4) robot-player-dev libgnomeada2.14.2-dbg (x 2) fpc (x 2) python-jarabe-0.90 (x 4) python-jarabe-0.8 (x 4) sugar-browse-activity-0.86 (x 5) ∨ sugar-con ect-activity (x 9) ∨ python-jarabe-0.86 (x 4) sugar-calculate-activity sucrose-0.8 sugar-emulator-0.8 (x 2) sugar-emulator-0.90 (x 2) sucrose-0.90 sucrose-0.86 sugar-emulator-0.86 (x 2) sugar-emulator-0.84 (x 2) libdevil-dev (x 39) libcups2-dev (x 1 ) libcupsdriver1-dev (x 9) libkaya-sdl-dev libguichan-dev mysqmail-pure-ftpd-log er gforge-lists-mailman exim4 (x 3) fusionforge-standard (x 2) wims-extra-es unixodbc-dev (x 12) python-sugar-0.8 (x 2) python-sugar-0.90 (x 2) python-sugar-0.86 (x 2) python-sugar-0.92 sugar-artwork-0.92 sugar-artwork-0.8 sugar-artwork-0.90 sugar-artwork-0.86 # gs -man pure-ftpd-mysql pure-ftpd-postgresql pure-ftpd pure-ftpd-ldap proftpd-basic (x 19) wzdftpd (x 7) ftpd-s l mud leftpd heimdal-servers (x 2) rsh-redone-server mailutils-pop3d dovecot-pop3d ipopd popa3d courier-pop (x 2) solid-pop3d kolab-cyrus-pop3d kolab-cyrus-imapd citadel-server (x 2) mailutils-imap4d dovecot-imapd (x 2) courier-imap (x 2) esmtp-run s mtp masqmail msmtp-mta postfix (x 14) courier-mta (x 4) rmail libapache2-mod-php5 (x 3) libgd2-xpm (x 103) libiodbc2-dev # # # # cyrus-clients-2.4 (x 2) # # libapache2-mod-php5filter # # # # auth2db-frontend (x 5) guile-2.0-dev libtext-markdown-perl (x 3) snort-pgsql systemd-sysv xfingerd oidentd pidentd socklog-run rsyslog (x 6) inetutils-syslogd dsyslog (x 5) syslog-ng-core (x 5) systemd (x 3) # sysvinit upstart tor us-apache2 hunspel -de-at-frami hunspel -de-de-frami filtergen ferm hunspel -fr myspel -de-at myspel -de-de sysv-rc (x 4) file-rc # python-sugar-0.84 (x 2) # sugar-artwork-0.84 sudo sudo-ldap stardict-gnome stardict-gtk leafnode sn cyrus-pop3d-2.4 (x 3) tftpd-hpa ∨ snort # busybox-syslogd klogd snort-mysql rxvt-ml rxvt-beta rxvt libreadline6-dev (x 18) libreadline-gplv2-dev (x 2) libmdbodbc1 (x 2) libmyodbc tdsodbc # yardradius bif mailutils-comsatd blends-doc cd -doc cpufreqd powernowd debget debian-go dies ecm gmp-ecm heimdal-docs krb5-doc radiusd-livingston # radsecproxy quas el-data quas el-data-kde4 libqt4-dbg (x 3) qt-x11-fre -dbg gdb (x 15) gdb-minimal python-xat r (x 8) python-pyxat r (x 2) python-sqlite (x 13) python-pysqlite1.1 (x 2) lib o st-mpi-python1.46-dev (x 2) lib o st-mpi1.46-dev python-pyface (x 5) gnome-dbg gnome-core (x 2) libmapnik-dev (x 2) # libhdf5-serial-dev libhdf5-mpich-dev libme p-openmpi-dev python-traitsbackendqt python-traitsbackendwx slurm-l nl-torque gridengine-client torque-client ircd-ircu ngircd dancer-ircd python-envisage python-envisageplugins python-pyorbit-omg python-omniorb-omg # libpt-dev libjpeg8-dev (x 39) libjpeg62-dev libpt2.4.5-dev (x 2) libpt-1.10.10-dev (x 2) php5-mysql (x 2 ) php5-mysqlnd ∨ apache2-mpm-itk apache2-mpm-prefork (x 4) phonon-backend-nul phonon-backend-vlc (x 2) phonon-backend-gstreamer (x 3) libphonon4 (x 24) libqt4-phonon libpcp3-dev (x 2) libpgpo l-dev libpcp3 (x 18) pgpo l2 python-vtk (x 5) paraview-python e17-dev libecore-dev (x 3) libedje-dev libgrib-api-1.9.9 (x 5) libhdf5-openmpi-1.8.4 (x 28) # libopenh323-1.18.0-develop libopenmpi-dev (x 20) libopal-dev obex-data-server (x 3) obexd-server libneon27-dev libneon27-gnutls-dev libkrb5-dev (x 30) libgnutls-dev (x 44) heimdal-dev libelektra-dev (x 3) libgnutls28-dev mplayer (x 2) mplayer2 (x 2) mo n-bug y mo n-bug y-esd minbif (x 2) minbif-webcam mew-bin mew-beta-bin libgl1-mesa-glx (x 17) libgl1-mesa-swx11 (x 4) # libme p-dev libme p-mpi-dev maven2 maven ma tkit percona-to lkit lsb # nul mailer # # # xmail # lpr lprng # live-config-upstart live-config-runit # # live-config-systemd live-config-sysvinit # libnl-dev libiodbc2 (x 98) odbc-postgresql (x 2) libhdf4-alt-dev libhdf4-dev (x 2) libgpod4 (x 42) libgpod4-nogtk libgdchart-gd2-noxpm libgdchart-gd2-xpm libgd2-noxpm libgd-gd2-perl (x 28) libgd-gd2-noxpm-perl libswscale2 libswscale-extra-2 libavutil-extra-51 libpostproc52 xinetd libpostproc-extra-52 libavutil51 libavformat53 # kc libavformat-extra-53 libavcodec-extra-53 libavfilter2 netscript-2.4-upstart strongswan-starter libavfilter-extra-2 libavdevice53 libavdevice-extra-53 libavcodec53 libalog0.3-base (x 3) gnat-4.4 (x 41) gnat-4.6 (x 8) # libhdf5-serial-1.8.4 libhdf5-mpich-1.8.4 libgrib-api-data lam4-dev mpi-doc # mpich2-doc openmpi-doc lam-mpidoc python-kombu (x 4) python-cjson (x 2) kdif 3 kdif 3-qt oxygen-icon-theme fdpowermon-icons kdesvn-kio-plugins kdesdk-kio-plugins libjack0 (x 2) libjack-jackd2-0 (x 2) # raco n (x 3) # openswan (x 5) strongswan-ikev2 (x 2) strongswan-ikev1 in (x 2) in 2-inews in 2-dev # inetutils-telnetd # krb5-telnetd krb5-rsh-server # telnetd # telnetd-s l iputils-ping (x 2 ) inetutils-ping # inetutils-inetd openbsd-inetd rlinetd ike (x 2) # ifupdown (x 3) netscript-2.4 iceape (x 4) xul-ext-requestpolicy mget y-fax hylafax-client (x 4) inetutils-ftpd krb5-ftpd ftpd twoftpd-run runit (x 3) daemonto ls-run vsftpd wu-ftpd libhdf5-lam-1.8.4 sendmail-bin (x 3) harden-servers (x 2) pyftpd # rpcbind (x 1 ) rsh-server # guile-1.6-dev guile-1.8-dev (x 4) gtalk (x 2) inetutils-talkd talkd # grub-pc (x 4) grub-efi-ia32 (x 2) grub-corebo t (x 2) grub2-com on grub-ie 1275 grub-efi-amd64 grub-legacy # libgrib-api-0d-1 (x 2) perlmagick graphicsmagick-libmagick-dev-compat libmagickcore-dev (x 6) graphicsmagick-imagemagick-compat octave-image imagemagick (x 2) gpivto ls-mpi gpivto ls gpiv gpiv-mpi gpe-login xdm wdm slim kdm (x 2) gnuspo l (x 3) system-config-printer-udev gnome-control-center (x 3) gpe-conf (x 3) gnome-control-center-data cap lets-data git-daemon-run git-daemon-sysvinit gdm3 (x 2) # fusionforge-ful ∨ exim4-daemon-heavy (x 3) fusionforge-minimal fuse (x 57) lo p-aes-utils libgps20 (x 14) fso-gpsd fso-frameworkd (x 3) libphone-utils0 (x 4) # fso-config-general fre radius-com on (x 8) fontforge (x 2) fontforge-nox fltk1.1-games fltk1.3-games kde-l10n-zhtw kde-l10n-zhcn kde-l10n-wa kde-l10n-uk kde-l10n-tr kde-l10n-th kde-l10n-sv kde-l10n-sr kde-l10n-sl kde-l10n-sk kde-l10n-ru kde-l10n-ro kde-l10n-ptbr kde-l10n-pt kde-l10n-pl kde-l10n-pa kde-l10n-n kde-l10n-nl kde-l10n-nds kde-l10n-nb kde-l10n-mai kde-l10n-lv kde-l10n-lt kde-l10n-ko kde-l10n-kn (x 2) kde-l10n-km festvox-kdlpc16k festvox-kdlpc8k festvox-kal pc16k festvox-kal pc8k cman (x 3) fence-agents gamin (x 11) libfam0 (x 3) # exim4-config (x 4) # exim4-daemon-light (x 2) # evince (x 3) evince-gtk epiphany-browser (x 5) swfdec-mozil a # emacs23 (x 2) emacs23-lucid emacs23-nox # libdap-dev libdnet-dev (x 2) libcurl4-gnutls-dev (x 24) # dma discount # markdown isc-dhcp-server (x 4) dhcp-helper isc-dhcp-relay (x 2) # libdb5.1-dev (x 5) libdb4.8-dev libdb5.3-dev (x 2) dconf-to ls dconf libcyrus-imap-perl24 (x 4) kolab-libcyrus-imap-perl (x 3) cyrus-n tpd-2.4 (x 3) # cyrus-com on (x 7) kolab-cyrus-com on in 2 in 2-lfs cyrus-imapd-2.4 (x 3) # uw-imapd # kolab-cyrus-clients libcurl4-ns -dev (x 2) libcurl4-opens l-dev cups-client (x 15) cups-bsd (x 2) controlaula ltsp-controlaula gnome-font-viewer console-to ls (x 4) kbd console-setup (x 2) console-setup-mini libcoin60-doc inventor-dev libcoin60-dev resource-agents (x 5) cluster-agents citadel-mta (x 2) ucspi-unix check-mk-livestatus cfingerd efingerd pawserv (x 2) udhcpd sysklogd fingerd lib o st1.46-dev (x 18) lib o st1.48-dev (x 63) lib o st-mpi-python1.46.1 lib o st-mpi-python1.48.0 bitlbe (x 2) bitlbe -libpurple fp-compiler-2.4.4 (x 14) binutils-gold # bidentd ident2 nul identd cron (x 5) bcron-run bandwidthd bandwidthd-pgsql # atftpd tftpd python-pyatspi python-pyatspi2 (x 5) asterisk-core-sounds-es-gsm asterisk-prompt-es-co # asterisk-voicemail asterisk-voicemail-imapstorage asterisk-voicemail-odbcstorage iputils-arping (x 3) arping ardour ardour-i686 apache2-prefork-dev apache2-threaded-dev apache2-mpm-event # # apache2-mpm-worker libasound2-dev (x 2) libos 4-salsa-dev libos -salsa-asound2 libos 4-salsa-asound2 xul-ext-adblock-plus (x 2) libabiword-2.9-dev (x 4) libace-foxreactor-dev (x 3) acetoneiso akonadi-kde-resource-go gledata (x 358) plasma-widget-amule (x 56) libapq-postgresql-dbg (x 2) auth2db (x 5) banshe -extension-lirc (x 6) bluedevil lib o st-al -dev (x 4) lib o st-mpi-dev (x 2) cdo (x 3) libcegui-mk2-dev chemical-structures cl-sql-odbc (x 2) code-saturne (x 13) con ectomeviewer (x 2) courier-faxmail cyrus-admin-2.2 (x 5) cyrus-clients-2.2 cyrus-replication (x 2) ∨ digikam-dbg (x 20) docbo kwiki do dle-dbg (x 2) libdose2-ocaml-dev (x 2) libe t-dev (x 3) ∨ fai-quickstart ∨ fileschanged ∨ libfluidsynth-dev (x 2) fre radius-iodbc fre vo (x 4) fusionforge-plugin-blocks (x 25) python-gamera-dev (x 2) ∨ ∨ ∨ libgd-gd2-noxpm-ocaml-dev (x 2) libgdal1-dev (x 3) libgdb-dev libgeda-dev geogebra-kde (x 2) glance (x 20) gnome-osd gnome-ses ion (x 4) gnome-utils gosa (x 4 ) goto-fai-backend ∨ gpe gradle (x 2) gros ∨ grub-cho se-default ∨ grub-imagebo t ∨ hapm (x 3) libhdf5-lam-dev libigstk4-dev (x 3) il uminator-demo imagemagick-dbg jackd1 (x 2) jackd2 (x 3) jenkins-tomcat libk3b-dev (x 7) libkaya-gd-dev kdeartwork (x 19) kdepim-dbg (x 3) kdeplasma-ad ons-dbg kdesvn (x 2) keystone (x 2) kolabd libalog-ful -dbg (x 2) libapache2-mod-log-sql (x 5) f mpeg-dbg (x 2) libgd2-xpm-dev libgdchart-gd2-noxpm-dev libgdchart-gd2-xpm-dev libgpod-dev libgpod-nogtk-dev libmojomojo-perl libphone-ui-2010 517 (x 2) libphone-ui-dev libtuxcap-dev ltsp-client ltsp-server-standalone libluabind-dev libmagics+ -dev (x 4) maven-debian-helper gnome (x 2) mew mew-beta monodevelop-debug er-gdb mysqmail-courier-log er ∨ mysqmail-dovecot-log er ∨ nagiosgrapher network-manager-strongswan nova-compute-kvm nova-network octave-pkg-dev (x 2) og videoto ls (x 2) libsaml2-dev (x 3) libopenwalnut1-dev libapache2-mod-pas enger (x 2) ∨ libpcp-logsum ary-perl (x 2) pfqueue (x 2) ∨ python-fs python-traitsgui ∨ qt-sdk r-base-core-dbg (x 2) redhat-cluster-suite (x 2) request-tracker3.8 (x 6) sa-learn-cyrus ∨ sdpam sepia snd-gtk ∨ libsoqt4-dev startupmanager strongswan (x 2) ∨ python-jarabe-0.84 (x 6) sucrose-0.84 ∨ task-kde-desktop task-lxde-desktop tcos-tftp-dhcp libkwebkit-dbg ytalk ∨ ∨ zoneminder xmakemol xmakemol-gl libxine1-doc libxine2-doc xserver-xorg-input-mtrack xserver-xorg-input-multitouch wmnd wmnd-snmp wl wl-beta semi vm (x 2) gnus libwine-gecko-dbg-unstable libwine-gecko-unstable w3c-dtd-xhtml w3c-sgml-lib (x 2) ucspi-tcp ucspi-tcp-ipv6 tk8.4-doc tk8.5-doc texmacs-com on (x 2) texmacs-extra-fonts tcl-trf (x 2) tcl-trf-doc tcl8.4-doc tcl8.5-doc libtag1-rusxmms libtag1-vanil a synce-hal (x 2) synce-serial slapos-client python-zc.buildout slurm-l nl (x 2) sinfo # qterm # torque-client-x11 shorewal 6-lite uif # shorewal -lite fiaif shorewal (x 2) shorewal -init ∨ scid-rating-data scid-spel -data # rxvt-unicode (x 2) rxvt-unicode-256color rxvt-unicode-lite ruby-bacon ruby-rspec-core (x 7) libamrita-ruby1.8 (x 2) ruby-amrita2 (x 4) rt-tests xenomai-runtime libreadline5-dbg libreadline6-dbg lib64readline-gplv2-dev lib64readline6-dev # ratbox-services-mysql ratbox-services-pgsql ratbox-services-sqlite raptor-utils raptor2-utils radiusclient1 (x 2) libradiusclient-ng-dev libradius1-dev radare radare-gtk libqwt-doc libqwt5-doc libqwt-dev libqwt5-qt4-dev python-quixote (x 2) python-quixote1 (x 2) qca-dev libqca2-dev (x 2) psi3 yagiuda planet-venus racket (x 2) pimd smcroute php-apc php5-xcache pen mush pen mush-mysql orvil e-write xtel openwince-jtag urjtag opendns ec-enforcer-mysql (x 2) opendns ec-enforcer-sqlite3 (x 2) olpc-kbdshim olpc-kbdshim-hal libode-dev libode-sp-dev oce-draw opencascade-draw liboce-foundation-dev (x 5) libopencascade-foundation-dev (x 6) # nginx-extras (x 2) nginx-ful (x 2) nginx-light (x 2) nginx ∨ libnetpbm10-dev libnetpbm9-dev libpgm-dev tftp tftp-hpa telnet telnet-s l harden-clients x2vnc ftp-upload ftp ftp-s l mtr mtr-tiny modem anager (x 2) wader-core libapache2-mod-wsgi libapache2-mod-wsgi-py3 mlterm mlterm-tiny ipadic chasen-can adic naist-jdic (x 2) mcstrans policycoreutils (x 6) myspel -hu hunspel -hu myspel -fr # myspel -fr-gut myspel -da hunspel -vi hunspel -sr hunspel -sh hunspel -da lzma xz-lzma liblua50-socket-dev liblua50-socket2 luasocket luasocket-dev # libxbase2.0-bin dvb-ap s (x 2) libxdb-dev libupnp3-dev (x 2) libupnp4-dev libunique-doc libunique-3.0-doc libsieve2-dev libmailutils-dev (x 2) libsendmail-milter-perl libsendmail-pmilter-perl libpam-ldap libpam-ldapd libpam-heimdal libpam-krb5 libowfat-dev libudt-dev libcdb-dev libodbc-ruby-doc ruby-odbc (x 10) libns -ldap libns -ldapd libnet-proxy-perl s lh libmimedir-dev libmimedir-gnome-dev (x 2) libev-libevent-dev libevent-dev libapache2-authen tlm-perl libauthen-smb-perl (x 2) libantlr3c-3.2-0 libantlr3c-antlrdbg-3.2-0 ldap2dns ldap2zone ldapdns laptop-mode-to ls noflushd joe joe-jup # ircd-hybrid # # ircd-irc2 inspircd (x 2) charybdis ircd-ratbox (x 2) im-config im-switch # hunspel -de-ch myspel -de-ch hunspel -de-ch-frami # hunspel -de-at # myspel -de-de-oldspel hunspel -de-de hunspel -de-med ∨ ifrench ifrench-gut hwloc hwloc-nox hunspel -ru myspel -ru hunspel -en-us myspel -en-us hunspel -to ls myspel -to ls hel o hel o-debhelper heimdal-clients (x 3) otp krb5-clients # krb5-user (x 4) openafs-kpas wd libgnutls26-dbg libgnutls28-dbg # gnome-p openresolv resolvconf gnoki -smsd (x 3) smsto ls gmt (x 2) gmt-manpages gimp-dcraw gimp-ufraw libgfs-1.3-2 (x 3) libgfs-mpi-1.3-2 (x 3) gc -mingw32 mingw32 mingw32-binutils binutils-mingw-w64-x86-64 binutils-mingw-w64-i686 binutils-mingw-w64 (x 5) # libstdc+ 6-4.4-doc libstdc+ 6-4.5-doc libstdc+ 6-4.6-doc # libstdc+ 6-4.4-dbg libstdc+ 6-4.5-dbg libstdc+ 6-4.6-dbg # lib64stdc+ 6-4.4-dbg lib64stdc+ 6-4.5-dbg lib64stdc+ 6-4.6-dbg libwn -dev libwn 6-dev fre bsd-sendpr gnats-user (x 2) fre bsd-buildutils (x 2) pmake fo matic-db fo matic-db-compres ed-p ds fo kb-plainx fo kb-wmaker libfltk1.1-dev (x 3) libfltk1.3-dev (x 2) flex flex-old bison (x 2) bison+ pretzel (x 3) firebird2.5-clas ic-com on (x 2) firebird2.5-super (x 2) firebird2.5-server-com on (x 3) firebird2.5-clas ic firebird2.5-superclas ic firebird2.1-server-com on (x 2) firebird2.1-clas ic firebird2.1-super fb-music-high fb-music-low et ercap-graphical et ercap-text-only erlang-base erlang-base-hipe elvis elvis-console elinks-data (x 2) elinks-lite libdwarf-dev libdw-dev libelf-dev (x 2) libelfg0-dev (x 2) nscd unscd dvi2ps-fontdata-ptexfake ptex-base (x 6) python-dnspython (x 5) linkchecker (x 2) dicod (x 4) dictd dico le-dico-de-rene-cougnenc dhcpcd pump (x 2) # dbsk d-cdb sk search yask serv libdb5.1-tcl libdb5.3-tcl libdb5.1-stl-dev libdb5.3-stl-dev libdb5.1-sql-dev (x 2) libdb5.3-sql-dev libsasl2-modules-gs api-heimdal (x 2) libsasl2-modules-gs api-mit (x 2) libcunit1 (x 2) libcunit1-ncurses (x 2) cros fire-maps cros fire-maps-smal crack crack-md5 courier-maildrop (x 5) maildrop conky-cli conky-std libclut er-gtk-1.0-doc (x 2) libclut er-gtk-0.10-doc libclo g-isl-dev libclo g-p l-dev # chrony ntp (x 2) open tpd python-cher ypy3 (x 4) python-cher ypy (x 3) check-mk-config-icinga check-mk-config-nagios3 busybox (x 4) busybox-static bo tchart bo tchart2 lib o st1.46-doc lib o st1.48-doc (x 2) # bacula-com on-mysql (x 3) bacula-com on-pgsql (x 3) bacula-com on-sqlite3 (x 5) libavahi-ui-dev libavahi-ui-gtk3-dev # aumix aumix-gtk os -preserve mpg123-el ∨ # asterisk-core-sounds-fr-gsm asterisk-prompt-fr-armel e asterisk-prompt-fr-proformatique # apsfilter magicfilter printfilters-p d # apcupsd (x 2) nut-server (x 5) powstatd apache2-suexec apache2-suexec-custom amavisd-new (x 3) pham -ldap-amavis # aide aide-dynamic aide-xen 2ping (x 29205) console-setup-fre bsd MIS ING DEP Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 34 / 46
  • 63. Interactive graph viewers on http://coinst.irill.org/ libzo ke per-mt-dev libzo ke per-st-dev libtomcat6-java (x 10) libtomcat7-java (x 7) libdb5.1-java (x 5) libdb5.3-java (x 2) w3m-el-snapshot w3m-el fso-gsm0710muxd gsm0710muxd libnl2-dev (x 6) libnl-3-dev (x 5) zephyr-server zephyr-server-krb5 libzephyr4-krb5 libzephyr4 # zab ix-proxy-mysql zab ix-proxy-pgsql zab ix-proxy-sqlite3 zab ix-server-mysql zab ix-server-pgsql mdbto ls-dbg tomcat6 (x 2) jenkins openbabel (x 2) babel-1.4.0 xmpuz les filelight-l10n xpuz les libasound2 (x 235 ) # libxine-dev libxine2-dev libxerces-c-dev (x 3) fso-config-gta01 fso-config-gta02 libxerces-c2-dev (x 2) xabacus xmabacus libsnack2 (x 2) libsnack2-alsa libportaudio-dev portaudio19-dev (x 4) libopenh323-1.18.0 (x 2) icheck qtmobility-dev libalog0.3-ful u cpsend fam wims-extra-al snd-gtk-pulse kde-l10n-k kde-l10n-ja kde-l10n-it kde-l10n-is kde-l10n-id kde-l10n-ia kde-l10n-hu kde-l10n-hr kde-l10n-hi kde-l10n-he kde-l10n-gu kde-l10n-gl kde-l10n-ga kde-l10n-fr kde-l10n-fi kde-l10n-eu kde-l10n-et kde-l10n-es kde-l10n-engb kde-l10n-el kde-l10n-de kde-l10n-da kde-l10n-cs kde-l10n-cavalencia kde-l10n-ca kde-l10n-bg kde-l10n-ar snd-gtk-jack # snd-nox (x 2) libdb5.1-java-gcj (x 2) libdb5.3-java-gcj libplayer-dev open-font-design-to lkit mscore (x 2) quas el-client-kde4 (x 2) quas el (x 2) libgtkhtml3.14-dev (x 9) libche se-dev (x 4) robot-player-dev libgnomeada2.14.2-dbg (x 2) fpc (x 2) python-jarabe-0.90 (x 4) python-jarabe-0.8 (x 4) sugar-browse-activity-0.86 (x 5) ∨ sugar-con ect-activity (x 9) ∨ python-jarabe-0.86 (x 4) sugar-calculate-activity sucrose-0.8 sugar-emulator-0.8 (x 2) sugar-emulator-0.90 (x 2) sucrose-0.90 sucrose-0.86 sugar-emulator-0.86 (x 2) sugar-emulator-0.84 (x 2) libdevil-dev (x 39) libcups2-dev (x 1 ) libcupsdriver1-dev (x 9) libkaya-sdl-dev libguichan-dev mysqmail-pure-ftpd-log er gforge-lists-mailman exim4 (x 3) fusionforge-standard (x 2) wims-extra-es unixodbc-dev (x 12) python-sugar-0.8 (x 2) python-sugar-0.90 (x 2) python-sugar-0.86 (x 2) python-sugar-0.92 sugar-artwork-0.92 sugar-artwork-0.8 sugar-artwork-0.90 sugar-artwork-0.86 # gs -man pure-ftpd-mysql pure-ftpd-postgresql pure-ftpd pure-ftpd-ldap proftpd-basic (x 19) wzdftpd (x 7) ftpd-s l mud leftpd heimdal-servers (x 2) rsh-redone-server mailutils-pop3d dovecot-pop3d ipopd popa3d courier-pop (x 2) solid-pop3d kolab-cyrus-pop3d kolab-cyrus-imapd citadel-server (x 2) mailutils-imap4d dovecot-imapd (x 2) courier-imap (x 2) esmtp-run s mtp masqmail msmtp-mta postfix (x 14) courier-mta (x 4) rmail libapache2-mod-php5 (x 3) libgd2-xpm (x 103) libiodbc2-dev # # # # cyrus-clients-2.4 (x 2) # # libapache2-mod-php5filter # # # # auth2db-frontend (x 5) guile-2.0-dev libtext-markdown-perl (x 3) snort-pgsql systemd-sysv xfingerd oidentd pidentd socklog-run rsyslog (x 6) inetutils-syslogd dsyslog (x 5) syslog-ng-core (x 5) systemd (x 3) # sysvinit upstart tor us-apache2 hunspel -de-at-frami hunspel -de-de-frami filtergen ferm hunspel -fr myspel -de-at myspel -de-de sysv-rc (x 4) file-rc # python-sugar-0.84 (x 2) # sugar-artwork-0.84 sudo sudo-ldap stardict-gnome stardict-gtk leafnode sn cyrus-pop3d-2.4 (x 3) tftpd-hpa ∨ snort # busybox-syslogd klogd snort-mysql rxvt-ml rxvt-beta rxvt libreadline6-dev (x 18) libreadline-gplv2-dev (x 2) libmdbodbc1 (x 2) libmyodbc tdsodbc # yardradius bif mailutils-comsatd blends-doc cd -doc cpufreqd powernowd debget debian-go dies ecm gmp-ecm heimdal-docs krb5-doc radiusd-livingston # radsecproxy quas el-data quas el-data-kde4 libqt4-dbg (x 3) qt-x11-fre -dbg gdb (x 15) gdb-minimal python-xat r (x 8) python-pyxat r (x 2) python-sqlite (x 13) python-pysqlite1.1 (x 2) lib o st-mpi-python1.46-dev (x 2) lib o st-mpi1.46-dev python-pyface (x 5) gnome-dbg gnome-core (x 2) libmapnik-dev (x 2) # libhdf5-serial-dev libhdf5-mpich-dev libme p-openmpi-dev python-traitsbackendqt python-traitsbackendwx slurm-l nl-torque gridengine-client torque-client ircd-ircu ngircd dancer-ircd python-envisage python-envisageplugins python-pyorbit-omg python-omniorb-omg # libpt-dev libjpeg8-dev (x 39) libjpeg62-dev libpt2.4.5-dev (x 2) libpt-1.10.10-dev (x 2) php5-mysql (x 2 ) php5-mysqlnd ∨ apache2-mpm-itk apache2-mpm-prefork (x 4) phonon-backend-nul phonon-backend-vlc (x 2) phonon-backend-gstreamer (x 3) libphonon4 (x 24) libqt4-phonon libpcp3-dev (x 2) libpgpo l-dev libpcp3 (x 18) pgpo l2 python-vtk (x 5) paraview-python e17-dev libecore-dev (x 3) libedje-dev libgrib-api-1.9.9 (x 5) libhdf5-openmpi-1.8.4 (x 28) # libopenh323-1.18.0-develop libopenmpi-dev (x 20) libopal-dev obex-data-server (x 3) obexd-server libneon27-dev libneon27-gnutls-dev libkrb5-dev (x 30) libgnutls-dev (x 44) heimdal-dev libelektra-dev (x 3) libgnutls28-dev mplayer (x 2) mplayer2 (x 2) mo n-bug y mo n-bug y-esd minbif (x 2) minbif-webcam mew-bin mew-beta-bin libgl1-mesa-glx (x 17) libgl1-mesa-swx11 (x 4) # libme p-dev libme p-mpi-dev maven2 maven ma tkit percona-to lkit lsb # nul mailer # # # xmail # lpr lprng # live-config-upstart live-config-runit # # live-config-systemd live-config-sysvinit # libnl-dev libiodbc2 (x 98) odbc-postgresql (x 2) libhdf4-alt-dev libhdf4-dev (x 2) libgpod4 (x 42) libgpod4-nogtk libgdchart-gd2-noxpm libgdchart-gd2-xpm libgd2-noxpm libgd-gd2-perl (x 28) libgd-gd2-noxpm-perl libswscale2 libswscale-extra-2 libavutil-extra-51 libpostproc52 xinetd libpostproc-extra-52 libavutil51 libavformat53 # kc libavformat-extra-53 libavcodec-extra-53 libavfilter2 netscript-2.4-upstart strongswan-starter libavfilter-extra-2 libavdevice53 libavdevice-extra-53 libavcodec53 libalog0.3-base (x 3) gnat-4.4 (x 41) gnat-4.6 (x 8) # libhdf5-serial-1.8.4 libhdf5-mpich-1.8.4 libgrib-api-data lam4-dev mpi-doc # mpich2-doc openmpi-doc lam-mpidoc python-kombu (x 4) python-cjson (x 2) kdif 3 kdif 3-qt oxygen-icon-theme fdpowermon-icons kdesvn-kio-plugins kdesdk-kio-plugins libjack0 (x 2) libjack-jackd2-0 (x 2) # raco n (x 3) # openswan (x 5) strongswan-ikev2 (x 2) strongswan-ikev1 in (x 2) in 2-inews in 2-dev # inetutils-telnetd # krb5-telnetd krb5-rsh-server # telnetd # telnetd-s l iputils-ping (x 2 ) inetutils-ping # inetutils-inetd openbsd-inetd rlinetd ike (x 2) # ifupdown (x 3) netscript-2.4 iceape (x 4) xul-ext-requestpolicy mget y-fax hylafax-client (x 4) inetutils-ftpd krb5-ftpd ftpd twoftpd-run runit (x 3) daemonto ls-run vsftpd wu-ftpd libhdf5-lam-1.8.4 sendmail-bin (x 3) harden-servers (x 2) pyftpd # rpcbind (x 1 ) rsh-server # guile-1.6-dev guile-1.8-dev (x 4) gtalk (x 2) inetutils-talkd talkd # grub-pc (x 4) grub-efi-ia32 (x 2) grub-corebo t (x 2) grub2-com on grub-ie 1275 grub-efi-amd64 grub-legacy # libgrib-api-0d-1 (x 2) perlmagick graphicsmagick-libmagick-dev-compat libmagickcore-dev (x 6) graphicsmagick-imagemagick-compat octave-image imagemagick (x 2) gpivto ls-mpi gpivto ls gpiv gpiv-mpi gpe-login xdm wdm slim kdm (x 2) gnuspo l (x 3) system-config-printer-udev gnome-control-center (x 3) gpe-conf (x 3) gnome-control-center-data cap lets-data git-daemon-run git-daemon-sysvinit gdm3 (x 2) # fusionforge-ful ∨ exim4-daemon-heavy (x 3) fusionforge-minimal fuse (x 57) lo p-aes-utils libgps20 (x 14) fso-gpsd fso-frameworkd (x 3) libphone-utils0 (x 4) # fso-config-general fre radius-com on (x 8) fontforge (x 2) fontforge-nox fltk1.1-games fltk1.3-games kde-l10n-zhtw kde-l10n-zhcn kde-l10n-wa kde-l10n-uk kde-l10n-tr kde-l10n-th kde-l10n-sv kde-l10n-sr kde-l10n-sl kde-l10n-sk kde-l10n-ru kde-l10n-ro kde-l10n-ptbr kde-l10n-pt kde-l10n-pl kde-l10n-pa kde-l10n-n kde-l10n-nl kde-l10n-nds kde-l10n-nb kde-l10n-mai kde-l10n-lv kde-l10n-lt kde-l10n-ko kde-l10n-kn (x 2) kde-l10n-km festvox-kdlpc16k festvox-kdlpc8k festvox-kal pc16k festvox-kal pc8k cman (x 3) fence-agents gamin (x 11) libfam0 (x 3) # exim4-config (x 4) # exim4-daemon-light (x 2) # evince (x 3) evince-gtk epiphany-browser (x 5) swfdec-mozil a # emacs23 (x 2) emacs23-lucid emacs23-nox # libdap-dev libdnet-dev (x 2) libcurl4-gnutls-dev (x 24) # dma discount # markdown isc-dhcp-server (x 4) dhcp-helper isc-dhcp-relay (x 2) # libdb5.1-dev (x 5) libdb4.8-dev libdb5.3-dev (x 2) dconf-to ls dconf libcyrus-imap-perl24 (x 4) kolab-libcyrus-imap-perl (x 3) cyrus-n tpd-2.4 (x 3) # cyrus-com on (x 7) kolab-cyrus-com on in 2 in 2-lfs cyrus-imapd-2.4 (x 3) # uw-imapd # kolab-cyrus-clients libcurl4-ns -dev (x 2) libcurl4-opens l-dev cups-client (x 15) cups-bsd (x 2) controlaula ltsp-controlaula gnome-font-viewer console-to ls (x 4) kbd console-setup (x 2) console-setup-mini libcoin60-doc inventor-dev libcoin60-dev resource-agents (x 5) cluster-agents citadel-mta (x 2) ucspi-unix check-mk-livestatus cfingerd efingerd pawserv (x 2) udhcpd sysklogd fingerd lib o st1.46-dev (x 18) lib o st1.48-dev (x 63) lib o st-mpi-python1.46.1 lib o st-mpi-python1.48.0 bitlbe (x 2) bitlbe -libpurple fp-compiler-2.4.4 (x 14) binutils-gold # bidentd ident2 nul identd cron (x 5) bcron-run bandwidthd bandwidthd-pgsql # atftpd tftpd python-pyatspi python-pyatspi2 (x 5) asterisk-core-sounds-es-gsm asterisk-prompt-es-co # asterisk-voicemail asterisk-voicemail-imapstorage asterisk-voicemail-odbcstorage iputils-arping (x 3) arping ardour ardour-i686 apache2-prefork-dev apache2-threaded-dev apache2-mpm-event # # apache2-mpm-worker libasound2-dev (x 2) libos 4-salsa-dev libos -salsa-asound2 libos 4-salsa-asound2 xul-ext-adblock-plus (x 2) libabiword-2.9-dev (x 4) libace-foxreactor-dev (x 3) acetoneiso akonadi-kde-resource-go gledata (x 358) plasma-widget-amule (x 56) libapq-postgresql-dbg (x 2) auth2db (x 5) banshe -extension-lirc (x 6) bluedevil lib o st-al -dev (x 4) lib o st-mpi-dev (x 2) cdo (x 3) libcegui-mk2-dev chemical-structures cl-sql-odbc (x 2) code-saturne (x 13) con ectomeviewer (x 2) courier-faxmail cyrus-admin-2.2 (x 5) cyrus-clients-2.2 cyrus-replication (x 2) ∨ digikam-dbg (x 20) docbo kwiki do dle-dbg (x 2) libdose2-ocaml-dev (x 2) libe t-dev (x 3) ∨ fai-quickstart ∨ fileschanged ∨ libfluidsynth-dev (x 2) fre radius-iodbc fre vo (x 4) fusionforge-plugin-blocks (x 25) python-gamera-dev (x 2) ∨ ∨ ∨ libgd-gd2-noxpm-ocaml-dev (x 2) libgdal1-dev (x 3) libgdb-dev libgeda-dev geogebra-kde (x 2) glance (x 20) gnome-osd gnome-ses ion (x 4) gnome-utils gosa (x 4 ) goto-fai-backend ∨ gpe gradle (x 2) gros ∨ grub-cho se-default ∨ grub-imagebo t ∨ hapm (x 3) libhdf5-lam-dev libigstk4-dev (x 3) il uminator-demo imagemagick-dbg jackd1 (x 2) jackd2 (x 3) jenkins-tomcat libk3b-dev (x 7) libkaya-gd-dev kdeartwork (x 19) kdepim-dbg (x 3) kdeplasma-ad ons-dbg kdesvn (x 2) keystone (x 2) kolabd libalog-ful -dbg (x 2) libapache2-mod-log-sql (x 5) f mpeg-dbg (x 2) libgd2-xpm-dev libgdchart-gd2-noxpm-dev libgdchart-gd2-xpm-dev libgpod-dev libgpod-nogtk-dev libmojomojo-perl libphone-ui-2010 517 (x 2) libphone-ui-dev libtuxcap-dev ltsp-client ltsp-server-standalone libluabind-dev libmagics+ -dev (x 4) maven-debian-helper gnome (x 2) mew mew-beta monodevelop-debug er-gdb mysqmail-courier-log er ∨ mysqmail-dovecot-log er ∨ nagiosgrapher network-manager-strongswan nova-compute-kvm nova-network octave-pkg-dev (x 2) og videoto ls (x 2) libsaml2-dev (x 3) libopenwalnut1-dev libapache2-mod-pas enger (x 2) ∨ libpcp-logsum ary-perl (x 2) pfqueue (x 2) ∨ python-fs python-traitsgui ∨ qt-sdk r-base-core-dbg (x 2) redhat-cluster-suite (x 2) request-tracker3.8 (x 6) sa-learn-cyrus ∨ sdpam sepia snd-gtk ∨ libsoqt4-dev startupmanager strongswan (x 2) ∨ python-jarabe-0.84 (x 6) sucrose-0.84 ∨ task-kde-desktop task-lxde-desktop tcos-tftp-dhcp libkwebkit-dbg ytalk ∨ ∨ zoneminder xmakemol xmakemol-gl libxine1-doc libxine2-doc xserver-xorg-input-mtrack xserver-xorg-input-multitouch wmnd wmnd-snmp wl wl-beta semi vm (x 2) gnus libwine-gecko-dbg-unstable libwine-gecko-unstable w3c-dtd-xhtml w3c-sgml-lib (x 2) ucspi-tcp ucspi-tcp-ipv6 tk8.4-doc tk8.5-doc texmacs-com on (x 2) texmacs-extra-fonts tcl-trf (x 2) tcl-trf-doc tcl8.4-doc tcl8.5-doc libtag1-rusxmms libtag1-vanil a synce-hal (x 2) synce-serial slapos-client python-zc.buildout slurm-l nl (x 2) sinfo # qterm # torque-client-x11 shorewal 6-lite uif # shorewal -lite fiaif shorewal (x 2) shorewal -init ∨ scid-rating-data scid-spel -data # rxvt-unicode (x 2) rxvt-unicode-256color rxvt-unicode-lite ruby-bacon ruby-rspec-core (x 7) libamrita-ruby1.8 (x 2) ruby-amrita2 (x 4) rt-tests xenomai-runtime libreadline5-dbg libreadline6-dbg lib64readline-gplv2-dev lib64readline6-dev # ratbox-services-mysql ratbox-services-pgsql ratbox-services-sqlite raptor-utils raptor2-utils radiusclient1 (x 2) libradiusclient-ng-dev libradius1-dev radare radare-gtk libqwt-doc libqwt5-doc libqwt-dev libqwt5-qt4-dev python-quixote (x 2) python-quixote1 (x 2) qca-dev libqca2-dev (x 2) psi3 yagiuda planet-venus racket (x 2) pimd smcroute php-apc php5-xcache pen mush pen mush-mysql orvil e-write xtel openwince-jtag urjtag opendns ec-enforcer-mysql (x 2) opendns ec-enforcer-sqlite3 (x 2) olpc-kbdshim olpc-kbdshim-hal libode-dev libode-sp-dev oce-draw opencascade-draw liboce-foundation-dev (x 5) libopencascade-foundation-dev (x 6) # nginx-extras (x 2) nginx-ful (x 2) nginx-light (x 2) nginx ∨ libnetpbm10-dev libnetpbm9-dev libpgm-dev tftp tftp-hpa telnet telnet-s l harden-clients x2vnc ftp-upload ftp ftp-s l mtr mtr-tiny modem anager (x 2) wader-core libapache2-mod-wsgi libapache2-mod-wsgi-py3 mlterm mlterm-tiny ipadic chasen-can adic naist-jdic (x 2) mcstrans policycoreutils (x 6) myspel -hu hunspel -hu myspel -fr # myspel -fr-gut myspel -da hunspel -vi hunspel -sr hunspel -sh hunspel -da lzma xz-lzma liblua50-socket-dev liblua50-socket2 luasocket luasocket-dev # libxbase2.0-bin dvb-ap s (x 2) libxdb-dev libupnp3-dev (x 2) libupnp4-dev libunique-doc libunique-3.0-doc libsieve2-dev libmailutils-dev (x 2) libsendmail-milter-perl libsendmail-pmilter-perl libpam-ldap libpam-ldapd libpam-heimdal libpam-krb5 libowfat-dev libudt-dev libcdb-dev libodbc-ruby-doc ruby-odbc (x 10) libns -ldap libns -ldapd libnet-proxy-perl s lh libmimedir-dev libmimedir-gnome-dev (x 2) libev-libevent-dev libevent-dev libapache2-authen tlm-perl libauthen-smb-perl (x 2) libantlr3c-3.2-0 libantlr3c-antlrdbg-3.2-0 ldap2dns ldap2zone ldapdns laptop-mode-to ls noflushd joe joe-jup # ircd-hybrid # # ircd-irc2 inspircd (x 2) charybdis ircd-ratbox (x 2) im-config im-switch # hunspel -de-ch myspel -de-ch hunspel -de-ch-frami # hunspel -de-at # myspel -de-de-oldspel hunspel -de-de hunspel -de-med ∨ ifrench ifrench-gut hwloc hwloc-nox hunspel -ru myspel -ru hunspel -en-us myspel -en-us hunspel -to ls myspel -to ls hel o hel o-debhelper heimdal-clients (x 3) otp krb5-clients # krb5-user (x 4) openafs-kpas wd libgnutls26-dbg libgnutls28-dbg # gnome-p openresolv resolvconf gnoki -smsd (x 3) smsto ls gmt (x 2) gmt-manpages gimp-dcraw gimp-ufraw libgfs-1.3-2 (x 3) libgfs-mpi-1.3-2 (x 3) gc -mingw32 mingw32 mingw32-binutils binutils-mingw-w64-x86-64 binutils-mingw-w64-i686 binutils-mingw-w64 (x 5) # libstdc+ 6-4.4-doc libstdc+ 6-4.5-doc libstdc+ 6-4.6-doc # libstdc+ 6-4.4-dbg libstdc+ 6-4.5-dbg libstdc+ 6-4.6-dbg # lib64stdc+ 6-4.4-dbg lib64stdc+ 6-4.5-dbg lib64stdc+ 6-4.6-dbg libwn -dev libwn 6-dev fre bsd-sendpr gnats-user (x 2) fre bsd-buildutils (x 2) pmake fo matic-db fo matic-db-compres ed-p ds fo kb-plainx fo kb-wmaker libfltk1.1-dev (x 3) libfltk1.3-dev (x 2) flex flex-old bison (x 2) bison+ pretzel (x 3) firebird2.5-clas ic-com on (x 2) firebird2.5-super (x 2) firebird2.5-server-com on (x 3) firebird2.5-clas ic firebird2.5-superclas ic firebird2.1-server-com on (x 2) firebird2.1-clas ic firebird2.1-super fb-music-high fb-music-low et ercap-graphical et ercap-text-only erlang-base erlang-base-hipe elvis elvis-console elinks-data (x 2) elinks-lite libdwarf-dev libdw-dev libelf-dev (x 2) libelfg0-dev (x 2) nscd unscd dvi2ps-fontdata-ptexfake ptex-base (x 6) python-dnspython (x 5) linkchecker (x 2) dicod (x 4) dictd dico le-dico-de-rene-cougnenc dhcpcd pump (x 2) # dbsk d-cdb sk search yask serv libdb5.1-tcl libdb5.3-tcl libdb5.1-stl-dev libdb5.3-stl-dev libdb5.1-sql-dev (x 2) libdb5.3-sql-dev libsasl2-modules-gs api-heimdal (x 2) libsasl2-modules-gs api-mit (x 2) libcunit1 (x 2) libcunit1-ncurses (x 2) cros fire-maps cros fire-maps-smal crack crack-md5 courier-maildrop (x 5) maildrop conky-cli conky-std libclut er-gtk-1.0-doc (x 2) libclut er-gtk-0.10-doc libclo g-isl-dev libclo g-p l-dev # chrony ntp (x 2) open tpd python-cher ypy3 (x 4) python-cher ypy (x 3) check-mk-config-icinga check-mk-config-nagios3 busybox (x 4) busybox-static bo tchart bo tchart2 lib o st1.46-doc lib o st1.48-doc (x 2) # bacula-com on-mysql (x 3) bacula-com on-pgsql (x 3) bacula-com on-sqlite3 (x 5) libavahi-ui-dev libavahi-ui-gtk3-dev # aumix aumix-gtk os -preserve mpg123-el ∨ # asterisk-core-sounds-fr-gsm asterisk-prompt-fr-armel e asterisk-prompt-fr-proformatique # apsfilter magicfilter printfilters-p d # apcupsd (x 2) nut-server (x 5) powstatd apache2-suexec apache2-suexec-custom amavisd-new (x 3) pham -ldap-amavis # aide aide-dynamic aide-xen 2ping (x 29205) console-setup-fre bsd MIS ING DEP Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 34 / 46
  • 64. Ubuntu main: 7'000 packages, 31'000 dependencies libclutter-1.0-0 (x 2) libclutter-eglx-es11-1.0-0 (x 2) ubiquity-slideshow-kubuntu ubiquity-slideshow-ubuntu libjack-jackd2-0 (x 2) libjack0 (x 3) libiodbc2-dev unixodbc-dev libreadline5-dbg libreadline6-dbg openbsd-inetd xinetd ubuntu-desktop ubuntu-netbook libgd2-xpm-dev libgd2-noxpm-dev libecore-dev libedje-dev (x 2) librdf0-dev librpm-dev apache2-threaded-dev tk8.4-doc tk8.5-doc tcl8.4-doc tcl8.5-doc libsdl1.2debian-oss libsdl1.2debian-pulseaudio hunspell-fr (x 3) myspell-fr libsdl1.2debian-all # libsdl1.2debian-alsa libsdl1.2debian-esd foomatic-db-compressed-ppds (x 4) foomatic-db libgd2-xpm (x 10) libjpeg62-dev (x 23) libjpeg8-dev libgd2-noxpm libcurl4-gnutls-dev (x 4) libcurl4-openssl-dev libreadline6-dev (x 6) libreadline5-dev libdb4.8-dev (x 5) libdb4.7-dev (x 2) network-manager-kde plasma-widget-networkmanagement (x 2) libstdc++6-4.4-doc libstdc++6-4.5-doc libstdc++6-4.4-dbg libstdc++6-4.5-dbg apache2-prefork-dev libqt4-dbg (x 24) qt-x11-free-dbg libneon27-dev libneon27-gnutls-dev libgpod4 (x 9) libgpod4-nogtk (x 2) # libgl1-mesa-glx (x 8) libgl1-mesa-swx11 (x 3) libclutter-eglx-es20-1.0-0 (x 2) libclutter-1.0-dev (x 2) libclutter-eglx-es11-1.0-dev libclutter-eglx-es20-1.0-dev libelf-dev (x 3) libelfg0-dev libdb4.7-java (x 3) libdb4.8-java (x 3) lib64stdc++6-4.4-dbg lib64stdc++6-4.5-dbg lib64readline5-dev lib64readline6-dev hunspell-tools myspell-tools hunspell-de-de (x 3) myspell-de-de-oldspell hello hello-debhelper grub grub-legacy-ec2 # grub-efi-amd64 grub-efi-ia32 (x 2) grub-pc flex flex-old exim4-daemon-heavy (x 2) exim4-daemon-light (x 2) exim4-config (x 5) postfix (x 9) emacs23 emacs23-nox debconf-english debconf-i18n # bacula-common-mysql (x 3) bacula-common-pgsql (x 3) bacula-common-sqlite3 (x 3) # apache2-mpm-event apache2-mpm-prefork (x 2) apache2-mpm-worker eucalyptus-nc ∨ abrowser (x 7049) http://coinst.irill.org Running time: less than 10 seconds! Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 35 / 46
  • 65. QA 301: New Co-Installability Issues Compare two versions of a repository New issues are more likely to be bugs Can report precisely what changes caused an issue Example a b p q Many new issues between packages p and q due to a single new conict between packages a and b. Vouillon, Di Cosmo Broken Sets in Software Repository Evolution ICSE 2013 Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 36 / 46
  • 66. Finding New Co-Installability Issues Tool coinst-upgrades http://coinst.irill.org/upgrades graphs illustrating each new issue context: other packages involved, package popularities (popcon) The new version of unoconv depends on any version of python3-uno unoconv python3-uno python-uno The new version of tdsodbc conicts with any version of libiodbc2 tdsodbc libiodbc2 Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 37 / 46
  • 67. Finding New Co-Installability Issues Tool coinst-upgrades http://coinst.irill.org/upgrades graphs illustrating each new issue context: other packages involved, package popularities (popcon) The new version of unoconv depends on any version of python3-uno unoconv python3-uno python-uno The new version of tdsodbc conicts with any version of libiodbc2 tdsodbc libiodbc2 Package libiodbc2 had been unmaintained for years Should not be a big issue if it gets removed, right? Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 37 / 46
  • 68. Context is Crucial tdsodbc libiodbc2 Depend on libiodbc2 (about 380 packages): kcolorchooser, kdesdk-misc, kdevelop-php-docs, blinken, kdevelop, kmousetool, ktorrent, kalgebra, konqueror, klipper, kchmviewer, mplayerthumbs, libsmokekutils3, kjots, ksshaskpass, cantor, network-manager-kde, kbattleship, choqok, kdesdk-dbg, krusader-dbg, libkdegames-dev, kmidimon, klettres, quassel-kde4, libakonadi-ruby, konq-plugins, ktorrent-dbg, kiriki, plasma-widgets-workspace, kvirc-dbg, konversation-dbg, libkiten-dev, kdm-gdmcompat, plasma-netbook, libokular-ruby1.8, eqonomize, kdenetwork-dbg, libsmokeplasma3, kspread, lokalize, korganizer, parley, kfourinline, libsmokekde-dev, knd, kdepim-groupware, ksnapshot, libiodbc2-dev, plasma-runners-addons, libsmokekdeui4-3, printer-applet, ark, kdeutils, kover, rocs, kdesvn-dbg, kdevplatform-dev, libkdepim4, ktron, cantor-backend-sage, kinfocenter, . . . Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 38 / 46
  • 69. QA 501: package migration Unstable Testing Conicting goals package should reach testing rapidly keep testing as stable as possible Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 39 / 46
  • 70. The comigrate tool Supplement/Replace Britney Generate hints that can be fed to Britney Interactively investigate migration issues Run it repeatedly, studying dierent scenarios Report of issues preventing package migration http://coinst.irill.org/report/ Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 40 / 46
  • 71. Tool Core: Computing Package Migrations Tentative migration Boolean solver (Co-)installability analysis New constraints Start with simple constraints The Boolean solver generates a tentative migration Check for (co-)installability issues; analyse these issues to generate new constraints (package A cannot migrate, or package A cannot migrate without package B) Repeat until no more issue is found Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 41 / 46
  • 72. Performance Britney Comigrate (installability) Comigrate (co-installability) Comigrate (installability, with caching) Comigrate (co-installability, with caching) 3 5.5 10 18 30 55 100 180 300 550 Running time (seconds) Data collected twice a day from 2013-06-24 to 2013-09-09 Missing datapoints: Britney can take more than 24 hours (Perl transition).... Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 42 / 46
  • 73. Outline 1 GNU/Linux Distributions: industrialising Free Software 2 User side: improving package managers 3 Back to the server side : Package QA Find uninstallable packages Learning from the future of repositories Find non co-installable packages Find new non co-installable packages Filter incoming packages 4 In conclusion Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 43 / 46
  • 74. A recurring pattern In all examples above identify a problem whose solution requires a research eort (discussion with the maintainers) work hard to nd a solution implement a tool, validate it on real world cases publish a research article foster adoption Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 44 / 46
  • 75. A recurring pattern In all examples above identify a problem whose solution requires a research eort (discussion with the maintainers) work hard to nd a solution implement a tool, validate it on real world cases publish a research article foster adoption In a picture Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 44 / 46
  • 76. Conclusions Free Software and Computer Science Free Software is ubiquitous, its growth poses new challenges many dicult issues with quality assurance in Free Software ... are indeed interesting and deep problems in Computer Science, and can be the basis for very fruitful collaborations Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 45 / 46
  • 77. Conclusions Free Software and Computer Science Free Software is ubiquitous, its growth poses new challenges many dicult issues with quality assurance in Free Software ... are indeed interesting and deep problems in Computer Science, and can be the basis for very fruitful collaborations Collaborate with us at Irill, in general Irill is a unique place: it hosts researchers that share the Free Software values, love to solve problems, and build valuable tools. We share a dream: make Free Software the best software in town. Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 45 / 46
  • 78. Conclusions Free Software and Computer Science Free Software is ubiquitous, its growth poses new challenges many dicult issues with quality assurance in Free Software ... are indeed interesting and deep problems in Computer Science, and can be the basis for very fruitful collaborations Collaborate with us at Irill, in general Irill is a unique place: it hosts researchers that share the Free Software values, love to solve problems, and build valuable tools. We share a dream: make Free Software the best software in town. Collaborate with us at Irill, on distributions We have built powerful tools for QA in GNU/Linux distributions... some are already distribution neutral, thanks to CUDF; all can be ported. Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 45 / 46
  • 79. Bibliography and tools excerpts Di Cosmo, Leroy, Treinen, Vouillon et al Managing the complexity of large free and open source package-based software distributions. ASE 2006: Automated Software Engineering. Abate, Di Cosmo, Treinen, Zacchiroli Learning from the Future of Component Repositories CBSE 2012: Component Based Software Engineering. Abate, Di Cosmo, Treinen, Zacchiroli A modular package manager architecture. Information and Software Technology, 2012. Vouillon, Dogguy, Di Cosmo. Easing software component repository evolution. ICSE 2014. Tools Cudf library: http://gforge.inria.fr/projects/cudf/ Dose library: http://gforge.inria.fr/projects/dose/ Coinst suite: http://coinst.irill.org Debian QA: http://qa.debian.org/dose Learn more at www.mancoosi.org and www.irill.org Questions? roberto@dicosmo.org @rdicosmo Roberto Di Cosmo (Paris Diderot) FOSS Research at Irill Suse Labs 2014 46 / 46