PLANO DE DESENVOLVIMENTO FINAL 3.0
--------------------------


PROPSITO
-------
O propsito deste projeto  criar um desktop semelhante ao Windows XP para sistemas Linux/x86. Isso significa que qualquer caracterstica que no 
est implementada no Windows XP, NO ser implementada no XPde. Se voc quiser criar um projeto baseado nesse, no h problema. A 
razo pela qual expe-se claramente isso  de que no h necessidade de outro desktop grfico para competir com KDE e GNOME. Este projeto  
desenvolvido apenas para ajudar usurios Windows a migrarem para o Linux, nada mais. 

MINI-FAQ
-------

P. Por que voc est usando Kylix? No  software livre!!!
R. Em minha opino, o Kylix  a melhor ferramenta de desenvolvimento para Linux j criada. Comeei minha carreira usando C++, e agora, em meu 
trabalho, uso PHP na maioria dos casos, mas acredite, o Kylix no  apenas uma linguagem baseada em Pascal.  uma plataforma completa de 
desenvolvimento dotados de uma biblioteca de classes poderosa e um compilador muito veloz.  por isso que eu iniciei esse projeto usando o Kylix, 
porque na minha opinio,  a melhor ferramenta para esta tarefa. Eu sei que no  "de graa", mas voc poder fazer o download do Kylix Open Edition 
para desenvolver projetos sob licena GPL como este. Convido-o a tentar. Manteremos este projeto completamente compatvel com o Kylix Open Edition. 

P. Ser portado para outros sistemas operacionais?
R. No.

P. Por qu?
R. Porque o Kylix roda apenas no Linux/x86. No  possvel portar esse programa para outra plataforma se a Borland no o fizer primeiro. E tambm, o 
objetivo deste projeto  enfocado apenas em uma coisa: Prover um Linux Desktop com a interface do Windows XP. 

P. Por que voc no se junta ao fvwm, qvwm, @#!wm?? Eles esto fazendo um timo trabalho! Olhe para as telas desses desktops!
R. Bem, eu j vi muitos gerenciadores de janelas/ambientes desktop desde que eu me iniciei em Linux. Nenhum deles pode ser comparado com esse projeto. 
No estou dizendo que este projeto  o melhor, apenas tem um propsito diferente e mais importante, baseando numa tecnologia completamente diferente. 


PROJETO
-------
Este projeto  divido em vrios sub-projetos, e cada um  um projeto em si. 

Obs: Todos os cdigos abaixo devem ser lidos como um pseudo-cdigo e no tm a pretenso de funcionar - nem mesmo foi testado,  apenas um guia para 
desenvolvimento futuro. 

Controles e Componentes
----------------------
Um projeto como este requer todo controle no modo em que os widgets se formam e se comportam. Algumas coisas podem ser feitas apenas ajustando a 
interface Qt do Kylix para nvel baixo. Mas h outras coisas que requerem um novo controle/componente. Esta  a lista inicial de componentes que ns 
precisamos criar.



   XPToolsAPI
   
     Este  a parte principal do desktop, no exatamente um componente, mas evoluir a medida que o projeto cresa.  uma interface que fornece 
mtodos para interagir com o desktop. O desktop e a barra de tarefas sero implementadas baseadas nas interfaces. Ento ser fcil de se criar 
plug-ins e aumentar o projeto. 


   XPStyle
   
   A ferramenta Qt desenha objetos da mesma maneira que o XP faz. Este estilo deve extrair todas as informaes de aparncia (cores, fontes, etc) do 
registro para ser compartilhada por todos os programas e permitir a configurao externa atravs de temas e caixas de dilogo. Deve suportar estilos 
de outras tecnologias dessa forma:  Um estilo deve ser um pacote compilado, este pacote contm um objeto que implementa a interface IXPStyle, na 
inicializao do pacote, deve registrar-se o estilo atravs de XPToolsAPI para indicar que est disponvel no sistema. Em princpio, os estilos sero 
de base binria, mas como  possvel aprimorar sempre, podemos fazer um estilo que leia um arquivo XML com operaes de desenho. Os temas do Metacity 
podem ser usados como base de trabalho. Exemplo:


