public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-dev] Google SoC @ Gentoo - Universal Select Tool
@ 2009-05-04 21:01 Sérgio Almeida
  2009-05-05  2:30 ` Denis Dupeyron
                   ` (3 more replies)
  0 siblings, 4 replies; 14+ messages in thread
From: Sérgio Almeida @ 2009-05-04 21:01 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 3048 bytes --]

Gentoo Dev's,

My name is Sérgio Almeida, I am Portuguese and I am a student for this
year's Google SoC coding the Universal Select Tool project for Gentoo
being Sébastien Fabbro (bicatali) my mentor.

Abstract:

Universal Select Tool is an utility to manage system configuration.
This tool is similar to the unmaintained eselect utility of Gentoo or
Exherbo's eclectic. The idea is to create a tool that  manages both
system settings and user settings with profile creation possibilities.
The utility will use mostly concepts from "modules", "softenv", and
both "eselect" and "eclectic".

My initial proposal does not get in-depth with implementation details
and I need to make some decisions as soon as possible. Implementation
language will be python as it is easy to maintain, easy to code and
faster and more flexible than bash. See attachment for more details.

Besides introducing myself, the purpose of this e-mail is a
call-to-ideas to all Gentoo developers, mainly all eselect-* and
*-config developers.

Here are the main interest ideas:

* keep eselect structure of modules - actions

* symlinking, environment and aliases actions can consist of something
like:

        # module moo comments
        description "Example Module description"
        version "Example Module Version"
        author "moo@farm.moo"
        # action system moo
        description "Moo Action Description"
        symlink "regexp" "regexp"
        env "regexp" "regexp"
        alias "regexp" "regexp"
        # end moo
        
These should get the job done for most of the modules and opens the door
to automatic module creation prior to a successful emerge (if some USE
flag set)

* Actions that consist of code blocks that support any scripting
language (what about binaries?) to do more complex actions (full module
example):

    # module moo comments
        description "Example Module description"
        version "Example Module Version"
        author "moo@farm.moo"
        
        # action user moo
        description "Example Module will moo for any user"
        type runnable
        runner /bin/bash
        # file moo.bash
        #!/bin/bash
        do_moo() {
        	echo "This is the Example Module mooing"
        }
        do_moo()
        # end moo.bash
        # end moo

* actions can be run system-wide and per-user:
        # action user moo
        # action system moo

* automatic module loading and profile management can be managed by some
env.d python scripts that are user-aware and follow some database
        
I've been given this difficult task of unifying all of these tools
together and as you all can understand, I won't be having the time to
read through all eselect-* modules and *-config utilities code.

Please drop me a line here or at freenode if you have anything to add to
these ideas or have any further ideas that can help me on this project.
Thank you all in advance.

Cheers,
Sérgio Almeida
mephx @ freenode


[-- Attachment #2: proposal --]
[-- Type: text/plain, Size: 4429 bytes --]

Universal Select Tool

*Abstract

Universal Select Tool is an utility to manage system configuration.
This tool is similar to the unmaintained eselect utility of Gentoo or
Exherbo's eclectic. The idea is to create a tool that  manages both
system settings and user settings with profile creation possibilities.
The utility will use mostly concepts from "modules", "softenv", and
both "eselect" and "eclectic".

*Objective

The objective of this project is to create a unified configuration
utility for gentoo. Why this new tool and not eselect? Gentoo has a
set of configuration utilities (eselect-* *-config) that work with
global environment settings regarding the system and therefore needed
to be contradicted by hand by users to fulfill their need to change
it's own defaults. This is a common problem within clusters,
shared-servers, etc, basically all multi-user, multi-profile,
multi-use environments. Creating this utility makes environment
profiles, slots, virtuals and multi-implementations easier to manage,
create and manipulate by developers, sysadmins and users. The current
available solutions do not work this way and therefore enlarging the
gap between configuration unification, profiling and usability.

*General Ideas

Some modules that this project wants to unite do much more than just
update environment variables. Further discussion should be done with
all participants in such projects to check if a general tool can be
created and if not, what can be split as a module and what can not.
Modules will need to be thought in a way that no further *-config and
eselect-* utilities need to exist anymore. These utilities will be
replaced by a module of it's own that allows the universal select tool
to manipulate all available configuration that is specified by the
module.
Modules will not only specify to the universal select tool what can be
changed but also how to make those changes.
Modules will be indexed in it's own database file for faster
searching, switching, and profile creation and managing. This database
will need to be updated by portage upon each successful module-able
emerge.

*Key features

Merging all eselect-* and *-config modules into one unified framework.
Quick and easy plugin of new modules when a virtual or several slots
of one package exist to allow modul-ization of several packages.
Fast.
Per-User and Per-System module settings.
Create profiles of module settings, Per-User and Per-System.
Possible new modules: mysql, tex, intel compiler suite, fortran, etc.

*Deliverables

an application (probably uselect) and the corresponding ebuild
documentation
module examples
ebuild examples
patch to portage (possibly)

Programming language is yet to be defined but possibly python, bash or C.

*Timeline

April 20 - May 23

Get to know code/documentation/use of "modules", "softenv", "eselect",
"ecletic" and "portage".
Highlight base features and algorithms to reimplement/discard.
Make decisions regarding the base of the aplication such as databases,
module format/handling, dependencies in portage and user environment
handling.
Set up a gentoo virtual machine that can be replicated to use as clean
sandboxes for testing througout the development with various
environments.

May 23 - July 3

Choose and setup the build environment for the new utility.
Begin implementation of the base features and module system.
Create sample modules.

(Mid Milestone) July 4 - July 30

Retouch wathever is needed.
Implement Portage's module handling part.
Create sample ebuild.

(Final Milestone) August 1 - August 17

Tests
Re-touching
Documentation

*Biography

My name is Sérgio Almeida and I live in Lisbon, Portugal. I am 22
years old and Informatics have always been my interest since I first
got in touch with a friend's Comodore. I study informatics & computers
science engineering @ Instituto Superior Técnico and plan to get my
MsC degree in 2012. My main interests are distributed systems and
computer/network security. I started working as a sysadmin at the age
of 16 at VirtualGames, a game server provider for fun and without any
profit. I am currently working as sysadmin at my University's Physics
Investigation department. Besides this i play bass in a rock band,
«don't disturb my circles» and I enjoy listening, composing, recording
and mixing music.


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2009-05-26 20:47 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-05-04 21:01 [gentoo-dev] Google SoC @ Gentoo - Universal Select Tool Sérgio Almeida
2009-05-05  2:30 ` Denis Dupeyron
2009-05-10 22:56 ` Mark Loeser
2009-05-11 19:09   ` Sérgio Almeida
2009-05-12  8:40 ` Michael Haubenwallner
2009-05-12 14:32   ` Sérgio Almeida
2009-05-12 16:34     ` Michael Haubenwallner
2009-05-12 20:45       ` Sérgio Almeida
2009-05-13  7:28         ` Michael Haubenwallner
2009-05-13 15:40           ` Sérgio Almeida
2009-05-15 11:08             ` Michael Haubenwallner
2009-05-23  2:18               ` Sérgio Almeida
2009-05-26 20:04 ` Tiziano Müller
2009-05-26 20:47   ` Sérgio Almeida

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox