1 |
Hi all, |
2 |
|
3 |
I would like to contribute some code during GSoC-2013. I'm interested in |
4 |
the idea of Rafael Martins ``Framework for automated ebuild generators''. |
5 |
|
6 |
As all of us know there are lot of 3rd party software providers that in |
7 |
some way resemble overlays or repositories of Linux distributions. |
8 |
Examples are pypi, CRAN, CPAN, CTAN, octave-forge, MELPA. Lots of them. |
9 |
It is quite clear that all this software available through different |
10 |
mechanisms (such as package.el for Emacs or pkg command in Octave) will |
11 |
never have separately maintained ebuilds in Gentoo tree or even in |
12 |
overlays. Installing such a software with its own distribution system |
13 |
does not seem like a good idea, especially if one needs to install it |
14 |
system-wide. |
15 |
|
16 |
And really there is a solution in Gentoo for this problem: even a number |
17 |
of solutions. And here another problem lies: we have a special dedicated |
18 |
g-helpers (let call them in this way) for a number of 3rd party software |
19 |
providers. But, as Rafael Martins states ``each one tries to solve the |
20 |
very same problems on its own unique and "innovative" way''. While it |
21 |
would be really nice to have a solid base framework with realization of |
22 |
all the basic algorithms needed for ebuild and overlay generation, with |
23 |
uniform UI and with good integration with system package manager. |
24 |
|
25 |
Finally we should have such a framework and number of backends for every |
26 |
type of 3rd party software provider. This framework should make writing |
27 |
of those g-helpers more easy and regular without need for reinventing |
28 |
wheels every time. |
29 |
|
30 |
Framework should have: |
31 |
- basic quite common logic for ebuild and overlay manipulation, |
32 |
dependencies resolving, patching and so on |
33 |
- cli, that allows users generate separate ebuilds and even overlays |
34 |
with available backends |
35 |
- integration with other system tools (here I mean layman in the first |
36 |
place, as I'm not really familiar with tools used by other package |
37 |
manglers, but supporting them would be nice as well). |
38 |
|
39 |
Backend should have anything specific for a given 3rd party software |
40 |
provider such as concrete algorithms for ebuild-generation, eclasses, |
41 |
databases with information about available software and so on. |
42 |
|
43 |
At the end of this project these items should be created: |
44 |
- framework |
45 |
- number of backends (3 or 4) |
46 |
- documentation both for users and developers of new backends |
47 |
|
48 |
One of the main problems here is creation of framework general enough to |
49 |
handle and to be usefull for very different software providers. So the |
50 |
first point in this project is studying of different kinds of them (This |
51 |
part of project was successfully begun)) ). |
52 |
Then common design of framework and typical backend should be developed |
53 |
(as a source of an inspiration I will use existing solutions like |
54 |
g-octave and R_overlay at least to see good and bad ideas they use). |
55 |
|
56 |
At the moment I see this framework as a number of classes in python that |
57 |
can be inherited and expanded in backends with the specific logic. All |
58 |
the logic related to the interaction with user, portage and overlay |
59 |
tools should be implemented in the framework and normally not changed by |
60 |
backends. Integration with system may need patching of some existing |
61 |
tools (like layman), but it isn't a problem as far as I understand. |
62 |
|
63 |
Before the mid-term a working framework and at least one backend should |
64 |
be developed. |
65 |
After the mid-term I'm planning to improve framework and ideas behind it |
66 |
and also to develop a number of additional backends and documentation. |
67 |
|
68 |
And the last thing. A little about myself. I'm a student at Jagiellonian |
69 |
University in Cracow (Poland). I'm studying Theoretical Physics at |
70 |
Master courses. Before it I've graduated from Belarusian State |
71 |
University (Minsk, Belarus) with degree in Radiophysics/Computer |
72 |
Security. I have a working experience as a Software Developer (C/C++ on |
73 |
Linux). |
74 |
I really like way thing are done in Gentoo. I use this system for years. |
75 |
I have some contributions to it (mainly Physics-related packages). And |
76 |
also I've tried to write some ebuild-generation stuff |
77 |
(https://github.com/jauhien/g-common) but as I've seen there is this |
78 |
GSoC idea, that will bring us much more general tool I've thought it |
79 |
should be completely rewritten. ) |
80 |
|
81 |
It seems that's all so far. |
82 |
|
83 |
Looking for any suggestions and comments. |
84 |
If no complains I will proceed with submitting of my proposal to Google. |
85 |
|
86 |
Jauhien |