Archive for the ‘Work’ Category

GSoC 2009 at Gephi : Midterm Review

Vendredi, juillet 10th, 2009

Here is my mid-term review of my GSoC participation.

Current state of my work :

1/2 – Frontend : 80%

- The GUI view, model, theme, charting system (bar graph) and user interaction code (mouse moves and clicks) are ready for use. You can download the demonstration video, which use fake data (a table of 80000 random floats) here : timeline (with random data). (high-quality OGV video format can be read by VLC).

- Remaining work : all the “mouse over” layer, like highlight when the mouse is over one of the selection box sides (for better ergonomic), and also information about the data when the mouse is over a segment (see the corresponding value), and finally about the intervals (show begin and end dates). Also, adding the timeline play/stop button.

2/2 – Backend : 40%

- The backend code was started after the frontend, but advance much more quickly, since it doesn’t need the same “fine tuning” on pixel placement, colors and other ergonomical parameters than the user interface. Interfaces (API) are nearly finished, some test implementations too, but it needs some refactoring, and I have to implement the connection with the dynamic graph API (to control the time dimension of graphs inside Gephi), which should be soon released by Mathieu Bastian. Finally, the timeline player also need to be finished.

Commentary

- I followed the guidelines from the project leader (Mathieu Bastian) to split my project in various modules, like the other Gephi modules, while being allowed to freely implement the timeline internals.

- I’m very happy about the current architecture of the timeline. I fixed myself the following rules : use existing datastructures, rendering mecanisms inside Swing because they already implements a lot (eg. double buffering), avoid redundancy, and if possible.. no hacks!

- It is often cumbersome to tweak graphical components like the timeline, because it often works at the pixel level, and they cannot be edited graphically like one could do with Adobe Flash. User interaction code is boring to implement, because one has to add ugly value checking everywhere to prevent the user to crash the timeline by moving, clicking or creating impossible situations (like moving the selection box’s begin marker AFTER the end marker).

- But the current design do all that in an elegant way, I think :)

- The best example : I use standard JPanel, which have the interesting property of being directly used by Matisse, the netbeans gui editor. Thus, i can see my timeline 2D charts being updated in realtime while I resize them inside the editor! no more frustation and wait time (you know, when you build your project and see an ugly error like a JLabel cut in half because you misjudged the position in your algorithm ;) Here an example : http://files.getdropbox.com/u/122451/projects/gephi/screenshots/timeline.matisse.png

- There is some things that cannot be avoided (mostly for the “drawing part”, which need to be fast)

The Gephi community

This is a small but enthusiastic community, and I definitively feel like being part of it (send me a message at my new mail julian.bilcke@gephi.org, if you want ;). I’m happy to see that other students are also producing interesting results on their respective parts.

Rapport de projet ic05 : NetWitch

Dimanche, novembre 9th, 2008

j’ai (enfin) fais la page de mon vieux projet ic05 :
http://uxmal.paradisia.net/netwitch/

il était temps, ça date de printemps 2007 quand même :D

ceci était un communiqué de Julian, adepte du micro blogging ;)
Non, enfait le truc, c’est que maintenant je fais des “pages” wordpress, et ça apparait pas dans les flux RSS.
Donc personne n’en sait jamais rien, snif..

Opensource Business Models

Samedi, février 23rd, 2008

Deux trois schémas de business modèles open source. Je les ai nommés en fonction de ce à quoi ils me font penser.

C’est un brouillon donc je le complèterais de temps en temps, c’est avant tout pour me faire un aide mémoire si jamais j’ai à réfléchir à un financement pour un éventuel projet opensource de type “moyen”.


The reseller

Base logicielle open-source (ex. plateforme mozilla), et extensions (modules) “à la demande”, pour vendre du “packaging”.

Avantages :

  • On peut créer des packages “libres” (si les composants sont en licence libre)
  • On peut créer des packages “non libres”.

Ligne de conduite :

  • Ex les IDE payants basés sur Eclipse, Netbeans, Firefox..

Exemple :Aptana, pleins d’éditeurs basés sur Eclipse, ou Firefox..


Modèle double jeu

Publier le logiciel avec une licence autorisant l’utilisation dans les logiciels libres, mais pas dans les applications commerciales (ex GPL).

Avantages :

  • Si on publie en GPL, ça reste totalement open source et donc la communauté peut récupérer le code, on peut l’utiliser sans problèmes pour des projets étudiants, de recherche etc…
  • Un développeur ou un étudiant habitué au logiciel et l’ayant utilisé sous licence open source sera plus enclin à le recommander pour une application commerciale dans son entreprise par exemple (sous licence payante) c’est donc très astucieux :)
  • Si la licence open source interdit la réutilisation dans des applications commerciales, il y a moins de soucis à se faire (d’un point de vu business/marketing) qu’avec les licences plus “permissives”.

Ligne de conduite :

  • -

