Thinking Visual

## 1. Introdução

O Trabalho Final de Curso (TFC) em questão pretende desenvolver e implementar novas funcionalidades no motor de WYSIWYG (What You See Is What You Get) da aplicação Quanta (http://kdewebdev.org/), bem como melhorar as já existentes.
Quando utilizar o termo VPL (Visual Page Layout) estarei a referir-me a WYSIWYG. Como o coordenador externo deste TFC, Eric Laffon, refere, o termo Visual Page Layout talvez tenha um significado mais rigoroso: "Except of course that HTML only suggests layout as opposed to a desktop publishing program unless you use absolute CSS very carefully. So WYSIWYG really is a ficticious misnomer with HTML."
O Quanta é uma aplicação de desenvolvimento para a Web, fazendo parte integral do KDE (K Desktop Environment), sendo portanto regida por uma licença Open Source, nomeadamente GPL v2. As plataformas em que o Quanta está disponível são as várias variantes de Unix (Linux, *BSD, Solaris, AIX, etc), e Macs. Existem também casos de sucesso no seu deployment em Windows, se bem que este Sistema Operativo (SO) não é oficialmente suportado.
Assim, poderemos imaginar o Quanta como sendo da mesma família de aplicações com o Microsoft Front Page ou o Dream Weaver.
O objectivo deste projecto é o de eliminar uma pecha que quem trabalha em plataformas, que não o Microsoft Windows, encontra, que é a de não terem uma aplicação que permita a edição visual de HTML. Esta limitação tem impedido muitos utilizadores de migrar totalmente para outros SOs. A nossa intenção é a de atingir o nível de funcionalidades e maturidade de aplicações proprietárias semelhantes e até ir mais longe, considerando áreas tão interessantes como a edição visual de XML, através da utilização de CSS e XSLT.
Thinking Visual foi o nome escolhido para este TFC.

## 2. Enquadramento

Este projecto está enquadrado na seguinte estrutura:
O KDE é um robusto projecto Open Source, cujo objectivo primário é o de disponibilizar um ambiente de trabalho visual (ver http://kde.org/whatiskde/). Uma vez inserido no KDE, este projecto terá de respeitar certas condições. Uma delas é o calendário. As futuras versões do KDE são planeadas e calendarizadas com antecedência, pelo que existe um período de congelamento (o conhecido freezing) no qual só se podem fazer correcções de bugs, ou seja, não se podem adicionar novas funcionalidades nem adicionar novas strings. Como se deve calcular isto introduz consideráveis restrições e é um factor muito importante a ter em conta para qualquer planeamento numa aplicação inserida no KDE.
É também necessário respeitar uma série de convenções, políticas e standards definidos pelo KDE (ver http://developer.kde.org/policies/ e http://developer.kde.org/documentation/) nomeadamente, políticas de commits de CVS (ver adiante), de enquadramento legal do código, de segurança, de documentação e de linhas de orientação na construção de Interfaces Gráficas de Utilizador (muitas vezes referidas por GUI - Graphical User Interface).
Outro aspecto importante é o da gestão de equipas e de versões no desenvolvimento para o KDE. Actualmente, o sistema utilizado é o CVS (https://www.cvshome.org/). Os programadores possuem uma cópia local do código fonte, fazem as modificações e aplicam-nas no repositório central. Existem várias árvores, nomeadamente a "HEAD" e os diversos branches de versões previamente lançadas. A HEAD é sempre a versão mais à frente, ou seja, que inclui todas as novas funcionalidades, enquanto que os branches são utilizados para corrigir bugs, ou testar novas direcções de desenvolvimento. Correntemente, o KDE vai na versão 3.3.0. Para lançar esta versão, houve um congelamento da HEAD e criou-se o branch referente à família 3.3. Assim, o desenvolvimento vai continuando na HEAD e sempre que houver correcções de bugs aplicáveis ao branch 3.3, essas alterações serão aplicadas aí, dando origem a versões 3.3.x (neste caso 3.3.1). Quando for decidido avançar para uma versão 3.x ou 4, o processo é repetido.
KDE Web Development representa a secção de desenvolvimento Web dentro do KDE. É concretizado com um módulo físico na estrutura do CVS cujo nome é kdewebdev. É um conjunto de várias aplicações que se inserem no âmbito do desenvolvimento Web, entre as quais está incluída o Quanta. O líder deste módulo é o Dr. Eric Laffoon, sendo também o coordenador externo do projecto.
A aplicação na qual irei trabalhar, o Quanta, funciona com uma arquitectura de plugins, que é disponibilizada pelas bibliotecas do KDE. Esta tecnologia permite embeber partes dentro de uma qualquer aplicação que o suporte, funcionando como shell. Deste modo, o Quanta pode diversificar e reutilizar componentes, particularmente um editor de texto, um link checker, depuradores e aquilo que nos interessa, o motor de edição visual de HTML (Visual Page Layout - VPL), apelidado de Kafka. Este projecto vai incidir particularmente neste módulo, não obstante ter de intervir noutras áreas do Quanta e mesmo do KDE, nomeadamente no motor KHTML, responsável pelo rendering de HTML (e futuramente de XML) e por um modo de edição básico chamado Caret Mode. O motor KHTML foi escolhido pela Apple para utilizar no seu browser, dando-lhe o nome de Safari, e desde então existe uma comunicação nos dois sentidos, de modo a que ambas as equipas beneficiem das melhorias introduzidas. O módulo Kafka depende directamente deste motor.
A realização deste TFC vai assim implicar o contacto com diversas áreas e equipas, o que vai representar um planeamento e desenvolvimento mais complexos mas mais rico também.

## 3. Objectivos e resultados a obter

Os objectivos deste Trabalho Final de Curso são os de implementar novas funcionalidades no Quanta, bem como melhorar as já existentes, de modo a tornar esta aplicação uma alternativa viável e até superior no âmbito da edição visual de conteúdos para a Web, nomeadamente (X)HTML e XML.
Citando o líder do projecto, Eric Laffoon, os resultados a atingir em relação ao próprio Quanta são: "world domination" :) É claro que não tenho a presunção de querer atingir este resultado no final do projecto mas, de qualquer maneira, penso que é uma visão positiva e ambiciosa que se traduz num espírito de inovação e de fazer as coisas da maneira correcta, mesmo que à custa de um maior esforço, sabendo que irá compensar a prazo.