“Le libre doit être gratuit!” Mais oui, pis tu veux 100 balles et un Mars avec?!?

L’autre jour, en lisant mon Twitter, je suis tombé sur un article (“Vendre des logiciels libres, une hérésie ?”) qui m’a donné envie d’écrire aussi mes pensées sur ce sujet, celui de Philippe Scoffoni.

Combien de fois, en se baladant sur internet, sur différents forums, par exemple celui ubuntu-fr.org, des utilisateurs qui disaient “Le libre doit être gratuit”?!? Beaucoup trop souvent en tout cas. Que doit-on en penser? Ont-il raison? Tort? Sont-ils aussi idiots qu’il le montrent? Je vais exposer mon point de vue sur ce sujet sensible au troll…

Libre? Kézako?

Tout d’abord, situons un peu plus. Je vais principalement parler des logiciels, étant plutôt développeur, mais cela peut concerner tout aussi bien la musique, que les photos.  Ce qui est considéré comme libre, c’est quelque chose que nous pouvons reproduire à souhaits, donner à son ami qui est pauvre, l’utiliser comme bon nous semble, etc. Bien sûr, il peut y avoir certaines restrictions, par exemple de citer l’auteur, ou de ne pas le modifier. Pour un programme, on considèrera comme “libre/open source” plus ou moins quand les sources sont publiques, même si ça n’est pas réellement le cas.

Les grands avantages de ceci, c’est la possibilité de voir facilement les failles possibles, et surtout pouvoir modifier le programme, ou le script, pour qu’il corresponde à nos envie. C’est chouette non? Pouvoir modifier ce truc, et en faire un truc personnalisé, avec les failles du développeur du dimanche en moins.

Maintenant… Si vous voulez modifier un peu l’interface d’un programme, 2 choix sont là.

Premier choix, le logiciel payant: C’est “possible”, mais va falloir s’amuser un moment, et ce sera du bricolage. C’est un peu nul quand même.

Deuxième possibilité, le logiciel libre : on récupère les sources, modifie ce qui nous plaît pas (il faut les compétences quand même^^), on compile, et on a réalisé quelque chose de beaucoup plus propre!

Donc le libre, c’est bien, c’est beau, et en plus c’est gratuit!

Le problème avec ceci, c’est que beaucoup de personne confonde libre avec gratuit. Ben oui, ça paraît logique, on peut avoir les sources etc, pourquoi devrait-on encore payer? Et c’est là un gros problème de la société, on veut pas payer, surtout si c’est pour une utilisation “unique” (j’suis du genre aussi, je comprends donc tout à fait :) )

Bon, je paierai pas ton logiciel libre alors!

Excellent choix Monsieur! Télécharge moi tous ces beaux logiciels que quelqu’un a développé gracieusement, afin de nous aider!

Il est vrai qu’en général, beaucoup de logiciel libre sont gratuits pour tous. Par exemple, la plupart des distributions Linux (Ubuntu/Debian/Gentoo/ArchLinux/…), c’est un très bon remplaçant de Windows, et ça  nous évite de le pirater, nous ne serons donc pas hors-la-loi.

Il est aussi vrai que de premier abord, la plupart des logiciels libre paraissent moins performants que leur concurrent propriétaire, et je dois dire qu’en général, c’est vrai. Je vais prendre par exemple Photoshop, comparé à son concurrent libre, Gimp. Y’a pas photo, Photoshop est bien plus user-friendly, et plus complet que Gimp, avec ses 20 fenêtres ouvertes pour gérer ses calques, couleurs, et compagnie. Donc pourquoi payer pour un logiciel libre, si il est moins bon que le concurrent payant, que je trouve sur n’importe quel réseau de téléchargement (Torrent/DDL/P2P).

Le problème, c’est que le développement c’est du temps et de l’argent. Prenons par exemple une personnes développant un système de “chat”, pour concurrencer msn, il lui faudra :

  • Un ordinateur pour développer
  • Un serveur pour gérer les connexions des utilisateurs
  • Un serveur Web pour présenter le projet, le mettre à disposition, etc..
  • Des livres pour apprendre (facultatif)

Et tout ça, ce n’est malheureusement pas gratuit.

Pour ça, il y certaines grosses sociétés/fondations qui sont derrière ces logiciels libres. Par exemple “Canonical” avec Ubuntu, la fondation “Mozilla” derrière Firefox, ou la fondation “Eclipse”, qui est derrière Eclipse. Ces entreprises arrivent à lever de l’argent, grâce aux actionnaires, aux dons des utilisateurs, ou tout autre moyen.

Mais ce n’est pas le cas du petit développeur, tel que moi, ou un étudiant ayant une bonne idée, qui lui doit sortir cet argent de sa poche. Comment font-ils? Il est certain que ça ne dérange pas tous les développeurs, que certains ont juste envie d’aider les utilisateurs, et de leur offrir la meilleure expérience possible, et gratuitement, sur le temps libre. Et d’autre, aimerait pouvoir gagner un peu d’argent, pour arrondir les fins de mois, ou même, si possible, y vivre!

