summaryrefslogtreecommitdiffstats
path: root/CONTRIBUTION.md
blob: 8a7c8f2502548ce1a36669c85fbe63cc03308515 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
This file is meant to ease the onboarding of new contributors.

Introduction
============

TODO


Quick start for testers
=======================

```bash
$ git clone git://git.mageia.org/software/rpm/urpmi
$ cd urpmi
$ git checkout <branch_name>
    # Possible branches : 
    #    - topic/maat_color
$ dev/mogen
$ ./urpmi <options>
$ su -c "./urpmi --test <package_name>"
$ su -c "./urpmi <package_name>"
    # Warning this last command *really* installs the package
```

Quick start for coders
======================

```bash
$ git clone ssh://<username>@git.mageia.org/software/rpm/urpmi
$ cd urpmi
$ git branch topic/<new_branch_name>
    # This creates the new branch with current master as the starting point.
    # If you want to start from elswhere you need to master git branch command
$ git checkout topic/<new_branch_name>
    # This puts you on your new branch to start coding
$ dev/mogen
    # This generates the local translation .mo files for a translated display
    # If you work on translations you can use dev/mogen --watch in a dedicated term
    # and work in an other : translation will be updated in near realtime

    # While [ 1 ]
    # do
    # Coding & testing
git add <new_files>
git commit -m "Commit message" <new_files> <modified_files>
git push origin topic/<new_branch_name>
    # All these git commands allow you to publish your changes.
    # You'll need you have a dev account in Mageia system -> https://wiki.mageia.org
    # Make sure you master git enough and make sure to have a Mageia mentor to guide you
```


Good proctices & advices
========================

Coding standards & indentation
------------------------------

Coding standards are :
 * space indentation (no tabs)
 * 4 spaces for one indentation level
 * 4 spacesfor tabulations (and replace tabs by spaces)
 * Opening brackets on the same line
 * closing brackets on the line after

Commit messages
---------------

Commit standards are :
 * Language = english
 * One commit per change (do not mix multiple topics in a single commit)
 * Commit title should be short but allow to identify what's done
 * Commit message under the title can explain more 

Branches
--------

Unless you are working on an official branch your branch should be named topic/<username>_<yourkeyword>


Organization & architecture of the code
=======================================

Files and directories
---------------------

The thereafter tree is created with the command :
```bash
tree -I "locale|media|blib|t|pod|*.mo"
```

urpmi
├── ChangeLog
├── Changes
├── CONTRIBUTION.md
├── dev
│   └── mogen
├── gurpm
│   └── RPMProgressDialog.pm
├── gurpmi
├── gurpmi2
├── gurpmi.desktop.in
├── gurpmi.pm
├── inst.list
├── Makefile
├── Makefile.PL
├── MANIFEST
├── MANIFEST.SKIP
├── MYMETA.json
├── MYMETA.yml
├── pm_to_blib
├── po
│   ├── *.po
│   ├── Makefile
│   ├── POTFILES.in
│   ├── urpmi.pot
├── polkit
│   ├── Makefile
│   └── org.mageia.gurpmi2.policy.in
├── README.md
├── README.transifex
├── README.zeroconf
├── rpm-find-leaves
├── rurpme
├── rurpmi
├── skip.list
├── urpm
│   ├── args.pm
│   ├── bug_report.pm
│   ├── cdrom.pm
│   ├── cfg.pm
│   ├── download.pm
│   ├── get_pkgs.pm
│   ├── install.pm
│   ├── ldap.pm
│   ├── lock.pm
│   ├── main_loop.pm
│   ├── md5sum.pm
│   ├── media.pm
│   ├── mirrors.pm
│   ├── msg.pm
│   ├── orphans.pm
│   ├── parallel_ka_run.pm
│   ├── parallel.pm
│   ├── parallel_ssh.pm
│   ├── prompt.pm
│   ├── README.ka-run
│   ├── README.ssh
│   ├── removable.pm
│   ├── select.pm
│   ├── signature.pm
│   ├── sys.pm
│   ├── util.pm
│   ├── xml_info_pkg.pm
│   └── xml_info.pm
├── urpme
├── urpmf
├── urpmi
├── urpmi.addmedia
├── urpmi.bash-completion
├── urpmi.pm
├── urpmi.removemedia
├── urpmi-repository-http.service
├── urpmi.schema
├── urpmi.update
├── urpm.pm
└── urpmq

A few files are just information files :

├── ChangeLog
├── Changes
├── CONTRIBUTION.md <-- We are here
├── README.md
├── README.transifex
├── README.zeroconf
├── urpm
│   ├── README.ka-run
│   ├── README.ssh

Some files are generated by build or test process:

├── blib/*
├── locale/*
├── Makefile
├── MYMETA.json
├── MYMETA.yml
├── po
│   ├── *.mo
├── t
│   ├── media/*

Some files are used either to set up build or to test:
├── Makefile.PL
├── MANIFEST
├── MANIFEST.SKIP
├── po
│   ├── Makefile
│   ├── POTFILES.in
├── polkit
│   ├── Makefile
│   └── org.mageia.gurpmi2.policy.in

some are dev tools used to work on urpmii or buld/test:

├── dev
│   └── mogen
├── pm_to_blib


Some are the urpm* tools themselves:

├── gurpmi             <-- GUI for urpmi
├── gurpmi2            <-- GUI for urpmi too
├── rurpme             <-- r-urpm-i for retricted-mode urpmi
├── rurpmi             <-- r-urpm-e for retricted-mode urpme
├── urpme              <-- urpm-e for urpm "erase" : uninstalls software
├── urpmf              <-- urpm-f for urpm "find file" : searches for a file in software
├── urpmi              <-- urpm-i for urpm "install" : installs softvare
├── urpmi.addmedia     <-- adds a new medium (source of software)
├── urpmi.removemedia  <-- removes a medium
├── urpmi.update       <-- updates a medium
└── urpmq              <-- urpm-q for urpm "query" : search for softvare (by name...)

Some are config files that will be put in the system during install and used by urpmi:

├── gurpmi.desktop.in
├── inst.list
├── skip.list
├── urpmi.bash-completion
├── urpmi-repository-http.service

Some are translation files:

├── po
│   ├── *.po
│   ├── *.pot

And the rest are .pm files = librairies called by the "main" programs urpm*

├── gurpm
│   └── RPMProgressDialog.pm
├── gurpmi.pm
├── urpm
│   ├── args.pm
│   ├── bug_report.pm
│   ├── cdrom.pm
│   ├── cfg.pm
│   ├── download.pm
│   ├── get_pkgs.pm
│   ├── install.pm
│   ├── ldap.pm
│   ├── lock.pm
│   ├── main_loop.pm
│   ├── md5sum.pm
│   ├── media.pm
│   ├── mirrors.pm
│   ├── msg.pm
│   ├── orphans.pm
│   ├── parallel_ka_run.pm
│   ├── parallel.pm
│   ├── parallel_ssh.pm
│   ├── prompt.pm
│   ├── removable.pm
│   ├── select.pm
│   ├── signature.pm
│   ├── sys.pm
│   ├── util.pm
│   ├── xml_info_pkg.pm
│   └── xml_info.pm
├── urpm.pm


Architecture and libraries organization
---------------------------------------

TODO



Urpmi internals
===============

TODO




Roadmap
=======

TODO




Contributors
============

Lets pay here our tribute to the heroeswho created andcontributed to urpmi...

TODO