website view pt/devel/forge.php @ rev 1049

Add ru & pt relnote to 4.0; huge cleaning of all relnotes
author Aleksej Bobylev <al.bobylev@gmail.com>
date Tue Apr 10 19:27:55 2012 +0300 (2012-04-10)
parents 8187351f0215
children aea4f0603412
line source
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt" lang="pt">
4 <head>
5 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
6 <title>SliTaz - Espaço dos Desenvolvedores</title>
7 <meta name="description" content="SliTaz GNU/Linux project information overview" />
8 <meta name="keywords" lang="pt" content="sobre slitaz, gnu, linux, mini distro, livecd" />
9 <meta name="author" content="Claudinei Pereira" />
10 <?php include("../../lib/html/meta-link.html"); ?>
11 </head>
12 <body>
14 <?php include("../../lib/html/header.pt.html"); ?>
16 <!-- Block -->
17 <div id="block">
18 <?php include("../../lib/html/nav.pt.html"); ?>
19 <!-- Information/image -->
20 <div id="block_info">
21 <h4>Desenvolvimento</h4>
22 <p>
23 Utilitários, linhas mestras e serviços utilizados para
24 desenvolver o SliTaz.
25 </p>
26 <p>
27 <img src="/images/users.png" alt="[ ]" />
28 Utilize também o <a href="http://scn.slitaz.org/">SCN</a>
29 (SliTaz Community Network) e a
30 <a href="../mailing-list.php">lista de discussão</a>.
31 </p>
32 </div>
33 </div>
35 <?php include("../../lib/lang.php"); ?>
37 <!-- Content -->
38 <div id="content">
40 <h2>Espaço dos Desenvolvedores do SliTaz</h2>
42 <ul>
43 <li><a href="#kiss">KISS e respeito aos padrões.</a></li>
44 <li><a href="#tank">Build host &amp; home.</a></li>
45 <li><a href="#repos">Repositórios Mercurial.</a></li>
46 <li><a href="#gui">Interface gráfica em GTK e Web/CGI</a></li>
47 <li><a href="#iconv">Implementação da função iconv().</a></li>
48 <li><a href="#pkgs">Pacotes Tazpkg.</a></li>
49 <li><a href="#website">Gerenciamento do Website.</a></li>
50 </ul>
52 <h2 id="kiss">KISS e respeito aos padrões</h2>
54 <p>
55 "Keep it Simple", ou seja, tentamos manter as coisas simples: respeito
56 aos padrões, planejamento cuidadoso e documentação escrita de alta
57 qualidade, fornecimento de um sistema robusto e estável e um sistema de
58 arquivos (<em>rootfs</em>) no LiveCD leve o suficiente para ser executado
59 em máquinas que tenham ao menos 128 mb de memória RAM. Também usamos
60 aplicativos baseados em GTK+2, Dialog, scripts SHell ou PHP. A idéia
61 é não nos repetirmos e deixar o sistema básico leve e pequeno.
62 </p>
64 <h2 id="tank">Tank - Build host &amp; home</h2>
66 <p>
67 Cada participante do projeto pode obter uma conta no servidor do projeto
68 com acesso seguro, espaço em disco, um diretório público e acesso a todas
69 as ferramentas de desenvolvimento. Os desenvolvendores podem compilar
70 pacotes e os mantenedores dos mirrors podem gerenciar as sincronizações.
71 O Tank também hospeda o website, o boot via web e os repositórios
72 mercurial:
73 <a href="http://tank.slitaz.org/">tank.slitaz.org</a>
74 </p>
75 <p>
76 Instruções para a utilização deste servidor estão descritas no "Livro de
77 Receitas" (cookbook):
78 <a href="http://doc.slitaz.org/pt:cookbook:buildhost">SliTaz Build Host (tank)</a>.
79 </p>
81 <h2 id="repos">Repositórios Mercurial</h2>
83 <p>
84 Os repositórios Mercurial ou Hg do SliTaz podem ser listados ou clonados por
85 qualquer um na URL: <a href="http://hg.slitaz.org/">http://hg.slitaz.org/</a>.
86 Pessoas com acesso de escrita podem acessar diretamente pelo endereço
87 <code>repos.slitaz.org</code> que necessita de autenticação.
88 O Mercurial usa Python e é instalável com o comando:
89 <code>tazpkg get-install mercurial</code>
90 </p>
92 <h3>~/.hgrc</h3>
94 <p>
95 Antes de sua primeira transferência no servidor, assegure-se de que possui
96 o arquivo de configuração do Hg correto com seu nome e endereço de e-mail
97 e lembre-se de checar que você não está acessando como usuário root.
98 Exemplo de arquivo ~/.hgrc:
99 </p>
100 <pre class="script">
101 [ui]
102 username = FirstName LastName &lt;you@example.org&gt;
103 </pre>
105 <h4>Clonar, modificar, transferir e finalizar</h4>
107 <p>
108 Clonar (clone) um repositório, exemplo para slitaz-doc:
109 </p>
110 <pre>
111 $ hg clone http://repos.slitaz.org/wok
112 </pre>
113 <p>
114 Mude de diretório para slitaz-doc, note que você deve estar no repositório
115 para poder utilizar os comandos "hg". Para marcar todos os logs ou somente o
116 último log:
117 </p>
118 <pre>
119 $ hg log
120 $ hg head
121 </pre>
122 <p>
123 Modifique um ou mais arquivos e transfira (commit):
124 </p>
125 <pre>
126 $ hg add
127 $ hg status
128 $ hg commit -m "Log message..."
129 $ hg log
130 </pre>
131 <p>
132 Note que você pode usar o comando <code>rollback</code> para desfazer a última
133 transação. Antes de finalizar (push) as mudanças no servidor é seguro executar
134 o comando pull ao menos uma vez:
135 </p>
136 <pre>
137 $ hg pull
138 $ hg push
139 </pre>
140 <p>
141 Está feito, suas mudanças, código ou correções estão agora no servidor
142 </p>
144 <h4>Comandos Úteis</h4>
146 <p>
147 Comandos do mercurial (hg) que podem ser usados.
148 </p>
149 <ul>
150 <li><code>hg help</code> : Mostra uma lista completa dos comandos.</li>
151 <li><code>hg rollback</code> : Desfaz a última ação (commit, pull,
152 push).</li>
153 <li><code>hg log &lt;package&gt;</code> : Mostra o log de um pacote.</li>
154 <li><code>hg head</code> : Mostra o último log.</li>
155 </ul>
157 <h2 id="gui">Interface Gráfica - C/GTK, Yad, Vala/Genie e WEB/GCI</h2>
159 <p>
160 Há várias maneiras de criar interfáces gráficas para o usuário para a
161 distribuição. No início do projeto até a versão 3.0, usamos principalmente
162 o GTKDialog, o que nos permitia criar interfaces razoavelmente complexas
163 em GTK, ao mesmo tempo que pudemos usar uma linguagem de script que
164 era executada sem a necessidade de ser compilada. Porém, o GTKDialog
165 não é mais mantido pelos desenvolvedores, e está desatualizado, então
166 tivemos que mudar para o Yad para criar algumas caixas de diálogo simples.
167 Para todos as ferramentas de administração, pacotes e configuração
168 próprias da distribuição, agora usamos o TazPanel, que é uma interface
169 WEB/CGI escrita em xHTML5 e CSS3.
170 </p>
171 <p>
172 O Yad é simples, porém não nos permite criar interfaces muito complexas,
173 então outra maneira teve de ser abordada. A vantagem de uma linguagem
174 de script é o fato de não precisar ser compilada e ser codificada em
175 tempo real, porém isso significa em programas que rodam com um pouco menos
176 de performance. Escrever programas na Linguagem C é complexo e atrai
177 menos desenvolvedores, porque linguagens de script são mais atrativas
178 para aqueles que desejam contribuir, tal como o SHell Script, que é
179 fácil de compreender e manter. Deste modo, com uma linguagem de programação
180 script uma interface WEB/CGI ou em GTK, podemos manter nossas linhas
181 mestras e atrair desenvolvedores.
182 </p>
183 <p>
184 Há muitas linguagens que usam GTK, como Genie, Vala ou GTKaml. Mas é
185 preciso manter em mente que elas não são tão populares quanto o C ou GTK
186 e não são tão fáceis de aprender e usar (para interfaces simples, melhor é
187 utilizar scripts SHell para tarefas corriqueiras). Pode-se usar o Vala,
188 porém note o seguinte exemplo, que é o código necessário para criar uma
189 simples caixa de diálogo, e possui 14 linhas de código:
190 </p>
191 <pre>
192 #include &lt;gtk/gtk.h&gt;;
193 int main(int argc, char *argv[])
194 {
195 GtkWidget *window;
197 gtk_init(&amp;argc, &amp;argv);
198 window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
199 g_signal_connect (G_OBJETCT (window), "destroy",
200 G_CALLBACK (gtk_main_quit), NULL);
202 gtk_widget_show(window);
203 gtk_main();
204 return 0;'
205 }
206 </pre>
207 <p>
208 Caso queira contribuir, e não está certo qual linguagem usar, mande uma
209 mensagem para a lista de discussão. Para pequenas interface gráficas,
210 utilize o TazBox como exemplo, que pode ser encontrado no repositório
211 slitaz-tools, que também possui pequenas interfaces gráficas, como a
212 responsável pelo logout do usuário. O primeiro utilitário do SliTaz a
213 ser escrito em Linguagem C pura, com GTK, é o TazWeb, e ele pode ser
214 utilizado como exemplo na utilização da função system() para incluir
215 comandos do sistema em uma interface. Esta ferramente utiliza
216 wget para downloads e sed para adicionar favoritos.
217 </p>
218 <p>
219 Scripts em Yad devem seguir as linhas mestras de codificação para a
220 distribuição:
221 <a href="http://hg.slitaz.org/slitaz-dev-tools/raw-file/tip/tazyad/README">
222 README</a> e o
223 <a href="http://hg.slitaz.org/slitaz-dev-tools/raw-file/tip/tazyad/tazyad">
224 código de exemplo</a>.
225 </p>
227 <h2 id="iconv">Implementação da função iconv()</h2>
229 <p>
230 O SliTaz utiliza a função iconv() fornecida pela biblioteca glibc do
231 projeto GNU - alguns pacotes que necessitam da função <code>libiconv</code>
232 devem usar a versão fornecida pela glibc (<code>glibc-locale</code>). Note
233 que já não há mais um pacote libiconv (1.2 MB) no SliTaz.
234 </p>
236 <h2 id="pkgs">Pacotes Tazpkg</h2>
238 <p>
239 Os pacotes tazpkg no SliTaz são automaticamente criados via o
240 <a href="http://cook.slitaz.org/">robô de compilação</a> e receitas
241 no wok. O Livro de Receitas descreve o
242 <a href="http://doc.slitaz.org/pt:cookbook:wok">uso das ferramentas</a>
243 e o formato das <a href="http://doc.slitaz.org/pt:cookbook:receipt">receitas</a>.
244 Informações sobre o comando cook e sobre criação de arquivos receipt são
245 necessários para a criação de pacotes.
246 </p>
247 <p>
248 Em termos de escolha de pacote, a idéia é oferecer o pacote por tarefa ou
249 funcionalidade, isto é, a mais leve aplicação em seu campo e sem duplicações.
250 Note que a atual seleção de pacotes não é imutável, se você souber de uma
251 alternativa mais leve, com mais funcionalidades ou mais <em>sexy</em> por apenas
252 alguns KB a mais, sugira na lista de discussão. Atenção redobrada é prestada
253 aos pacotes do LiveCD: eles devem ser "limpos", removendo-se dependências
254 desnecessárias e opções do compilador. Em geral os pacotes candidatos a fazer
255 parte do LiveCD são discutidos na lista.
256 </p>
257 <p>
258 Antes de você começar a compilar e a criar pacotes para o SliTaz, certifique-se
259 que o trabalho ainda não existe na relação do wok disponível no mirror principal
260 do SliTaz. Não se esqueça que os membros da lista podem te ajudar e que a
261 documentação do <a href="http://doc.slitaz.org/pt:cookbook:wok">wok e ferramentas</a>
262 existe para te guiar nos primeiros passos.
263 </p>
265 <h3 id="pkgs-naming">Nomes de Pacotes</h3>
267 <p>
268 Na maioria dos casos o nome do pacote é o mesmo do código fonte, exceto
269 para os módulos das linguagens Python, Perl, PHP, Ruby e Lua. Por exemplo,
270 o pacote que fornece o sistema de templates Kid, escrito em Python e XML,
271 é nomeado: <code>python-kid</code>.
272 </p>
274 <h2 id="website">Gerenciamento do website e manuais</h2>
276 <p>
277 O website e os manuais (Manual do SliTaz, Livro de Receitas) são
278 gerenciados pelo repositório mercurial, podendo ser clonados da
279 seguinte maneira:
280 </p>
281 <pre>
282 $ hg clone http://hg.slitaz.org/website
283 Ou, se você tiver as permissões necessárias:
284 $ hg clone http://repos.slitaz.org/website
285 </pre>
287 <h3 id="xhtml">Estilo para codificação de xHTML</h3>
289 <p>
290 As páginas nos diferentes <em>manuais</em> são codificadas em xHTML 1.0
291 transitional. As cores para o corpo da página (<code>body</code>) e para
292 os títulos são definidas diretamente de forma a permitir que os links
293 sejam facilmente identificáveis. Os títulos de primeiro nível são usados
294 apenas uma vez, no topo da página, os de segundo nível são usados para
295 nomear as seções e os de terceiro e quarto nível para as subseções. Se
296 uma lista é usada para os tópicos, usando âncoras para as diferentes seções,
297 é posta logo no início da página, após o título da mesma.
298 Parágrafos são colocados dentro das tags <code>&lt;p&gt;&lt;/p&gt;</code>.
299 Para indentação, usa-se tabulações (tabs), de forma a manter-se a semântica
300 e para diminuir espaço em termos de octetos (bytes). Para mostrar trechos
301 de código, como o nome de um comando dentro de um parágrafo,
302 <code>&lt;code&gt;</code> é o método recomendado. Para mostrar a saida
303 de comandos ou comandos a serem digitados em um terminal, usa-se
304 <code>&lt;pre&gt;</code>. Exemplo:
305 </p>
306 <pre>
307 $ comando
308 </pre>
309 <p>
310 Para mostrar texto que pode ser copiado e colado, como scripts, peças de
311 código, arquivos de configuração, etc, também se usa a tag
312 <code>&lt;pre&gt;</code>, em conjunto com a classe CSS chamada "script".
313 Exemplo:
314 </p>
315 <pre class="script">
316 &lt;pre class="script"&gt;
318 code...
320 &lt;/pre&gt;
321 </pre>
322 <p>
323 Texto <em>enfatizado</em> é colocado dentro da tag <code>&lt;em&gt;</code>
324 e links internos são relativos. É recomendável checar a validade do código
325 xHTML por meio do <em>validador</em> online da W3C.
326 </p>
328 <h2>Diff e patch</h2>
330 <p>
331 As utilidades <code>diff</code> e <code>patch</code> são ferramentas de linha
332 de comando para criação e implementação de diferenças entre dois arquivos. Esta
333 técnica é freqüentemente usada para colaboração e as mudanças feitas no arquivo
334 original podem ser extraídas facilmente. Para criar um arquivo <code>diff</code>
335 legível aos humanos em um simples editor de textos, você deve fornecer a opção
336 <code>-u</code> :
337 </p>
338 <pre>
339 $ diff -u file.orig file.new &gt; file.diff
340 </pre>
341 <p>
342 Para aplicar um patch:
343 </p>
344 <pre>
345 $ patch file.orig file.diff
346 </pre>
348 <!-- End of content -->
349 </div>
351 <?php include("../../lib/html/footer.pt.html"); ?>
353 </body>
354 </html>