IXPStyle=interface			['{88F313AD-73E0-D611-98A9-000244219999}']
			procedure Configure;				//Shows a dialog box to configure the style
			procedure Draw3dRect(const ARect:TRect);
			procedure Draw3dLine(const p1,p2:TPoint);
			procedure DrawButton(ACanvas:TCanvas;AButton:TObject);
			procedure DrawMenuItem(ACanvas:TCanvas;AItem:TMenuItem);
			.......
			.......
			.......
		end;

		TMyStyle=class(TInterfacedObject, IXPStyle)
			//Here goes all the methods!!
		end;

		initialization
			XPToolsAPI.registerStyle('MyStyle', TMyStyle.create);



   O primeiro estilo a ser criado deve ser o Clssico, e o segundo a ser criado deve ser o Luna XP. Provavelmente estilos poderiam ser criados com o 
Kylix C++. Seria legal disponibilizarmos amostrar para que os designers e programadores criassem mais temas.  Uma super-super implementao seria o 
desenvolvimento da incorporao das interfaces usando perl, php, python, etc, etc, etc.   

 
   ShellTreeView & ShellListView & ShellCombobox
   
   
      Estes controles sero necessrios para o Gerenciador de Arquivos, para os dilogos e para o Desktop em si. O objetivo  permitir a mesma 
funcionalidade que o Windows fornece: cones embutidos, Arrastar e soltar, operaes de editar, copiar, colar, deletar, multi-seleo, etc. Todas as 
informaes sobre cones deve ser extradas do registro e compartilhada por todos os programas. Cada item poderia ter ser acessado com outro boto do 
mouse mostrando um submenu com as operaes disponveis. Estas operaes sero guardadas no registro e os softwares compatveis com o XPde poderiam 
ter todo benefcio (Descompactadores, Editores de texto, etc). O ShellListView deve ser capaz simular o espao que ser usado na barra de tarefa, 
atravs das propriedades cliente. O ShellComboBox  apenas um componente para mostrar itens do sistema (Meus Documentos, Meu computador, e assim por 
diante). 

     Antes de criarmos este projeto, precisamos definir qual a hierarquia dos itens (reais e virtuais) um usurio pode explorar. Por exemplo, "Meu 
computador" no  um item real, mas a pasta "Meus Documentos" . Um item especial ser o "Ambiente de Rede" o qual extrai toda a informao de um 
sistema de arquivos virtual. Isto precisa ser analisado cuidadosamente antes que o projeto se inicie, para que todos os controles "Shell" possam ser 
desenvolvidos sob um sistema de arquivos virtual, no um sistema de arquivos baseado em arquivos. Estes componentes seo parte principal do 
Gerenciador de Arquivos.  O XPToolsAPI poder ser usado para registrar novos sistemas de arquivos para extender o gerenciador e dilogos ao mesmo 
tempo. 


    OutlookBar            
      
    
    Uma barra que mostra elementos como o Outlook. Muito til para dilogos ou para um clone do Outlook. Seria bom procurar por algum componente 
Delphi freeware e ver se comeamos a escrever o cdigo. Abrir/Salvar/Dilogo de Imagens. Dilogos baseados em ShellListView e OutlookBar BrowseDialog. 
Dilogo para procurar por um diretrio.

 XPMainMenu & XPPopupMenu
 
 Componentes de menus para desenhar-se e comportar-se como no Windows XP, e mais importante: Integrar os efeitos dissolver e Fade do XP. O PopupMenu 
