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

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