A ce moment là, 3 choix sont possibles pour cette personnes.

  • Faire du propriétaire, et faire payer le logiciel
  • Faire du libre, et “demander” des dons
  • Faire du libre, et faire payer le support
  • Faire du libre, et le faire payer

C’est un choix qui peut s’avérer difficile.

  • Le premier choix, je suis certain d’avoir du pognon, c’est le top. Mais pour l’acheteur, impossible de le modifier pour l’intégrer comme il l’aimerait, ou rajouter une fonction. C’est dommage
  • Le 2ème choix, j’espère en avoir, mais la communauté sera normalement très contente. Ils peuvent en faire ce qu’ils en veulent
  • Le 3ème choix, c’est un des choix le plus souvent utilisé. C’est vrai que c’est pratique, le logiciel est gratuit, mais si on veut de l’aide, ou n’importe quoi, on paye. Pourquoi pas? Mais c’est pas certain que les utilisateurs vont vraiment prendre ce support.
  • Et le 4ème choix, je suis certain d’avoir du pognon, et la communauté pourrait être contente, car elle a en plus le droit d’améliorer le programme afin de l’intégrer au mieux dans l’entreprise. Mais je risque d’avoir moins d’utilisateurs qu’avec le 2ème choix.

Personnellement, le choix qui m’intéresserait le plus, ce serait le 4ème. J’ai moyen de faire plaisir, et j’ai un revenu “fixe”.  C’est le top. (Et vous? N’hésitez pas à répondre en commentaire, vos avis m’intéressent)

Le problème de la licence

Maintenant, un problème se pose tout de même. Admettons qu’on vende un de ces logiciels. Avec la majorité des licences libres existantes (GPL/MIT/Apache/CC/…), n’importe quel acheteur peut le redistribuer gratuitement sur un site connexe. Au final, si cela se produit,  l’utilisateur ira voir l’autre, avec le même software, mais gratuit. Pour “contrer” cela, une seule possibilité, demander aux acheteurs de ne pas redistribuer gratuitement, et/ou de modifier et redistribuer sans l’accord du propriétaire (donc vous). ILS NE SERONT PAS OBLIGE DE LE FAIRE, mais essayons de faire confiance à notre utilisateur :)

Dans un prochain article, je vais essayer de vous montrer les différentes licences existantes, leurs défauts et leurs qualités.

Liens intéressants :

Whitepaper sur les modèles économiques du libre

Framagora – Forum “Mise sous licence libre : questions pratiques et juridiques”

L’article de Philippe Scoffoni

[Blackberry]RemotePowerpoint, control your presentation remotely [BETA]

Hello everybody!

This is my first BlackBerry project, and I give you the opportunity to try and use it!

My project is an app to control a Powerpoint remotely, for the moment only via Bluetooth, and maybe later via Wi-FI too.

It will work only with Blackberry having a Full-Keyboard (like 8900, 9000, 9700, etc..), and Bluetooth. I haven’t tried it on 4.x firmware, but I think it should work (need confirmation)

RemotePowerpoint is really easy to use. Launch the app on your Blackberry, and on your computer, choose the computer which is running RemotePowerpoint in the device list shown after 10 seconds

and you’re connected.

If you have any problem to find your computer, you’ve to re-launch the app for the moment. I haven’t implemented a way to “refresh” the list again (in my to-do list)

When you’re connected, and after MS Powerpoint is launched, you can press “S”, and your powerpoint will start in fullscreen. Then press “N” or “Space” to move to next slide, and “P” to go previous.

There is a timer on the screen. You can start/stop when pressing “T”. To reset it, press “R”.

It is better to start the bluetooth from the Blackberry, in “Manage connections”, than to start it while RemovePowerpoint is starting.

If you want to download this app from your BB, go to http://blackberry.rocks-it.com, and you’ll find a link named “RemoteBlackberry”.

The desktop application can be download from here

If you try it, give me some feedbacks (good or bad), and I’ll take all what you say into consideration. And if you have ideas to improve this app, say it, and I’ll do all what I can to implement it for the next version.

If you find this app cool and/or useful, or just because you want to motivate me… Buy me some beers!



Summary

You need Java on your computer

The application needed on your computer can be found here

Go to http://blackberry.rocks-it.com with your Blackberry to download this app. !!! UPDATE Link is invalid for now. If you really need this app, please email : admin*AT*scboffspring.eu (replace *AT* by “@”)!!!

Be careful! This is Beta 0.1, bugs probably exists..

PS: Sorry for my english, it isn’t my mother tongue…

[PlayFramework] Premier jour de jeu!

Aujourd’hui, comme annoncé dans mon dernier article de la nuit passée, j’ai donné une chance à ce récent framework Java, permettant le développement web, j’ai nommé Play!

Ce que j’ai fait

Tout d’abord, j’ai commencé par télécharger ce framework, voir comment il était structuré, ce qui était possible, ce qu’il y avait fourni avec, etc…

