Google Summer of Code 2021

= ALT Linux Team and Sisyphus =

One of core components of ALT Linux Team is Sisyphus, large rpm-based open-source software repository.

Sisyphus is a source of packages for development distributions. Stable branches are forked from development branches each corresponding to one of the distributions such as p9, p8 etc. Sisyphus consists of multiple components: development stack, distribution stack and infrastructure stack.

The Distribution stack is represented by following components:


 * Alterator is a configuration framework that provides users with a handy and powerful graphical utility to manage the ALT Linux system with ease.
 * Control is an interface implemented in Openwall GNU/*/Linux and ALT Linux to control installed system facilities (for example local system policy rules).
 * Libshell is a POSIX shell library of common functions, packaged to facilitate code reuse.

The Libshell library is majorly utilized in Development stack that in turn consists of:


 * Gear is a tool for building RPM packages from git repositories. It is used at git.alt, an automated system for building packages and maintaining a repository of packages.
 * Hasher allows users to build packages in a safe and reproducible manner.
 * And with mkimage hasher users can build ISO images, virtual machine and system images.

The Infrastructure stack is represented by:


 * libnss-role which is an NSS module that adds support for nesting groups;
 * gpupdate utility that provides user with a powerful tool for AD management;
 * ADMC graphical utility for easy active directory domain management.

= Suggested Project ideas =

The following are ALT Linux Team project ideas for Summer of Code.

Name Service Switch subsystem control with bash-completion
Name Service Switch (NSS) subsystem provides a variety of sources for common configuration databases and name resolution mechanisms. Today every major distribution has their own instruments to control NSS configuration. Configuration is placed in /etc/nsswitch.conf. ALT distributions and other Sisyphus based solutions use a special control module to set various system parameters and file modes during system upgrade.

Command-line completion (also known as tab completion) is a common feature of command-line interpreters, in which the program automatically fills in partially typed commands. Command-line completion is useful in several ways. Commonly accessed commands, especially ones with long names, require fewer keystrokes to reach. Commands with long or difficult to spell filenames can be entered by typing the first few characters and pressing a completion key, which completes the command or filename.

This task will require the student to implement the following improvements:
 * control-policy rules to control NSS subsystem for all supported configuration databases.
 * common bash-completion rules for all control-policies rules.

The challenge is in doing this in aclean Unix-way style, while retaining integration with other already implemented control-policy rules.
 * Difficulty: Medium
 * Language(s): Bash
 * Mentors: Evgeny Sinelnikov, Igor Chudov

Alterator D-Bus command line interface
Alterator is an ALT Linux module which provides user with qt-based system control center, graphical installer and a web-interface. Modern Linux distributions with graphical interface use special system IPC, called D-Bus for communication between applications. Originally Alterator, as the core part of distribution stack, was designed with its own system interface based on UNIX-sockets called woo-bus. Current implementation of alterator modules does not support introspection and we are working on alterator-dbus module, which translates method calls from woo-bus to D-Bus as a controlled proxy authorized by PolicyKit.

The student should write command line interface for alterator modules using D-Bus and implement alterator modules introspection.
 * Difficulty: Hard
 * Language(s): C, Bash, Scheme (guile)
 * Mentors: Evgeny Sinelnikov

FSMO management in Active Directory Control Center
Flexible Single Master Operations(FSMO) is a feature of Microsoft's Active Directory (AD), set of tasks performed by Active Directory domain controllers that require mandatory uniqueness of the server performing these operations. Active Directory Control Center (ADMC) is alternative implementation of Remote Server Administration Tools (RSAT) for control AD.

A modern implementation of RSAT (starting with the latest version for Windows 10) cannot be used to manage Samba AD server because it requires Active Directory Web Services (ADWS). ADWS is only planned to be supported in samba. (Samba#11231).

This task requires the student to investigate the implementation of FSMO in samba, implement ldap requests to manage FSMO, and support them in ADMC.
 * Difficulty: Hard
 * Language(s): C++
 * Mentors: Dmitry Degtyarev, Evgeny Sinelnikov