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

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