Avenir de Cauldron

10 views
Skip to first unread message

Paul TOTH

unread,
Jun 9, 2010, 9:34:25 AM6/9/10
to freebox-elixir
Bonjour,

je n'ai pas eu le temps de travailler sur Cauldron ces derniers temps, mais je voulais savoir si vous trouviez un intérêt dans ce type de projet...car je pars pour la Réunion à la fin du mois et ne serais plus abonné chez Free faute d'offre...je pourrais continuer à jouer avec Elixir sous Linux, mais il me sera impossible de tester sur la Freebox.

Or donc, si je passe du temps sur Cauldron, il me faudra des gens pour tester en réel sur Freebox...d'où ma question :)

Merci
Paul

Lineplus

unread,
Jun 9, 2010, 9:51:55 AM6/9/10
to freebox-elixir
Bonjour,
Je serais bien intéressé par la reprise de Cauldron (d'ailleurs, j'ai
commencé à coder quelques objets en plus) :) .

PS : Et ce serait sympa de mettre Cauldron en LGPL plutôt qu'en GPL,
pour ceux qui codent un truc pas libre ou un truc avec une licence BSD-
like et qui ne souhaitent pas mettre leur programme sous GPL :) .

Paul TOTH

unread,
Jun 9, 2010, 10:19:19 AM6/9/10
to freebox...@googlegroups.com
je suis très partagé sur la question du LGPL

je code en Delphi du GPL depuis de nombreuses années, un jour je me suis dit que ça serait sympa de gagner quelques euros avec mes produits gratuits...(SIPInside est un des plus notable)...ben j'ai du récolter 30€ en tout et pour tout.
A côté de cela j'ai régulièrement (bien que pas souvent) des demandes de dev autour de SIP. Mais dès que j'annonce un tarif ça leur parait trop cher. Bref les gens veulent tout pour rien !

en GPL je ne doute pas un instant que je puisse me faire pomper mon code, mais au moins c'est illégal et limité aux fraudeurs. en LGPL j'autoriserais n'importe qui à utiliser mon code pour rien...pourquoi ferais-je cela ?

Maintenant si tu veux faire un fork sous licence privée de Cauldron, je peux te vendre les sources...et c'est en général là que s'arrête la discussion :)

Lineplus

unread,
Jun 9, 2010, 10:31:24 AM6/9/10
to freebox-elixir
Non, ça ne m'intéresse pas, je demandais juste pourquoi tu préférais
la GPL à la LPGL :) .

Paul TOTH

unread,
Jun 9, 2010, 10:32:57 AM6/9/10
to freebox...@googlegroups.com
ben voila, c'est ce que je disais :)

Lineplus

unread,
Jun 9, 2010, 10:57:25 AM6/9/10
to freebox-elixir
Je voulais dire, pas intéressé par le rachat de Cauldron, mais
toujours intéressé par sa reprise (sous GPL) :) .

nouknouk

unread,
Jun 9, 2010, 12:32:03 PM6/9/10
to freebox-elixir
Hello, (et désolé d'avance pour le pavé).

Je ne comptais pas en parler avant qu'elle soit releasée, mais bon...
Pour info j'ai dans mes cartons une librairie (qu'on va appeler pour
le moment 'elixirPulp') qui se rapproche de Cauldron dans l'esprit: la
lib est une sorte de wrapper au dessus d'EVAS qui permet surtout
fournir une API simple, concise, immédiatement compréhensible,
mémorisable, et orientée objet. Comme Cauldron, elle devrait avoir de
l'intérêt surtout pour les irréductibles réfractaires au format
EDJE ... comme moi ;-)

Je pense qu'elixirPulp va déjà un peu plus loin que la lib Cauldron et
pourra pleinement la remplacer à terme. Donc si ton objectif est de ne
pas laisser mourrir le concept de Cauldron, je pense qu'elixirPulp
pourra éventuellement être une alternative viable.
Je suis d'ailleurs un peu comme toi, et même si personellement je vois
l'intérêt d'une telle lib pour moi-même, j'ai du mal à évaluer si ça
peut intéresser un peu/beaucoup de monde ou pas du tout.