deve criar um menu como o menu iniciar do XP. (Multi-coluna, itens personalizados, etc) e cada menu tem que ter a capacidade de poder ser clicado com 
o outro boto do mouse (geralmente o direito) para que suas propriedades sejam mostradas. 

   
       XPTaskbar
       
       Este componente deve ser capaz de se comportar como uma barra de tarefas e deve funcionar em qualquer posio (em baixo, na esquerda, na 
direito, no topo). Este componente deve conter diversas "zonas", e cada zona  de um tipo de controle. Por exemplo, o boto Iniciar, os aplicativos 
abertos, a bandeja do sistema. Este componente no define as "zonas" por si mesmo,  apenas um recipiente algumas propriedades de barra de tarefas 
comum (alinhar, sempre acima, auto-esconder, etc).             

Desktop
-------
  
  Este projeto ir usar um ShellListView para mostrar ao usurios o contedo de um diretrio e permitir que eles interajam com os itens do desktop 
(arquivos, pastas, atalhos, itens do sistema). Usar tambm o componente XPPopupMenu para mostrar uma lista de operaes comuns.  
  
  
Gerenciador de Janelas & Barra de Tarefas
------------------------

  Parecem duas coisas diferentes, mas de fato, so muito similares. O gerenciador de Ganelas  responsvel em mapear cada janela dentro de um quadro, 
a ser movido ou ter seu tamanho alterado e a barra de tarefa  responsvel por mapear cada aplicao ativa e permitir sua alternao.  por isso que 
so praticamente o mesmo programa.

Gerenciador de Janelas

    O gerenciador de janelas ser baseado no cdigo do Metacity (at mudana posterior) porque o cdigo do Metacity  baseado em GTK e proporciona 
poucas operaes de baixo nvel. O cdigo  bem similar ao qual devemos escrever. Pouca coisa de Xlib e muito cdigo de alto nvel. Devemos criar uma 
verso que produza a interface nativa classica do Windows XP, e depois disso, precisamos incorporar os temas. Faremos assim para deixar o tema 
clssico o mais veloz porque ser cdigo primrio, e somente depois adicionaremos suporte  temas atravs de XML ou de outra forma. 
           
  
Barra de Tarefas
  
  
 Esta parte usar o componente XPTaskbar. Ser criada uma zona do Menu Iniciar, uma zona para o Quick Launch e uma zona para a Bandeja do Sistema. 
Ter que ser adaptado para possuir mais zonas como no XP (pastas, etc.). O Menu Iniciar ser criado usando-se o componente XPPopupMenu e ser 
responsvel em ler o contedo do diretrio do Menu Iniciar, buscando recursivamente por elementos (pastas, atalhos, arquivos, etc). Ser tambm 
responsvel para conter a Bandeja do Sistema com o relgio e a possibilidade de configur-los. A barra de tarefas poder ser configurada atravs de um 
dilogo e estas configuraes sero guardadas no registro.


Gerenciador de Arquivos & Navegador para Internet
-------------------------------  

Estas duas tarefas so o mesmo programa. Um navegador para internet  apenas um gerenciador de arquivos dotado de um mdulo para navegar na internet, 
ento conclumos que o Gerenciador de Arquivos deve ser projetado como uma estrutura que ir aclopar mdulos para interagir com arquivos de sistemas 
(NFS, SMB, FTP, WEBDAV, ZIP, etc) ou contedos personalizados (internet, diretrios especiais, etc). Basicamente, iremos usar os componentes Shell 
para criar um gerenciador de arquivos padro que carregar mdulos especiais para a leitura de respectivos arquivos de sistema. Devemos definir qual 
ser o formato da interface do arquivo de sistemas virtual. Deve ser muito parecida com o FTP (getdircontents, getcurrentdir, delete, etc.)

