Bonjour,
Avertissement : que ceux qui n'aiment pas la technique ne lisent pas :-)
AD a écrit :
Le lundi 20 février 2006 à 19:30 +0100, eric.bachard a écrit :
Alors, pour répondre à la question, il n'y a aucune collaboration de la
part de NeoOffice : ils prennent le code d'OpenOffice.org (900 Mo),
ajoutent 10Mo, compilent le tout et cela donne NeoOffice.
Ça n'a pas l'air si compliqué que ça alors,
En fait, si, c'est vraiment très compliqué : nous sommes actuellement
plus d'une dizaine à travailler en équipe, sur le problème, et nous
avons tous beaucoup à faire.
L'illusion vient du fait que Java s'occupe de réaliser des choses très
compliquées, avec un code relativement léger en taille. Comme la
difficulté se paie à un endroit ou à un autre, Java est plus lourd en
runtime (en fonctionnement), à cause de la machine virtuelle qu'il faut
lancer. Ce sont surtout certaines opérations graphiques qui semblent
coûter cher, mais je ne suis pas spécialiste. Pour Carbon/Cocoa, c'est
plus difficile à coder, mais il n'y a pas de machine virtuelle.
> pourquoi ooo n'y est pas
parvenu.
Parvenu à quoi ??
Actuellement, nous utilisons X11, donc nous dessinons du X11. Cela peut
être très sympa, et on peut au passage utiliser les thèmes gtk ou kde.
Pour avoir une vraie apparence (comportement compris) "Aqua" sous Mac OS
X , il faut utiliser l'API Mac OS X. Il a alors plusieurs possibilités,
comme utiliser :
- Java/Cocoa (ce n'est pas la solution retenue),
- Cocoa (trop d'incertitudes à cause des interactions mal controlées
entre les boucles d'événement OpenOffice.org et les boucles d'événements
Cocoa),
- Carbon/Cocoa, notre choix pour une première version native. C'est un
compromis.
Si Java/Cocoa est utilisé, il faut écrire moins de code, et tout semble
facile. Avec Java/Cocoa ... c'est Java qui fait le boulot, rajoutant une
couche entre OpenOffice .org et le système. En effet, pour faire le
travail, Java nécessite une machine virtuelle, donc demande des
ressources en fonctionnement. Cela se paie cash : voir le démarrage, ou
l'affichage de certains menus dans Neo.
Enfin, on ne sait rien sur l'avenir de Java/Cocoa avec Mac OS X.
Si Cocoa est utilisé, le langage utilisé est l'objective C, et cela
demande de modifier en profondeur le framework que constitue
OpenOffice.org : six mois de boulot à plein temps pour plusieurs codeurs
expérimentés, sans compter les bugs introduits dans les autres
architectures => on a vraiment essayé de voir si c'était possible, mais
il faudra plusieurs étapes avant d'y arriver.
Notre choix : Carbon/Cocoa, qui est un compromis entre Java/Cocoa et
Cocoa (obj-C). Ce choix est le résutat de deux mois de réflexions, tout
en étant le plus raisonnable à moyen terme : utiliser Carbon/Cocoa, qui
demande plus de code qu'avec Java, mais est très performant en runtime.
D'ailleurs, MS Office utilise Carbon/Cocoa sous Mac OS X.
IMPORTANT : *Le résultat visuel sera exactement le même* avec
Carbon/Cocoa, qu'avec Cocoa.
Que doit on faire exactement ?
C'est simple et compliqué à la fois : il faut modifier une partie très
importante du module vcl ( vcl c'est ~ 1780 fichiers), avec une
constante : vcl est en sandwich entre deux couches, qui doivent voir
exactement la même chose qu'avant (quand X11 est utilisé) : à la fois du
dessus (les couches graphiques qui demandent quelque chose à vcl), et du
dessous (les échanges entre vcl et le système, à bas niveau).
Un peu comme une paillette de savon, qui à un côté qui aime l'eau, et un
côté qui aime la saleté : on est au milieu.
Le principe de base : on ne souhaite modifier que vcl (et rien d'autre)
Nous avons donc à :
1) analyser complètement le fonctionnement du sal (System Abstraction
Layer ) du module vcl - aucune documentation n'existe - faire la liste
de toutes les classes, méthodes, et analyser leur rôles et interactions
de façon synthétique ..etc
=> Travail en cours (5 étudiants de l'UTBM sont sur le projet)
Quelques chiffres : nous avons passé une semaine à 5 pour analyser du
code, à plein temps, et nous n'avons fait que 40% environ du travail
nécessaire.
2) implémenter progressivement toutes les primitives et la couche
intermédiaire
=> Travail en cours, en parallèle
3) vérifier que les appels du dessous et ceux du dessus sont corrects,
et fonctionnent parfaitement, comme avec la Xlib (c'est à dire X11)
=> Programmé
Dans cette couche intermédiaire que nous avons à construire, si on
utilise Carbon/Cocoa**, c'est Mac OS X qui s'occupe de tout, et ça va
vite : c'est le but recherché.
**si Cocoa était utilisé, ce serait Mac OS X qui s'occuperait de tout,
comme avec Carbon/Cocoa, mais avec du code écrit en objective C, et
quelques avantages supplémentaires en runtime (certains services
dispos). Aucun indice pour dire si ce serait plus ou moins rapide que
Carbon/Cocoa.
Voila, très brièvement, les raisons de notre choix :-)
Pour finir, je souhaite de tout coeur que ce projet aboutisse, afin
d'avoir enfin une vraie appli Mac qui s'appelle OpenOffice.org.
Que ceux qui n'aiment pas voir l'aspect technique acceptent mes excuses,
et désolé pour ceux qui croyaient que c'était facile :-)
Pour les mac users qui lisent, je souhaitent qu'ils aient compris que
c'est d'abord OpenOffice.org qu'il faut soutenir. Les autres projets
dérivés en profiteront de toute façon, car le code source
d'OpenOffice.org est sous licence LGPL.
Mauvaise license, changer license.
Je fais partie du projet OpenOffice.org, et je respecte sa licence, que
j'ai acceptée.
Cordialement,
eric bachard
--
<ericb at openoffice |dot_ org>
Francophone OpenOffice.org Commmunity developer (Linux PPC / Mac OS X /
X11)
See : <http://fr.openoffice.org>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]