Cédric a déjà eu entre les mains une pré-version à peu près
fonctionnelle il y a quelques semaines ; elle a évolué depuis et on
approche du but. Je la releaserai "when it's done" (comprendre
"bientôt", mais je ne veux/peux pas m'avancer sur une date précise).
Il me reste surtout à nettoyer un peu le code, ajouter quelques
commentaires, virer un ou deux bugs, et ... faire une vraie doc et/ou
quelques exemples qui servent de tutoriels.

Dans sa version actuelle (environ 2000 lignes de code), elle gère
entre autres:

- l'initialisation automatique d'elixir et de ses modules.

- la notion de 'stage', pour la gestion du canvas, de la 'game logic
loop' et plus globalement de tout ce qui peut être vu comme un
singleton dans une appli elixir (les input notamment).

- des classes JS reprenant les principaux objets EVAS, ici appelées
'sprites' (image (animée), rectangle, ligne, texte, ...). On retrouve
à peu près toutes les propriétés des objets (position, alpha,
couleur, ...) et quelques autres en plus (genre la notion de point
d'ancrage).

- la notion de 'scène', l'équivalent d'un sceneGraph où les objets
graphiques sont hiérarchisés. Les noeuds du graphe étant des sprites
spéciaux, les 'groupes'. Ceux-ci permettent d'appliquer des
transformations à l'ensemble de ses 'enfants' (position, alpha, ...) ;
les feuilles du graphe étant les sprites décrits ci-dessus (image,
rectangle, ...).

- la notion d'animation avec la possibilité d'animer (de façon
linéaire ou non) à peu près l'ensemble des propriétés des objets
(position, alpha, couleur, images, ...).

- la notion de timeline qui est une sorte de super-animation: un
regroupement d'animations et d'événéments qui peuvent être bouclés,
avancés, reculés, stoppés, repris, ...

- une gestion des inputs avec la télécommande avec une approche
'statefull' (genre des fonctions isKeyPressed, isKeyReleased, ...)
ainsi que la possibiltié d'utilsier le pavé numérique pour entrer du
texte, à la façon dont on écrit un sms sur un téléphone portable.



Voilà dans l'esprit. Pour avoir plus d'idées sur la tête que peut
avoir l'API, il suffit de jeter un oeil à un autre projet (en Java
pour le coup): PulpCore dont l'API d'elixirPulp est fortement
inspirée, d'où le nom d'ailleurs ( http://www.interactivepulp.com/pulpcore/
).



Pour la licence, j'avoue que je n'y ai pour le moment que très
brièvement pensé et il y a pas mal de chances pour que j'opte pour une
des deux solutions suivantes:

1- soit un mix de deux licences: une licence gratuite en 'GPL' pour
les projets non-commerciaux (donc appli elle-même obligatoriement en
open source) + une licence 'commerciale' (payante-peu-chère) pour les
projets closed source. L'avantage serait d'encourager les projets open-
source tout en laissant la possibilité de l'utiliser pour du closed
source. Pour ceux qui connaissent, c'est exactement l'équivalent du
système de double licence de la librairie Qt à ses débuts.

2- soit mettre le tout en LGPL pour contenter tout le monde, mais cela
risque de ne pas encourager les projets open source.

Bref, je verrai le moment venu et je ferai mon choix ... en mon âme et
conscience :o)



Nouk²





PS: Pour donner une idée de la 'gueule du code' quand on utilise
elixirPulp, voici un exemple de code auto-suffisant pour afficher un
hello-world et un carré animé, changer de résolution et quitter.

elx.include("elixirPulp.js");
var stage = new Stage();
stage.createCanvas( (720 , 576, 50); // (width, height, fps)

// l'objet dérivé de Scene qui va contenir mon sceneGraph
var maScene = new Scene.extend({
constructor: function() {
this.base( 720, 576, "MaScene");

// on créé une image et on l'ajoute à la scène.
this.back = new ImageSprite( 0, 0, "background.jpg");
this.back.setAnchor(Anchor.SOUTH);
this.addSprite(this.back);

// idem mais en plus concis (on peut presque partout concaténer les
appels de fonctions sur une ligne).
this.text = this.addSprite( new TextSprite(360, 200, 720, 50,
"Hello, world !", [0,255,0], "Vera",
26).setAlpha(127).setAnchor(Anchor.CENTER) );
this.carre = this.addSprite(new RectangleSprite(300, 300, 100, 100,
[255, 0, 0]));

// une animation du carré rouge, basée sur une timeline qui boucle 3
fois puis s'arrête.
var anim = this.addTimeline(new Timeline().addAnimator(this.carre,
Action.POSXY, [300, 300], [500, 300], Easing.ELASTIC).setLoop(3));
}

// la fonction appelée à chaque 'frame' pour la scène courante.
update: function(elaspedTime) {
// pour quitter
if (stage.input.isKeyDown("Home"))
stage.shutdown();

// switch 4/3 <=> 16/9
else if (stage.input.isKeyReleased("x")) {
stage.resizeCanvas( (stage.width == 720 ? 1024 : 720), 576);
}
}
});