Mdulos a serem criados:
NFS - mdulo para explorar e interagir com redes Linux
SMB - mdulo para explorar e interagir com redes Windows.
FTP -  mdulo para explorar e interagir com FTPs
ZIP -  mdulo para explorar e interagir com arquivos ZIP
DAV - mdulo para explorar e interagir com servidores WebDav
Internet - mdulo para explorar a internet e deve ser baseado num browser existente (ie. Mozilla ou outros). Alm disso, deve encapsular o navegador 
permitindo futuras mudanas na interface.
specialdirs - mdulo para definir polticas de segurana tais como definir quais usurios possam acessar tal pasta ou tal arquivo, ou mostrar o 
diretrio do sistema ou de fontes, ver arquivos escondidos, visualizar preferncias de outros usurios e at interagir com controles do Painel de 
Controle. 


Todos os mdulos devem possui interface capaz de interagir com o Gerenciador de Arquivos (criar botes, criar barras de ferramentas, itens de menu, 
barras de status).



Painel de Controle 
-------------
   
   O Painel de Controle no  uma tarefa em si, mas apenas um diretrio especial que comportar vrios arquivos .cpl. Esses arquivos so executveis e 
controlam todo o aspecto ambiental do desktop. Cada applet/controle pode ter diferentes partes dentro de si, como por exemplo, mudar a resoluo da 
tela ou selecionar um tema. 

Applets/Controle a Criar      
   
   Acessibilidade
   Adicionar Hardware
   Adicionar ou Remover Programas
   Ferramentas de Administrao
   Date e Hora
   Vdeo
   Opes de pastas
   Fontes
   Joysticks
   Opes da internet
   Teclado
   Mouse
   Conexes de Rede
   Opes de modem e telefone
   Energia
   Impressoras e faxes
   Opes de Regio e Linguagem
   Scanners e Cmeras
   Tarefas agendadas
   Som e componentes de udio
   Reconhecimento de voz
   Sistema
   Barra de tarefas e Menu Iniciar
   Contas de usurios
   
  Muitos desses controles dependero do tipo da distribuio Linux em questo, ento ser certo a criao de vrias verses para cada distribuio 
Linux. Veremos.O cone do controle ser extrado e utilizado de um arquivo com o mesmo nome mas com extenso .png (outros tamanhos sero suportados 
tambm),  por exemplo: 

desk.cpl
desk_48x48.png
desk_32x32.png
desk_16x16.png

Temas
------

Um tema ser composto por:
Estilo Visual
Decoraes do Gerenciador de Arquivos
cones do Sistema
Sons do sistema
Cursores do sistema
Papel de Parede



Ferramentas
-------------


Este projeto  responsvel pela criao de pequenos aplicativos instalados com o Windows XP. Aqui est a lista:

Acessrios
	Acessibilidade
		Assistente de Acessibilidade
		Lente magntica
		Narrador
		Teclado na tela
		Gerenciador de utilidades
	Comunicaes
		Hiperterminal
		Conexes de rede
		Assistente de conexo de redes
		Configurao de redes
		Conexo remota de computadores
	Entretenimento
		Gravador de som
		Controle de volume
		Mdia player
	Ferramentas do sistema
		Backup
		Mapa de caracteres
		Limpeza de disco
		Desfragmentador de disco
		Assistente de transferncia e configurao de arquivos
		Tarefas agendadas
		Informaes do sistema
		Restaurao do Sistema
	Catlogo de endereos
	Calculadora
	Linha de comando
	Bloco de notas
	Paint
	Tour do XPde
	WordPad

 claro que nem todos podero ser criados ao mesmo tempo ou funcionar a mesma coisa, mas precisamos criar novas aplicaes ou reutilizar outras 
existentes, como o Bloco de Notas. 


Progresso temporal do projeto
---------------------

Quando um projeto como esse comea,  muito difcil conseguir programadores envolvidos nele, e porque tambm Kylix no  a ferramente mais usada no 
mundo da programao em Linux, portanto devemos priorizar as funcionalidades mais atrativas em favor das mais uteis. Isto far com que mais 
desenvolvedores engressem nesse projeto, porque eles vero o progresso do projeto. Aqui est uma lista de progresso temporal do projeto. Sinta-se a 
vontate para comentar ou fazer uma sugesto.

