Aller au menu - Aller au contenu

Sortie du framework web Nitrogen

Revenir à la liste des news
Participer à la discussion

Informations

Contributeur(s) : rks`
Publié : le 24/11/2008 à 06:59:16
Catégorie : Programmation
Visualisations : 3 017

Sortie du framework web Nitrogen

S'il y a bien une nouvelle qui a surpris toute la (petite) communauté des amateurs du langage Erlang ces derniers mois, c'est celle-ci : la publication d'un framework web complet pour le développement rapide d'applications « Web 2.0 ». Mais il y a mieux : son créateur est un parfait inconnu de la communauté, et le tout sort avec une vidéo de présentation qui singe celles que l'on a pu voir à la sortie du célèbre Ruby on Rails. Son nom ? Nitrogen.

Rusty Klophaus, car tel est le nom du père du framework, a d'ailleurs su cultiver l'effet « buzz » de son annonce. Le 16 octobre, quelqu'un poste sur la section de reddit consacrée à Erlang un message mentionnant la sortie d'un framework web orienté évènements, pour Erlang. La réaction de Klophaus ? Quasiment nulle : le développeur se contente de donner quelques réponses à ce message ainsi qu'un lien vers une vidéo de démonstration, et d'ajouter que la source ne pourra être téléchargée qu'à la mi-novembre.

Nombreux étaient les impatients !

Un framework web qui fait envie



Bien sûr, il faut relativiser le côté exceptionnel de l'affaire. Des frameworks web, il en sort tous les jours, et pour tous les langages. C'est à se demander s'il n'y a pas plus de frameworks différents que de sites pour les utiliser !

Ainsi, même si Erlang a été initialement développé par Ericsson pour gérer des réseaux téléphoniques (voir une précédente news sur Ejabberd, un serveur XMPP développé en Erlang), son utilisation s'est démocratisée peu à peu, et il existait déjà des projets de framework web. Par exemple, Erlyweb, développé par Yariv Sadan, qui n'a malheureusement jamais atteint de version stable.

Des exemples très Web 2.0



Image utilisateur
Mais c'est là que Nitrogen a suscité l'attention : Klophaus en a retardé la sortie exprès pour donner un peu de consistance à son projet. Ainsi, il prouve l'utilité de ses travaux en fournissant deux exemples de sites qui l'utilisent.

Le premier, Stitcho, vous permet d'être prévenu quasi immédiatement à la sortie d'un nouvel article (ou d'une nouvelle news) sur vos sites favoris. Vous pouvez télécharger un petit client (pour Windows ou Mac OS X) qui fera automatiquement le lien avec le serveur de Stitcho, lui-même s'occupant de surveiller les sites. Un développeur peut également l'intégrer à son site, de façon à ce que ses utilisateurs bénéficient du plus grand nombre de notifications possibles.

Le second exemple est du même genre : em5k permet au webmestre de visualiser le trafic sur son site. Pour cela, il lui suffit de placer sur ses pages un petit code JavaScript qui contactera em5k… et il sera alors possible de récupérer un graphique indiquant la fréquentation du site en fonction du temps.

Quelques caractéristiques



Des généralités



Ces deux applications ont un point commun : elles nécessitent une grande disponibilité du service, qui peut être très sollicité à n'importe quel moment, et qui doit pourtant rester actif. Ça tombe bien, c'est ce pourquoi Erlang existe !

L'utilisation de Nitrogen fait donc sens. Entrons un peu dans les détails : développé en Erlang pour Erlang, il supporte les serveurs Yaws, le plus populaire des serveurs HTTP écrits en Erlang, ou Mochiweb, un projet encore jeune qui vise la légèreté et la gestion d'une quantité importante de connexions simultanées. Le choix de la base de données est laissé à l'utilisateur : Mnesia, PostgreSQL, MySQL...

Naturellement, impossible de prétendre être un serveur d'applications Web 2.0 sans support de la technologie Ajax : tout Nitrogen s'appuie sur la bibliothèque Scriptaculous, à l'instar de RoR ou Seaside. Naturellement, si cette bibliothèque est intégrée dans Nitrogen, c'est pour que son utilisation soit transparente. C'est donc principalement en vous servant d'une fonctionnalité intéressante de Nitrogen, les éléments, que vous utiliserez Scriptaculous.

Les éléments Nitrogen



Bien que le concept soit encore en développement, Nitrogen s'appuie sur les éléments pour modeler les pages. Le développeur construit la page en utilisant, à la place d'un code balisé habituel, des records (enregistrements) Erlang. Voici un petit exemple :

Code : Erlang
1
2
3
4
5
6
7
Body = #body { body=[
    #panel { body=[
        #label { text="Ceci est un label." },
        #label { id=label1, text="Ceci est un autre label, avec un nom." },
        #button { id=button1, class=mybutton, text="Pressez-moi !" }
    ]}
]}


Comme vous pouvez le voir, la structure de la page est entièrement construite en Erlang (les éléments intérieurs à d'autres se rangent dans des listes). Ce système n'est absolument pas novateur, mais tout de même plus confortable que les équivalents qui lui précédaient dans le langage Erlang.

A priori, rien de bien surprenant donc, et vous pourriez penser que ce sont juste des balises retranscrites. Mais le développeur est invité à définir ses propres composants, ainsi que le code qui produit la sortie HTML.

Plus intéressant encore, il est possible, à la création ou plus loin dans le code, de relier des évènements aux éléments (si vous étudiez un peu le code ci-dessus, vous verrez que certains éléments sont nommés). On peut ainsi relier facilement un comportement particulier à un élément de la page, juste avec son nom. Et un évènement.

Orienté évènements



La particularité la plus importante de Nitrogen est en effet de proposer une conception « orientée évènements » des applications, alors que la plupart des frameworks web actuels présentent plutôt un modèle MVC. La raison évoquée par Klophaus est que, si les gens aiment le modèle MVC pour le développement web, c'est parce qu'il apporte de l'ordre et un peu de rigueur à des langages de scripts qui permettent facilement d'en manquer. Selon lui, Erlang, en tant que langage fonctionnel, n'a pas besoin d'un modèle particulier pour être rigoureux. C'est pourquoi un autre modèle peut être envisagé.

Le développeur est donc amené à penser davantage son application en termes d'évènements que le « noyau » de l'application peut recevoir. Ainsi il est très facile de lier un élément de la page à un évènement : on utilise pour cela le champ actions des composants, ou la fonction wire qui relie un évènement à un composant. Concrètement, cela permet par exemple de signaler simplement à l'utilisateur qu'un champ de texte doit être rempli, avec un code du style

Code : Erlang
1
2
wf:wire(boutonPseudo, champPseudo, 
    #validate { attach_to=boutonPseudo, validators=[ #is_required { text="Entrez votre pseudo !" } ] } )


Sur la vidéo présentant Nitrogen, Klophaus montre ainsi que l'on peut facilement rajouter un événement click à une image (par exemple). Encore une fois, pas besoin d'un framework pour savoir faire ça, un peu de JavaScript suffit - mais ici le gain de temps est considérable, et la maîtrise de JavaScript est optionnelle. Il suffit de renvoyer un élément du style

Code : Erlang
1
2
3
4
#image { 
    (...) %% D'autres champs à remplir (notamment l'adresse de l'image)
    actions = #event { type=click, postback={click} }
}


Lorsque l'utilisateur cliquera, l'événement sera transmis au serveur. Il faut donc écrire une fonction qui se charge de récupérer cet événement pour le traiter : la fonction event. D'éventuels paramètres peuvent être fournis, par exemple l'identifiant de l'image. Dans le code ci-dessus c'est IDImage qui joue ce rôle, bien sûr il faudrait le définir avant dans le code.

Toute page Nitrogen doit donc contenir une fonction event, comme ce qui suit :

Code : Erlang
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
event(go) -> 
    (...) %% Code à exécuter par défaut (quand la page ne reçoit aucun événement)
    ok;

event({click, ID}) ->
    (...) %% Code à exécuter quand on reçoit l'événement click et l'identifiant d'une image
    ok;

event(_) ->
    ok.  %% Si on reçoit un autre événement on ne fait rien (ok signifie que tout a bien marché).


Cette façon de définir une fonction event qui doit traiter tous les types d'événements intéressants est peut-être déstabilisante pour les programmeurs qui ne sont pas habitués au style déclaratif. Erlang rend cependant cette façon de faire très simple grâce au mécanisme des clauses.

Un framework prometteur



Ce serait mentir que d'affirmer que Nitrogen est déjà prêt à servir en production. Bien qu'utilisable, le framework est jeune, et son API est susceptible de connaître des modifications.

Cependant, les idées qu'il présente sont intéressantes, et pourraient être très avantageuses à l'utilisation. De plus, la programmation orientée événements colle à merveille à Erlang : ce dernier est après tout un langage concurrent, et les événements Nitrogen ressemblent beaucoup aux messages que peuvent s'envoyer les processus en Erlang.

Nitrogen est donc peut-être l'occasion pour Erlang de sortir enfin de l'ombre, et de dévoiler au grand jour ses qualités certaines pour le développement d'applications serveur ;) .

Liens complémentaires


79 Participations

Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page 1  2  3  Suivante
Pseudo Discussion
2 visiteurs sur cette news (0 membre et 2 anonymes)
Page 1  2  3  Suivante
Hors ligne Artefact2 # Posté le 24/11/2008 à 07:33:08
Avatar

Ville : Reims
Pays : France métropolitaine
Études : Université de Reims

Bravo, très belle news, bien développée et bien expliquée.

Personnellement, par contre, je n'accroche pas à erlang (syntaxe, mode de développement, habitudes toussa²)...
Et, en plus, niveau frameworks web on est déjà bien servis : Django, les innombrables frameworks PHP, RoR, ...
Hors ligne Despirithium # Posté le 24/11/2008 à 08:09:58
Open that shit up !
Avatar

Je suis du même avis que Artefact2, la syntaxe de Erlang est bien différente.
Très belle news sinon :)

Je suis brutal de nature, ne m'en veuillez pas :-°
Et.. tu le ferais pour des Golden Grahams ?

Premier tutoriel : Interagir avec un serveur FTP !

Citation : Ben Venusos..
(19:06:36) Venusos: Sachant que le cul est ce qu'il-y a de plus rentable sur le net :noel:
Citation : Anthony
(21:38:43) Anthony: et après ben venir avec une gueule de cramé et les yeux rouges moi ça me gêne pas xD
Citation : Tweek
Anthony: Par contre
Anthony: depuis quelques jours
Anthony: mon frère se comporte comme un handicapé mental tétraplégique avec son torticolis
Anthony: j'te jure ça craint
Venusos: :noel:
Anthony: On dirait Tweek :noel:
Citation : Womanizer
(18:22:21) Anthony: putain
(18:22:32) Anthony: cette VenetiaPrincess elle fait quand même de bonnes vidéos
(18:23:26) Anthony: bon oui, cette phrase sorti de son contexte pourrait te faire croire à quelque chose de pervers
(18:23:44) Anthony: mais VenetiaPrincess c'est celle qui a fait la vidéo "Womanizer Parodie"
(18:23:53) Anthony: quand je regarde l'originale et la parodie c'est vachement bien fait
(18:24:14) Yann / big_nay: ouais j'avais vu ça ^^
(18:24:22) Anthony: nan mais toi je te fais pas confiance
Citation : Max aka un anonyme sur le SdZ
(17:02:10) Maximilien: tsé tant que ca marche qe le code soit propre ou pas on sen fou
Citation : Confirmation
(18:45:48) Anthony: "(17:02:10) Maximilien: tsé tant que ca marche qe le code soit propre ou pas on sen fou"
(18:46:00) -Dr3cK-: il a raison
Citation
(21:33:06) Venusos: shit j'ai des touches qui marchent plus
(21:33:10) Venusos: cradingues
(21:33:30) Anthony: stop manger des chips sur le clavier
(21:33:45) Venusos: pas un brin
(21:33:51) Anthony: stop gerber
(21:33:54) Venusos: non plus
(21:34:04) Anthony: stop fap
(21:34:19) Venusos: :noel:

Citation : Nouveautés
(22:33:24) Maximilien: Salut Blackis.
(22:33:29) Maximilien: Comment vas-tu?
(22:33:38) Maximilien: Que fais-tu?
(22:33:45) Maximilien: Quoi de nouveau?
(22:33:48) Anthony: Oh
(22:33:50) Anthony: Salut max
(22:33:56) Anthony: ben là je parle à des filles
(22:34:01) Anthony: ça réponds aux trois questions
Citation : Rattrapage
(21:09:01) † Sterinaoe †: juste quand j'ai rien a foutre
(21:09:13) Anthony: en gros t'as rien à foutre quoi
(21:09:22) † Sterinaoe †: ouaaaaai
(21:09:30) Anthony: ::
(21:09:32) Anthony: :!
(21:09:38) Anthony: merdeUH
(21:09:40) Anthony: :/
(21:09:42) Anthony: VOILA
Citation : Histoire d'intérets
(11:00:04) Anthony: (a)
(11:00:14) *naf ·#·$3[ Guigui ]·$ - On Holidays!·0: ?
(11:00:33) Anthony: nan rien j'voulais savoir ce que ça faisait le "( a )"
(11:00:38) Anthony: et sinon ça va ?
Citation : Accident..
(13:18:32) Yann / big_nay: (dis comme ça, on dirait que c'est une radine :-°)
(13:18:42) Anthony: non mais c'est vrai
(13:19:00) Anthony: il manque un centime la maison ça devient Tchernobyl
 
Hors ligne streeter # Posté le 24/11/2008 à 08:34:45
100 citations...
Avatar

Études : ESGI-ICAN

La syntaxe Erlang est une copie de la syntaxe Json version PHP ^^

Sinon belle news merci de l'info :)

Mon site sur les add-ons de WoW.
 
Hors ligne Jinno # Posté le 24/11/2008 à 09:48:36
.͕̳̭͈͍̹̪̄͌͐̑̚
Avatar

Merci bien ;)

2008:
Image utilisateur

Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur









 
Hors ligne wgmpgp # Posté le 24/11/2008 à 10:56:13
Rotoclap true fan
Avatar
Groupe : Bannis

Études : EPITA

Ça me fait beaucoup penser à Seaside au niveau du principe événementiel, toussa. Sauf que Seaside => Smalltalk => OO. Donc à tester, ça peut être que du bon.
 
Hors ligne filc # Posté le 24/11/2008 à 12:12:51

Études : IUT Vannes

Je me suis arréter avant la fin. Je comprends que dalle.... :colere2:

Compte twitter de Lordi-France. Toute les dernières news sur Lordi !
http://twitter.com/lordifrance
 
Hors ligne Ayoros # Posté le 24/11/2008 à 12:24:21
Avatar

faudra que je m'y mette quand j'aurai un peu plus de temps pour moi !
Hors ligne nod_ # Posté le 24/11/2008 à 12:41:05
ninjavascript
Avatar
Groupe : Anciens

Ville : Lille
Pays : France métropolitaine

Erlang est plus vieux que PHP, sans parler de JSON. C'est pas "copié". La syntaxe on s'y fait. Moi j'aime.

Oui il y a plein de frameworks dispo, et alors? il est là pour apporter plus facilement la puissance du language au web. C'est bien.
Déjà réfléchit à pourquoi facebook n'a pas implémenté son chat avec django ou ror ? (oui, il est codé en erlang)

Dans le doute, faites pas de Javascript.
Bonnes pratiques javascript !

 
Hors ligne Bachir ElMagnifico # Posté le 24/11/2008 à 12:54:13
Avatar
Groupe : Bannis
Flux RSS

je vais peut etre apprendre erlang apres tout

Image utilisateur
 
Hors ligne Feng Huang # Posté le 24/11/2008 à 13:17:13
Avatar

Ma réaction : OMG !
J'adore ce framework avant même de l'avoir testé !! Un gain de temps colossal pour les développeurs !!

"Crois-tu comprendre le monde juste en mattant le 20h ou connaître l'histoire en n'ayant lu que l'angle des vainqueurs" Keny Arkana.
 
Hors ligne Dam_neo # Posté le 24/11/2008 à 13:21:48
Avatar

J'ai vu la vidéo... Au niveau de la syntaxe, je pense qu'il faut s'y faire. Le mec (bien évidemment, puisque c'est le créateur) touche et ça à l'air assez mortel. Il obtient un truc sympa vraiment rapidement. Bonne news donc...
Hors ligne batfunk # Posté le 24/11/2008 à 14:47:13
Et là... c'est le drame...
Avatar

Bien en plus avec la vidéo ;)
 
Hors ligne Maxibolt # Posté le 24/11/2008 à 15:05:41
E Ultreïa
Avatar
Groupe : Bannis

J'aime bien le concept de framework orienté évènements. Niveau performances par rapport à django et erlyweb, ça donne quoi ?

« J'entends par "valeur publique" ce qui fut le sens de l'honneur, puis le sens du sacré, puis la "bonne morale" de la IIIeme, et qui est actuellement "5 fruits et légumes par jour", et "penser à mettre une capote" »

Statistiques de l'activité sur les forums du sdz.
 
Hors ligne Duffy # Posté le 24/11/2008 à 16:44:50
Avatar

Vraiment sympa ce framework :p

L'erreur est humaine, le pardon divin.
 
Hors ligne Nelty # Posté le 24/11/2008 à 18:32:22
Garfield in the US
Avatar
Groupe : Anciens
Flux RSS

Ville : Owatonna
Pays : États-Unis

Citation : filc
Je me suis arréter avant la fin. Je comprends que dalle.... :colere2:


Si tu attendais le moment pour te demander ce que tu faisais sur le site, le voici. :-°

Le framework a l'air super sympa, on peut développer quelque chose de concret en peu de temps. :)
Hors ligne MisterDo # Posté le 24/11/2008 à 18:36:29
\_/O<
Avatar

Je vais plutôt attendre que ce soit stable.
 
Hors ligne Skelio # Posté le 24/11/2008 à 19:31:33
Groupe : Bannis

Maxibolt, niveau performances, Erlang s'en tire très bien pour tout ce qui ne demande pas de réaliser des tas de calculs en peu de temps. Par exemple pour écrire des serveurs il est très adapté. Suffit de chercher des comparatifs de performances entre RoR et Erlyweb ou Apache et Yaws.

Nitrogen sera peut-être très probablement moins performant que Yaws utilisé seul, mais ça n'est pas vraiment la vitesse qui compte (la preuve la plus flagrante c'est que tout le monde utilise PHP, ou que RoR a eu beaucoup de succès). Le plus important c'est de supporter la charge. Et là, Erlang est un peu fait pour ça :-° ...

filc> Par exemple, tu ne comprends pas quoi ? Je suis sûr que Dark-Side se ferait un plaisir de t'expliquer.
Hors ligne robocop # Posté le 24/11/2008 à 19:34:29
Avatar

Études : Lycée Condorcet - Paris 9ème

Merci pour l'info.
Au passage, y a-t-il des projets de frameworks qui sortent du lot dans d'autres langages, comme ocaml ?

Merci d'avance.
 
Hors ligne wgmpgp # Posté le 24/11/2008 à 20:09:07
Rotoclap true fan
Avatar
Groupe : Bannis

Études : EPITA

Il y a quand même un gros problème avec l'orienté composants / événements (Seaside / Nitrogen) par rapport au MVC, c'est la faible séparation des différentes parties du site. Finalement ça complique la tâche quant au développement d'un grand site, du fait que le code HTML est par exemple mêlé au reste du code (ça manque un peu de templates, par exemple).

À part ça, ça me semble être cool. Et je refais un peu de pub pour Seaside § .
 
Hors ligne filc # Posté le 24/11/2008 à 21:25:43

Études : IUT Vannes

J'ai étudié un peu la question, et j'arrive a mieux cerner le problème.
Mais c'est quoi le rapport avec le web ? Ca génère du PHP a la fin ? On peut faire un site complet avec ça ? (comme avec Code Igniter)

Compte twitter de Lordi-France. Toute les dernières news sur Lordi !
http://twitter.com/lordifrance
 
Connecté Thunderseb # Posté le 24/11/2008 à 21:32:30
Responsable de la validation
Avatar
Validateurs

Ville : Liège
Pays : Belgique

Citation : filc
J'ai étudié un peu la question, et j'arrive a mieux cerner le problème.
Mais c'est quoi le rapport avec le web ? Ca génère du PHP a la fin ? On peut faire un site complet avec ça ? (comme avec Code Igniter)


Techniquement, n'importe quel langage peut servir à coder un site Web. PHP est rependu car il a été explicitement créé pour, au même titre que ASP ou encore ColdFusion. Mais il est possible d'utiliser d'autres langages dynamiser un site Web comme Erlang, Javascript (oui oui, du JS serveur ^^ ), Smalltalk... Ca fonctionne donc exactement comme du PHP. Le PHP génère du HTML, et Erlang en est capable aussi, et ce framework facilite tout ça. Ca peut donc être comparé à un framework PHP comme CodeIgniter (me frappez pas, c'est juste pour expliquer l'idée ^^ ).
 
Hors ligne Zanpa # Posté le 24/11/2008 à 21:33:36
Avatar
Groupe : Bannis

Utiliser JS pour le serveur, faut vraiment être masochiste quand même :-°
Connecté Thunderseb # Posté le 24/11/2008 à 21:38:22
Responsable de la validation
Avatar
Validateurs

Ville : Liège
Pays : Belgique

Citation : Zanpa
Utiliser JS pour le serveur, faut vraiment être masochiste quand même :-°


Pas plus que pour de l'Erlang ou de l'Ocaml... Tout dépend de l'interpréteur utilisé. Et au pire, tu le fais en JS et tu compiles en .NET :p
Mais avec l'évolution des interpréteurs JS, notamment avec ceux qui pré-compilent le code, dans quelques années, ça roxxera du boudin au chou (ou aux noix, au choix), ça détrônera PHP et je serai le maitre du monde :) .
 
Hors ligne Artefact2 # Posté le 24/11/2008 à 21:59:28
Avatar

Ville : Reims
Pays : France métropolitaine
Études : Université de Reims

<citation nom="Zanpa">Utiliser JS pour le serveur, faut vraiment être masochiste quand même :-°</citation

Pas plus que de maintenir un site codé comme un porc en PHP.
Hors ligne Natim # Posté le 24/11/2008 à 22:16:15
Apprendre à coder c'est coder
Avatar
Groupe : Anciens
Flux RSS

Ville : Belfort
Pays : France métropolitaine

J'ai testé em5k qui va de paire avec stitcho mais visiblement il marche pas terriblement leur plugin pour mac.
Personnellement il ne m'a pas demandé de me logguer alors il sert à rien ...
 
Hors ligne ybouane # Posté le 24/11/2008 à 22:23:14
<vive le SDZ!!!>
Avatar
Flux RSS

merci pour la news

Image utilisateur

Outils services compteurs générateurs des scripts... gratuitement à 100%
Générateur de gifs animés gratuit
Générateur de bannières animées gratuit
Générateur d'userbars
Générateur de menus web 2.0

Description de mon site:
Support du web est un site qui propose des outils, des services, des compteurs de connecté, des compteur de pages vues, des compteurs de clics, des générateurs de bannières animée gratuit, des scripts php,(X)html, css, javascript... gratuitement à 100% pour les webmasters développeurs...
Image utilisateur
 
Hors ligne jeremybs # Posté le 24/11/2008 à 22:23:39
Groupe : Bannis

Sa doit être dure de trouver un hébergeur pas trop chère qui supporte ça.
 
Hors ligne LoupSolitaire # Posté le 24/11/2008 à 23:19:31
Connard patenté
Avatar

Citation : jeremybs
Sa doit être dure de trouver un hébergeur pas trop chère qui supporte ça.

Les serveurs dédiés virtuels, c'est pas cher tu héberge n'importe quoi dessus.
Hors ligne Neoterranos # Posté le 25/11/2008 à 00:42:11
Dessine-moi un monde idéal !
Avatar

Ville : Cachan
Pays : France métropolitaine
Études : ENS Cachan

Si tu veux bien expliciter... :p

Image utilisateur
Perdu sur le SdZ ? Clique ici ! Perdu sur CCDS ? Clique ici !
 
Hors ligne LoupSolitaire # Posté le 25/11/2008 à 02:01:01
Connard patenté
Avatar

Pour accéder à cette section
Connectez-vous !
connexion_rpx

Revenir à la liste des news