Exemple : Qt/PyQt, de Trolltech


Le Dealer

Mettre en GPL la version N-1 de l’application. On continue de vendre la version N.

Avantages :

  • le programme reste gratuit et ouvert, toute la doc existe déjà, et surtout les personnes sachant l”utiliser aussi
  • dissuade la modification d’OpenGL (car tout ajout serait à recommencer dans la version d’OpenGL suivante)
  • L’application commerciale conserve toujours un petit plus “business” : docs, features de dernières minutes, suivi des tendances
  • La communauté libre a intérêt a voir le projet développé de manière industrielle, puisque cela fait évoluer la version opensource (à la même fréquence, mais à un niveau différent)

Ligne de conduite :

  • Release often and early :) pour décourager la concurrence de modifier le produit pour l’améliorer.
  • Suivre la communauté pour directement intégrer les requêtes de fonctionnalités dans la version commerciale
  • La version N-1 doit reste utilisable quand même, sinon personne ne l’utilisera !

Exemple : Silicon Graphics, avec GL et la version “alter” OpenGL


Modèle Deluxe

Mettre dans le domaine publique une version “light” de la version courante. On vend des versions à valeur ajoutée, avec des fonctions adaptées aux entreprises par exemple (possibilité de faire des plugins etc..)

Avantages :

  • La version opensource est la dernière mise à jour, et pas une version en retard par rapport à”l’époque”
  • La version opensource reste modifiable par la communauté si ils le souhaitent
  • L’application commerciale conserve toujours un petit plus “business” : docs, features de dernière minute, suivi des besoins des clients..

Exemple : Toutes les version “openXXXXX” ou “community” qu’on peut rencontrer : solaris, suse, des éditeurs UML…


Libre Service

Aux modèles précédents peuvent se greffer des services :

  • support
  • consulting
  • formations
  • version modifiée pour chaque client..

Ces services peuvent aussi purement et simplement justifier le tarif d’un “package” applicatif, qui serait alors totalement mis dans le libre, à la version N.

Avantages :

  • Approche professionnelle et industrielle.
  • L’application sera entièrement libre et donc sûrement récupérée ou modifié : mais en contrepartie elle bénéficiera d’extensions, plugins, libres ou non, de partenariat… tout ceci participant à la diffusion de l’application. Très positif.

Ligne de conduite : Il faut un bon support technique, doc etc.. toute cette partie doit être irréprochable.

Exemple : nombreux


L’ange gardien

Application 100% libre. Fonctionne par dons, dans une entité indépendante. Le business se fait par une entreprise de services et/ou consulting et/ou formation à part, et qui utilise l’outil libre avec de la valeur ajoutée.C’est un peu comme la version précédente, sauf que c’est un peu plus “séparé”.

Avantages :

  • L’application se développera grâce aux dons et aux développeurs bénévole
  • Ca a le mérite de ne pas associer l’application à une boite “commerciale et lucrative”. en contrepartie la boite de service sera un peu plus anonyme par contre, et clairement exposée à la concurrence…

Note : cette liste n’a pas la prétention d’être pertinente ou exhaustive malgré son titre tape à l’oeil. Elle le sera peut-être un jour, je la modifierais au fur et à mesure de l’évolution des choses

interface de test

Mardi, octobre 23rd, 2007

Bonjour chers lecteurs trice(s), en exclu, l’interface web d’un moniteur de tests que je fais en ce moment au stage!

snapshot3.png

finalement j’aime bien ce style sobre en noir avec une petite ombre css,
je pense que je vais le réutiliser sur ce blog ou ailleurs, pour mes projets!

l’appli en elle même c’est un module Perl qui teste.. des modules Perl,
ou une distribution SVN complète, et stocke les rapports de test sur le SVN aussi
(ça permet de centraliser tout, au prix d’une petite incrémentation de révision à chaque test :)

Bot irc multi-réseaux en python

Mercredi, octobre 10th, 2007

Le bot irc du salon #z sur teepi (et autres).

Notez qu’il ne fait rien à part transmettre les messages de réseau en réseau (mais c’est son seul but aussi…)
par contre ça peut vous aider si vous êtes en manque d’inspiration de code python pour l’irc.

Je ne répond de rien si le bot plante chez vous, il a été programmé en 2 jours et ya pas de syncro sur les threads (plus particulièrement pas de section critique sur les opérations touchant à la liste des threads, seul point litigieux imho)

si vous n’aimez pas le frisson des threads hasardeux (hey, c’est un bot irc…) vous pouvez les rajouter.

(Lire la suite…)

Création d’une page html à partir d’une liste Lisp

Mardi, octobre 9th, 2007

 Si vous vous demandez comment générer des fichiers en Lisp, c’est par ici…

Disclaimer: Ce n’est pas un script prévu pour générer du html strict, mais plutôt un exemple sur les flux de fichiers en Lisp.

(Lire la suite…)