SHOW:
|
|
- or go back to the newest paste.
1 | Title of the proposal | |
2 | ||
3 | [NetBSD] Enhancements to the pkgin binary package manager | |
4 | ||
5 | Short description | |
6 | ||
7 | This project aims to improve pkgin, a binary package manager relying on pkgsrc, the NetBSD package management framework. | |
8 | Focus will be put on overall performance enhancements and code portability. | |
9 | ||
10 | Content - Actual proposal | |
11 | ||
12 | Name : Elias BOUTALEB | |
13 | Handle : Jambato@irc.freenode.net | |
14 | Location/Timezone : Paris, France (GMT+2) | |
15 | Proposal Title : [NetBSD] Enhancements to the pkgin binary package manager | |
16 | ||
17 | Motivation: | |
18 | Binary packages and package manager software are widespread in the Linux ecosystem-distributions. BSD-like systems can also handle binaries via pkg_add/pkg_delete, but managing upgrades, dependencies and conflicts with those tools can be tedious. | |
19 | ||
20 | pkgin has been created in order to handle binaries in a similar manner to package management utilities such as yum and apt on Linux. | |
21 | Though the installation, upgrade and removal of packages is correctly supported, there is still room for improvement. | |
22 | ||
23 | Benefits to the Community: | |
24 | ||
25 | pkgin inherited the emphasis on portability from NetBSD and pkgsrc. | |
26 | Besides the visibility gained by the promotion of the project within the GSoC setting, other systems and entities can make the most of pkgsrc/pkgin (currently used by Joyent [1], is in the base system of DragonflyBSD and Minix), allowing the project to go towards an ideal of a universal package manager (pkgin) bundled with a universal package management framework (pkgsrc). | |
27 | ||
28 | Tasks/Deliverables: | |
29 | ||
30 | According to the maintainer[2], those goals are organized in such a way the mentee can immerse himself progressively within the project/code. | |
31 | ||
32 | 1) Multiple repositories support | |
33 | 2) Speeding up the calculation of the number of installed packages in the database | |
34 | 3) Speeding up the matching of local packages agaisnt remote packages | |
35 | 4) Implement an automated-test system | |
36 | 5) Better conflict handling | |
37 | 6) Better logging | |
38 | 7) Make pkgin independent from pkg_install binaries | |
39 | ||
40 | Optional Tasks | |
41 | ||
42 | I) Factor all pkgin's package manipulation functions into its own library - libpkgin | |
43 | II) Make pkgin able to interface with any database system | |
44 | ||
45 | Schedule/Milestones/Implementation Details: | |
46 | ||
47 | Disclaimer : The estimates given about the learning and coding time should not be taken at face value. At the moment, I cannot offer an implementation solution for all the tasks enumerated in the project wiki page. However, I can assure that by the time the SoC begins, solutions shall be found for all tasks. | |
48 | ||
49 | - I'm currently preparing for my terms in 2 weeks. I should begin properly studying pkgsrc and pkgin around the 20th of May. | |
50 | ||
51 | ||
52 | (May 20th - June 16th) | |
53 | - Prior to the coding tasks, in order to fully contribute to pkgin and understand it well, I'll have to understand how pkgsrc works: to test it and use it on 2 environments : a NetBSD virtual machine and a native Linux environment. | |
54 | An understanding of the pkg_summary[3] file format will also be required, as pkgin's binaries and dependencies management facilities are based on it. | |
55 | Only then, I should begin reading pkgin's source code and understanding its workings. | |
56 | Time will be allocated to find implementation solutions to the tasks. | |
57 | ||
58 | (June 17th - July 1st) | |
59 | 1) Support for multiple repositories : make pkgin memorise repositories URLs, then synchronize the different database entries in accordance with the repository. Ensure there aren't any conflicts | |
60 | ||
61 | (July 2nd - July 9th) | |
62 | 2) Speeding up the calculation of the number of installed packages in the database : pure algorithmic matter. No solution found yet. | |
63 | ||
64 | (July 10th - July 17th) | |
65 | 3) Speeding up the matching of local packages agaisnt remote packages : pure algorithmic matter. No solution found yet. | |
66 | ||
67 | (July 18th - July 25th) | |
68 | 4) Implement an automated-test system : it is just plain unit test writing. If there is a lack of time, a focus shall be put on testing critical operations (install/remove/upgrade) | |
69 | ||
70 | 5) Better conflict handling | |
71 | ||
72 | for example, let's take a line from the MySQL makefile[4] : | |
73 | ||
74 | CONFLICTS= {mysql-server-[0-9]*,mysql3-server-[0-9]*} | |
75 | ||
76 | The globbing of the version number make the currently installed package conflict with itself. The fault lies with the regex. I don't think I can offer a solution for that task. | |
77 | ||
78 | (July 26th - July 31st) | |
79 | 6) Better logging : plain formatting. | |
80 | ||
81 | (August 1st - August 15th) | |
82 | - | 7) Make pkgin independent from pkg_install binaries : pkgin currently uses pkg_add/delete to manage binaries. However, pkg_add/delete doesn't handle dependecies well. It would be better to use pkg_install libraries, or abstract their functionality. |
82 | + | 7) Make pkgin independent from pkg_install binaries : pkgin currently uses pkg_add/delete to manage binaries. However, pkg_add/delete doesn't handle dependecies well (that's why pkgin is here for). |
83 | It would probably be better to use directly a pkg_install library instead of directly using pkg_install/delete, or abstract their functionality. | |
84 | ||
85 | At that stage, there should be some time left to do the optional tasks: | |
86 | ||
87 | I) should be trivial, it's about gathering the package manipulation functions into a header. About II)......I don't know. | |
88 | ||
89 | The rest of the time should be spent hunting bugs, reviewing and testing code and writing documentation. | |
90 | ||
91 | About me: | |
92 | ||
93 | I am a sophomore college student, currently studying Computer Science at the Pierre and Marie Curie university in Paris, France. | |
94 | I manifest a great interest in computer security, programming and open source software, though I mostly use them rather than participate to their development. | |
95 | I began programming 2 years ago, but it wasn't very intensive. I mostly wrote small programs (less than 100 lines of code), showed some distant interest in Project Euler and the ACM ICPC contests. | |
96 | I have some experience with the C programming language, though I don't use it for a long time enough to consider myself 'fluent' with it. I can also use git and shell scripting. | |
97 | ||
98 | ||
99 | [1] http://joyent.com/ | |
100 | [2] Emile 'iMil' Heitor imil@NetBSD.org | |
101 | [3] http://netbsd.gw.com/cgi-bin/man-cgi?pkg_summary+5+NetBSD-current | |
102 | [4] http://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc/databases/mysql55-server/Makefile | |
103 | ||
104 | Additional info : | |
105 | ||
106 | [] http://wiki.netbsd.org/projects/project/pkgin_improve/ | |
107 | [] http://pkgin.net/ | |
108 | [] https://github.com/NetBSDfr/pkgin | |
109 | [] http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/pkgtools/pkgin/ |