Alors, fourni en téléchargement, il y a :

  • Documentation du framework, dans son dossier
  • Le framework en lui-même, avec les sources!
  • Python, pour l’utilisation sous windows de l’invite de commande permettant de créer un projet, lancer le serveur, etc…
  • Le plugin pour eclipse
  • Et bien sûr, l’invite de commande de Play

J’ai donc installé le plugin, et configurer mon eclipse afin de pouvoir travailler convenablement^^. Pour installer le plugin, rien de plus simple, il suffit d’ajouter le .jar se trouvant dans support/eclipse dans le dossier d’eclipse, et le tour est joué.

Ensuite, je me suis dirigé vers le guide se trouvant sur le site du framework, et je l’ai suivi pour réalisé ce blog.

Et pour finir, j’écris ce billet pour vous dire ce que j’ai apprécié, et ce que j’ai moins aimé en développant avec Play!

Ce que j’ai apprécié

Premièrement, la simplicité de développement. Mes souvenirs de JSF, un immense paquet de fichiers XML où il faut configurer 452 choses pour pouvoir déjà rien que lancer l’application, et après, un espèce de patchwork à mettre en place, qui une 1 sur 2 ne marchais pas. Ici, avec Play!, je n’ai pas eu ce genre de soucis. J’ai créer mon projet, j’ai appelé la commande pour réalisé les fichiers eclipse, j’ai importé le projet, j’ai configurer la base de donnée, et j’ai lancé le serveur pour voir si tout marchait ! Ensuite, c’est du Java, que je connais plutôt bien, et du HTML/CSS/JS pour l’affichage. Seul truc qui peut dérouter un peu au début, c’est la syntaxe pour les templates, mais on retrouve le droit chemin rapidement!

Deuxièmement, le serveur. Ça paraît con, mais ne pas avoir besoin de relancer le serveur, et de “rebuild” l’application à chaque modification, c’est vraiment plaisant ! Avec JSF, j’étais toujours en train de build, et perdais un temps monstrueux, maintenant, je modifie mon fichier, j’enregistre, je vais sur mon navigateur, et c’est déjà là. Même la base de donnée! On modifie le model, et c’est pris en compte directement.

Troisièmement, le MVC. Toujours été fan d’une bonne organisation, et là, c’est le cas, donc tant mieux. Il est vrai qu’avec Java, on a souvent le droit à du MVC, ce qui me fait du bien en pensant à PHP^^

Pour finir, je dirais la logique de développement. Le but est de faire le code une fois, et après, on ne fait pas de copier/coller comme je réalisais parfois avec PHP. Là, c’est organisé tellement bien, que c’est presque impossible de ne pas faire du code DRY (Don’t Repeat Yourself).

Ce que j’apprécie moins

Personnellement, je n’ai pas vu grand chose que je n’apprécie pas. Peut-être une ou deux choses mineurs.

Tout d’abord, au niveau de la façon de récupérer les objets dans la base de données.

Avec Play, pour récupérer par exemple les “Posts” d’un blog, le code est le suivant :

List<Post> olderPosts = Post.find("order by postedAt desc").from(0).fetch(10);

Je pense, personnellement, que la façon de rechercher avec Ruby on Rails, et plus pratique, et plus clair. Par exemple, pour ici, ce serait :

HashMap<String,String> params = new HashMap<String,String>();
params.put("order","order by postedAt desc");
List<Post> olderPosts = Post.find("params").from(0).fetch(10);

C’est un choix du développeur, mais je vois qu’il est aussi possible de remplacer “order by postedAt desc” par la requête complète. Je ne connais pas encore assez le “JPA” utilisé dans le framework pour vraiment m’avancer, je trouve dommage.

Autre chose, qui est peut-être dommage, le nom-support de base du module de “CRUD” et de “Security”. Même si c’est trèèès facile à ajouter, je pense qu’ils sont/seront tellement utilisés, qu’il est dommage de devoir les activer manuellement.

Conclusion

Je suis VRAIMENT satisfait de ce Framework, et je vais développer mon prochain site grâce à lui. Dans la logique, il est proche de Ruby on Rails, et c’est quelque chose qui me plaît beaucoup.

Avantages

  • Logique de développement DRY
  • Support de toutes les librairies de Java
  • Facilité de prise en main
  • Guide complet (même si 1 ou 2 erreurs sont présentes)
  • La “compilation” à la volée
  • Possibilité d’exporter sous format “war” compatible Glassfish/Tomcat/etc…
  • Module “Security” et “CRUD” vraiment pratique

Inconvénients

  • Communauté encore réduite
  • Gestion des objets relationnels pas encore terminé à mon goût

Je dirais donc… Foncez ! Essayer, c’est l’adopter !

Et dans quelques jours, je ferai un prochain article sur la gestion du Multilingue, de l’implémentation d’AJAX, et d’autres choses intéressantes que je trouverai d’ici là!