O design grfico do projeto ser preparada durante todas as fases do projeto.  por isso que no esto includos ainda em nenhum lanamento. 
Basicamente  composto por duas principais reas:

- Criao de cones
  Criao de todos os tipos de cones para o desktop e os programas.
 
- Desing grfico
  Criar todas as imagens necessrias para o desktop e os programas.
-----------------------------------------------------------------
  
  Acho que devemos promover a habilidade de gerenciar arquivos e um Gerenciador de Arquivos  a parte principal de um desktop. Quando esta parte 
estiver terminada, poderamos colocar mais screenshots no site.
 *ShellTreeView & ShellListView & ShellCombobox
 *Gerenciador de Arquivos
------------------------------------------------------------------
Testar o componente ShellListView e anunciar um desktop completo e operacional. 
*Desktop
--------------------------------------------------------
Fazer todos os objetos de janelas parecerem como o Windows XP e permit-los de criar aplicaes com estilo do XP.
*XPStyle
--------------------------------------------------------
Remover as dependncias do Metacity para permitir integrao do gerenciador de janelas com o desktop e produtividade total para o ambiente.
*Gerenciador de Janelas
*XPTaskbar
*Barra de tarefas
--------------------------------------------------------
Permitir que se ajuste as configuraes mais comuns. Terminar esses applets:
*Barra de tarefas e Menu iniciar
*Contas de usurios
*Data e hora
*Configuraes de Vdeo
*Opes de linguagem e regionais (tambm mudar a linguagem do ambiente)
------------------------------------------------------- 
LANAR XPDE 0.2
--------------------------------------------------------
Finalizar operaes comuns de usurios:
*Navegador
*Mdulo NFS
*Mdulo SMB
*Mdulo Specialdirs
*Mdulo de Opes da Internet
--------------------------------------------------------
Dar  todas as aplicaes, aparncia do Windows XP:
*OutlookBar
*Dilogos Abrir/Salvar/Imagens
*BrowseDialog
--------------------------------------------------------
Incluir as ferramentas mais utilizadas:
*Catlogo de endereos
*Calculadora
*Linha de Comando
*Bloco de Notas
*Paint
*WordPad
--------------------------------------------------------
LANAR XPDE 0.3
--------------------------------------------------------
Incluir todos os efeitos do Windows XP:
*XPMainMenu & XPPopupMenu
--------------------------------------------------------
To release the screenshots everybody will be waiting:
Lanar os screenshots que todos esto esperando!
*Estrutura dos temas
*Reproduzir o tema LunaXP
--------------------------------------------------------
To give more exploring capabilities:
Dar mais capacidade de explorao:
*Mdulo FTP
*Mdulo ZIP
*Mdulo DAV
--------------------------------------------------------
Adicionar mais applets ao painel de controle:

*Opoes da pasta
*Fontes
*Teclado
*Mouse
*Controle de volume
--------------------------------------------------------
RELEASE XPDE 0.4
--------------------------------------------------------
To add something that could be useful to novice user, but is dependant from the Linux distribution:
Adicionar algo que ser til ao usurio leigo, mas dependendo da distribuio Linux:
*Conexes da rede
*Assistente de conexo  redes
*Novo assistente de conexo
--------------------------------------------------------
Adicionar mais um programa bastante utilizado:
*Mdia Player (baseado no mplayer??)
--------------------------------------------------------
*Um ou dois meses para fase beta. Testar, consertar bugs e lanar verso 1.0
--------------------------------------------------------
RELEASE XPDE 1.0
--------------------------------------------------------
O resto em nenhuma ordem especial. Ainda  cedo planejar esses:

*Adiconar ou Remover Programas
*Acessibilidade
*Adicionar Hardware
*Ferramentas administrativas
*Joysticks
*Conexes de rede
*Opes de telefone e modem
*Energia
*Impressoras e faxes
*Scanners e Cmeras
*Tarefas agendadas
*Sons e componentes de udio
*reconhecimento de voz
*Sistema
*Assistente de acessibilidade
*Lente
*Narrador
*Teclado On-screen
*Gerenciador de Utilidades
*Hiperterminal
*Conexo de desktop remota
*Gravador de som
*Backup
*Mapa de caracteres
*Limpeza de disco
*Desfragmentador de disco
*Assistente de transferncia de arquivos e configuraes
*Informao do sistema
*Restaurao do sistema
*Tour do XPde

Grupo de desenvolvimento
----

Cada membro do grupo ter uma ou mais funes. Estas so as posies a serem preenchidas:

Programador Principal
  Algum totalmente comprometido com o projeto. Com pelo menos 10 horas livres por semana.
 
Gerente de Projeto
  Algum disposto a coordenar o grupo de programadores e ser responsvel por tarefas
 
Programadores gerais
  Algum disposto a contribuir com a programao.
  
Documentador
  Algum disposto a escrever documentao (bons conhecimentos de ingls)

Tradutor
  Algum disposto a traduzir o software e a documentao para outra lngua.

Testador
  Algum disposto a se tornar parte do time de Controle de Qualidade.

Gerente de Suporte
  Algum disposto a dar suporte para usurios em fruns, listas e newsgroups, etc.
  
Designer grfico
  Algum disposto a dar uma imagem corporativa ao projeto, criando cones, grficos, etc.
  
Escritor de contedo
  Algum disposto a evangelizar o uso do desktop escrevendo revises tcnicas, artigos, ou ser editor do website. 
  
Gerente de Lanamento
  Algum responsvel em agrupar todas as partes do projeto e lanar novas verses, coordenar a distribuio, pacotes, FTPs, etc.
  
 Cada membro ter um email *****@xpde.com para ser reconhecido como membro do projeto a ser usado exclusivamente para o projeto em si. Uso indevido 
poder acarretar em expulso do projeto. 
As seguintes ferramentas sero usadas:
-Kylix 3 (Delphi)
-Kylix 3 (Builder), provavelmente para o gerenciador de janelas
-CVS para guardar os fontes e permitir desenvolvimento imeditado, provavelmente hospedado em Sunsite.dk
-DocBook para criar documentao
-XXE (http://www.xmlmind.com/xmleditor/), o mais fcil e melhor editor XML que eu conheo (desenvolvido em Java)
-DCL (http://dcl.sourceforge.net) software de tickets para gerenciar trabalho em grupo
-Mantis (http://mantisbt.sourceforce.net), um software de rastreamento de bugs muito bom
-Kylix documentador (encontrar um bom, deve ser tipo estilo doc-o-matic (http://www.doc-o-matic.com/))
-Kylix formatador de cdigo (encontrar um bom, para fazer todos os cdigos aparentarem o mesmo estilo
-Kylix localizador (encontrar um bom, mas eu acho que teremos que criar nosso prprio)

Os seguintes servios sero estabelecidos e devero ser mantidos:
-Listagem e procura de bugs (http://bugs.xpde.com)
-Tiquetagem  (http://dcl.xpde.com)
-Canal IRC (irc://irc.freenode.net/xpde)
-Lista de discusso (mailto:development-subscribe@xpde.com)
-Fruns  (http://www.xpde.com/modules.php?name=Forums)
-Perguntas e respostas (http://www.xpde.com/modules.php?name=FAQ)
-Servidor CVS  (cvs.xpde.berlios.de)

Os seguintes servios sero disponibilizados no futuro:
-Newsgroups

Depois do lanamento do prximo plano de desenvolvimento, eu darei os critrios de programao, e o trabalho comear.

Para se juntar ao grupo, por favor mande um email para info@xpde.com escrevendo por que voc quer fazer parte deste projeto e o que voc quer fazer. 
Se voc acha que no conhece Kylix suficiente ou que sua contribuio ser muito pouca, no hesite em me contatar. Talvez sua ajuda  mais valiosa do 
que voc pensa.

Saudaes.
