Google Summer of Code
What it is?
Google Summer of Code is a global program that offers post-secondary student developers ages 18 and older stipends to write code for various open source software projects.
Old Mandriva participated in this program several times as a mentoring organization. With respect to the community, OpenMandriva is Mandriva successor, so it is logical for us to join the Summer of Code this year.
Below is the ideas exposed by our community (feel free to add your owns, the application deadline for organizations closes on 14 February at 19:00 UTC). Note that the list of possible projects is not necessary limited to the one presented below; students are free to propose their own ideas and we are free to accept them if they are useful and reasonable.
Major Ideas for 2014
Here list of major ideas that we would like to be implemented.
Develop a function popularity analyser
The aim of this project is to create a library function usage recording tool to form a basis for QA testing libraries. When a program is run a db record would be created to show which functions from which libraries were accessed. Ultimately these records could form the basis of a test harness to apply QA to system libraries.
Desired knowledge: C/C++
Mentors: itchka, dsilakov
Adopt musl libc library for OpenMandriva
 is a C standard library for Linux intended to be used in embedded systems and mobile devices. OpenMandriva is interested in such devices and already has ports to different ARM architectures. However, glibc is too heavy in many senses for such platforms; currently we have uclibc as an analogue, but it would be useful to adapt musl libc library. The aim of this project is to create a base OpenMandriva system that uses musl libc instead of glibc and compare performance with glibc variation.
Desired knowledge: C, Linux kernel, system programming
Mentors: bero, TPG
Prepare MIPS port of OpenMandriva
OpenMandriva already has ports to several ARM variations. We would like to have a MIPS distribution, as well. We have a convenient infrastructure to perform this task - OpenMandriva is built using ROSA ABF build system which is quite flexible and allows to add custom build nodes of any hardware architecture. In particular, one can add build nodes that use QEMU emulation, though real devices proved to be much more faster. In particular, one can see ABF presentation at FOSDEM to take an idea of how we are developing ARM ports.
The aim of this project is to prepare a minimal working MIPS base system with a minimal repository at ABF which would allow to easily rebuild other packages from OpenMandriva repositories for MIPS.
Desired knowledge: MIPS architecture, Linux kernel, system programming
Possible mentors: fedya, bero
Adapt zypper as an urpmi alternative
Urpmi is a Mandriva-specific package manager developed more than decade ago. Though it has a lot of advantages, its code base is quite old, it doesn't have many active developers and it differs a lot from more popular package managers used in other rpm-based distributions - in particular, Yum and Zypper. We would like to become more close to other distributions and to join our efforts with developers of alternative package managers. One of the perspective directions is to adapt Zypper (or at list its SAT solver).
Desired knowledge: C, RPM, Perl (urpmi is written in Perl and it is possible that student will have to dig into its code)
Possible mentors: TPG, dsilakov
Add per-package installation
Currently OpenMandriva uses a 'live' installer that just unpacks the pre-formatted distribution image to hard drive. This is very fast and convenient for many users, but we feel a need to implement possibility of per-package installation (or at least possibility to install large blocks of software at once - e.g., make a choice between KDE, Gnome and LXDE from the same ISO image without a need to install or remove packages after installation).
Desired knowledge: RPM, Perl
Possible mentors: TPG, dsilakov
Other Ideas for 2014
Below is the list of other ideas expressed during the brain storm. We don't have detailed descriptions for them, but if students are interested in some of them, we can discuss possible work directions.
|Re-write drakx* tools with QT5 framework||TPG|
|KDE5 migration (port remaining applications from Qt4/KDE4 to Qt5/KDE5)||bero|
|Write the first boot screen we've been planning, with stuff like "I want this box to look and feel similar to [ ] OpenMandriva [ ] Windows [ ] OSX [ ] ...||bero|
|Write a Qt based applet to control firewalld so we can reduce our memory footprint by avoiding a huge library like GTK from being dragged into memory||bero|