// on choisit la scène à afficher et on lance le bouzin.
stage.setScene(maScene);
stage.exec();

Paul TOTH

unread,
Jun 9, 2010, 3:11:13 PM6/9/10
to freebox...@googlegroups.com
excellent :)

j'ai tendance à éclater beaucoup plus mon code (c'est obligatoire en Pascal/Delphi) car je trouve ça plus facile à maintenir...mais ça doit être aussi une question d'habitude.

as-tu réussi à porter des démos de pulpCore sur Elixir ? :) 

malgré la demande, je n'ai jamais réussi à vendre en double licence mes produits GPL...c'est une raison de plus de de ne pas passer en LGPL :)

la LGPL a un intérêt pour promouvoir le libre quand il existe une concurrence payante...sinon c'est suicidaire.

nouknouk

unread,
Jun 9, 2010, 5:53:52 PM6/9/10
to freebox-elixir
re,

On 9 juin, 21:11, Paul TOTH <papa2enfa...@gmail.com> wrote:
>
> as-tu réussi à porter des démos de pulpCore sur Elixir ? :)
>

Non, mais ce n'est pas l'objectif ; j'ai dû mal m'exprimer: quand j'ai
pris l'exemple de PulpCore, c'est pour "l'esprit" de la lib et de son
API. Notamment certaines fonctionnalités et leur regroupement dans
certaines classes (Stage, Scene, Sprite, Group, Timeline, Easing,
Animators, Input).

Mais au delà de "l'esprit" de l'API, elixirPulp ne se veut pas un
portage de PulpCore sur freebox ; de toute façon, le hard de la box +
le Javascript est loin de ce que peut proposer le hard d'un ordi (même
pourrave) + Java.


> malgré la demande, je n'ai jamais réussi à vendre en double licence mes
> produits GPL...c'est une raison de plus de de ne pas passer en LGPL :)

Mon objectif n'est pas de faire de l'argent avec la lib ; j'ai un vrai
boulot pour ça ... et heureusement ;-)
Si je décide au final d'opter pour le système de double licence, ce
sera avant tout pour inciter les projets open source à voir le jour:
de la même façon que je compte partager une lib dans laquelle j'ai
investi un peu de mon temps, je trouve que ce serait sympa que
d'autres n'hésitent pas à partager certaines des applis qu'ils feront
avec cette lib.

> j'ai tendance à éclater beaucoup plus mon code (c'est obligatoire en
> Pascal/Delphi) car je trouve ça plus facile à maintenir...mais ça doit être
> aussi une question d'habitude.

Disons que "qui peut le plus peut le moins". J'ai aussi tendance à ne
pas surcharger le code ; je trouve que la relecture en est facilitée.
Mais dans certains cas, je trouve dommage d'écrire 3 lignes quand une
seule ligne 'claire' suffit. Typiquement, je préfère:

myScene.addSprite( new RectangleSprite(100, 100, 50, 50,
[255,255,255]).setAnchor(CENTER) );

... plutôt que:

var myRect = new RectangleSprite(100, 100, 50, 50, [255,255,255]);
myRect.setAnchor(Anchor.CENTER);
myScene.adSprite(myRect);

... même si les deux resteront bien sûr possibles et équivalents.
Bon, après, c'est plus une question de goût et un détail qu'autre
chose.


Nouk²

nouknouk

unread,
Jun 16, 2010, 5:12:13 PM6/16/10
to freebox-elixir
(vu sur le topic de BounceBox, j'y réponds ici)

On 16 juin, 23:00, Lineplus <marin.st...@gmail.com> wrote:
> Je vois que tu as choisi la licence d'Elixir-Pulp :-° .

Non, toujours pas à vrai dire, je n'ai pas vraiment eu le temps de me
pencher sur la question car je suis concentré sur la finalisation de
BounceBox pour le moment.

D'ailleurs je ne vois pas ce qui te fait penser que j'ai choisi une
license. Si c'est parce que BounceBox est closed-source, ça n'a rien à
voir: BounceBox est closed source pour des raisons de hack du serveur
de jeu (*); ça ne m'empêchera pas de choisir une licence indépendante
pour elixirPulp au moment de sa publication.

Nouk²


(*) comprendre: si je veux faire le même BounceBox en open-source, ça
risque de me demander beaucoup plus de travail côté client comme côté
serveur pour arriver au même résultat en y ajoutant de quoi éviter un
maximum la triche et les hacks.
Reply all
Reply to author
Forward
0 new messages