SlideShare ist ein Scribd-Unternehmen logo
1 von 45
Downloaden Sie, um offline zu lesen
COBALT
UN FRAMEWORK MOBILE HYBRIDE MADE IN LANNION
18/03/2014
Le développement mobile,
une joyeuse jungle
Depuis 2008, date de sortie de l’iPhone : 

Plates-formes : 

Android, iOS, Windows Phone 8, BlackBerry, Tizen, etc.

Terminaux et tailles d’écran : 

résolution (en ppp), définition (en px) et format d’écran,
etc.
La voie royale : le natif
Un développement par plate-forme,

Temps de développement long,

Souvent trop cher pour les clients.
Mais le HTML5 s’en mêle
Des sites Web mobiles : 

m.cobalt.fr

Des frameworks Web orientés interface mobile : 

Sencha Touch, jQuery Mobile, Wink

Le Responsive Web Design,

Des frameworks hybrides : 

PhoneGap / Cordova.
L’hybride, késako ?
L’hybride, késako ?
L’hybride, késako ?
L’hybride, késako ?
Utiliser un maximum de code Web dans une
application native,

Les WebViews permettent d’afficher du Web sur
toutes les plateformes connues,

Augmenter le code commun d’une application
multi-plateformes pour en réduire les coûts de
développement.
HTML5 et le mobile :
le site mobile
Fonctionne sur tous les
terminaux,

API pauvre,

Pas de store disponible.
source : étude visionmobile, septembre 2013
http://www.developereconomics.com/downloads/can-html5-compete-native/
HTML5 et le mobile :
les générateurs d’application
Génération d’une
application native à partir de
code HTML5 spécifique ou
d’un éditeur WYSIWYG,

Développement complexe,

Peu customisable.
source : étude visionmobile, septembre 2013
http://www.developereconomics.com/downloads/can-html5-compete-native/
HTML5 et le mobile :
PhoneGap / Cordova
Le seul vrai hybride,

Développement entièrement
en HTML5,

Quelques fonctions natives
accessibles depuis le
JavaScript,

Communauté active.
source : étude visionmobile, septembre 2013
http://www.developereconomics.com/downloads/can-html5-compete-native/
HTML5 et le mobile :
PhoneGap / Cordova
Mais : 

Performances HTML5 : 

Support CSS limité,

Animations saccadées,

Navigation lente,

Ne se prête pas aux
applications complexes.
source : étude visionmobile, septembre 2013
http://www.developereconomics.com/downloads/can-html5-compete-native/
HTML5 ET LE
MOBILE
UNE AUTRE SOLUTION ?
« Si le seul outil que vous avez est un marteau,
vous tendez à voir tout problème comme un clou »
Abraham Maslow (The Psychology of Science, 1966)
« Si j’avais un marteau… 

Je bâtirais une ferme »
Claude François (Si j'avais un marteau, 1963)
« Si j’avais un marteau… 

Je bâtirais un framework hybride »
Guillaume Gendre (décembre 2012)
COBALT
Idée de départ
Remplacer le code HTML5 par du code natif là où le
HTML5 n’est pas performant : 

transitions,

touch events complexes

pull-to-refresh, swipe, etc.

accès aux fonctions natives

photo, contacts, géolocalisation, etc.

Mais le Web reste à la barre !
Comment ?
Un système de communication Web <-> Natif
simple mais robuste,

Une navigation native,

Des composants natifs pour pallier aux manques
du HTML5.
Ils l’utilisent
Ils l’utilisent
WebView
Natif
Natif
Cobalt
Natif
WebView
2 WebViews
Une gestion évènement / callback : 



<– Native, make me sandwich!

–> Here it is.

Un format JSON souple,

Un système identique pour toutes
les plates-formes.
La communication Web <–> Natif
La communication Web <–> Natif
Le Web ordonne : 



Et le natif s’exécute :
cobalt.sendEvent("playVideo", {

	 video_id: 654564

});
@Override

protected boolean onUnhandledEvent(	 String event, 

	 	 	 	 	 	 	 JSONObject data, 

	 	 	 	 	 	 	 String callback) {

	 if (event.equals("playVideo")) {

	 	 try {

	 	 	 int video_id = data.getInt("video_id");

	 	 	 playVideo(video_id);

	 	 catch (JSONException e) {

	 	 	 // handle exception

	 	 }

	 	 return true;

	 }

	 return false;

}
Le natif notifie le Web : 









Et le Web réagit :
JSONObject data = new JSONObject()

try {

	 data.put("value", 11);

	 sendEvent("setZoom", data, null);

}

catch (JSONException e) {

	 // handle exception

}
cobalt.init({

	 debug: true,

	 events: {

	 	 "setZoom": function(data, callback ) {

	 	 	 $("body").css("font-size", data.value + "px");

	 	 }

	 }

});
La communication Web <–> Natif
Une navigation native
Depuis le Web : 

Push / pop d’une page HTML avec une animation
native,

Respect des transitions propres à l’OS

Choix du contrôleur natif dans lequel charger la
page,

Choix des options de ce contrôleur.
« One file to push them all »
Sébastien Vitard (mars 2013)
Une navigation native
Un fichier de configuration : cobalt.conf

!
!
!
!
!
Pour naviguer aisément dans l’application depuis le Web :
cobalt.navigate('push','home.html','home');

cobalt.navigate('pop');
{

	 "default": {

	 	 "androidController": 	 "fr.codedarmor.codedarmor.activities.DefaultActivity",

	 	 "iosController": 	 	 "CDADefaultViewController",

	 	 "pullToRefresh": 		 false,

	 	 "infiniteScroll": 	 	 false

	 },

	 "home": {

	 	 "androidController": 	 "fr.codedarmor.codedarmor.activities.HomeActivity",

	 	 "iosController": 	 	 "CDAHomeViewController",

	 	 "iosNibName": 	 	 "CDADefaultViewController",

	 	 "pullToRefresh": 		 false,

	 	 "infiniteScroll": 	 	 false

	 }

}
Des WebViews buggées ? 

On corrige !
LocalStorage sur Android,

Support de l’Ajax sur
BlackBerry 10,

Pipeline de communication
sur iOS6 et inférieur.
Des composants
Pull-to-refresh

&

Infinite scroll
cobalt.init({

	 events: {

	 	 "pullToRefresh": function(data, callback) {

	 	 	 // Update your page content here!

	 	 	 // Call callback when content is up to date:

	 	 	 cobalt.sendCallback(callback);

	 	 },

	 	 "infiniteScroll": function(data, callback) {

	 	 	 // Load your next page here…

	 	 	 // And when it’s done:

	 	 	 cobalt.sendCallback(callback);

	 	 }

	 }

});
Des composants
Web Layers
cobalt.webLayer("show", "layerContent.html");
cobalt.webLayer("dismiss", { some: "optionalData" });
cobalt.addEventListener("onWebLayerDismissed", function(data) {

	 // WebLayer closed, some data has changed.

});
Des composants
Alerts
cobalt.alert(‘Title’,

	 	 ‘Message’,

	 	 [‘OK’, ‘Cancel’],

	 	 function(data) {

	 	 	 if (data.index == 0) {

	 	 	 	 // handle OK button pressed

	 	 	 }

	 	 	 else if (data.index == 1) {

	 	 	 	 // handle Cancel button pressed

	 	 	 }

	 	 }

);
Des composants
Toasts
Des composants
Toasts
cobalt.toast(‘In Cobalt we toast!’);
Des composants
LocalStorage
Corrigé et même amélioré !

Supporte tout type de données

String, Number, Date, JSON, etc.
cobalt.storage.setItem(‘key’, ‘value’);

cobalt.storage.getItem(‘key’);

!
cobalt.storage.setItem(‘key’, { some: ‘JSON’ }, ‘json’);

cobalt.storage.getItem(‘key’, ‘json’);

!
cobalt.storage.setItem(‘key’, new Date(), ‘date’);

cobalt.storage.getItem(‘key’, ‘date’);
Device info, 

Geolocation, 

Contacts access, 

Side menu, 

Swipe gestures, 

Fullscreen video player, 

Open external URL,

InApp external
WebView,

Action Picker, 

Date picker, 

Simple / multiple photo
picker.
En développement :
Des composants
On y réfléchit :
Des composants
More gestures,

Page events

onPause, onResume, onShow, etc. 

YouTube, Dailymotion and Vimeo fullscreen video player, 

Fullscreen slideshow,

Cross-platform top bar, 

PhoneGap plugins integration.
Vous êtes ic
bjectif
Ce que ça change 

pour le développeur Web
Un fichier HTML par écran,

Layout simplifié par l’absence de navigation,

Moins de bugs CSS,

Contexte conservé entre les pages 

grâce au LocalStorage
Ce que ça change 

pour le développeur Web
Developer, 

I’m your framework
Nooo !
Developers, join the Rebels!
Oubliez vos frameworks JavaScript d’interface mobile 

comme JQuery Mobile !

Ils vous freinent,

Ils sont lourds,

Vous devez rhabiller tous les composants.

Utilisez un framework moins gras, moins sucré, moins salé : 

Zepto.js, Backbone.js… ou AngularJS si vous faites attention

Utilisez FastClick et gagnez 300ms sur chaque touch,

N’abusez pas des logs, ils ralentissent votre application.
COBALT
LET’S CODE!
Cobalt est OpenSource !
cobaltframework.com 

ou cobaltians.com

Sur GitHub :

Wiki,

BugTracker,

Roadmap,

Liste des fonctionnalités
et leur mode d’emploi.
Et maintenant ?
Compléter la documentation !

Intégrer les fonctionnalités en développement,

Concevoir un système de plugins 

pour que chacun puisse proposer les siens,

Contribuer !

Organiser une soirée coding Cobalt ?
Guillaume Gendre

Développeur web

!
guillaume@haploid.fr

@ggendre
Merci !!
Sébastien Vitard

Développeur Mutli-OS

!
sebastien@haploid.fr

@doc1faux
cobaltframework.com
Diane Moebs

Contributrice historique

!
!
@DianeMoebs
COBALT

Weitere ähnliche Inhalte

Ähnlich wie Cobalt @ Code d'Armor Lannion 20130318 [FR]

Présentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'OfflinePrésentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'OfflineDNG Consulting
 
L'histoire d'HTML5 pour les développeurs Windows Phone 8
L'histoire d'HTML5 pour les développeurs Windows Phone 8L'histoire d'HTML5 pour les développeurs Windows Phone 8
L'histoire d'HTML5 pour les développeurs Windows Phone 8Microsoft
 
jQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-sidejQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-sidemaru.maru
 
Gtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogyGtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogySacha Leprêtre
 
La mobilité dans Drupal
La mobilité dans DrupalLa mobilité dans Drupal
La mobilité dans DrupalAdyax
 
Passage aux applications mobiles
Passage aux applications mobilesPassage aux applications mobiles
Passage aux applications mobilesneuros
 
Les secrets du développement d'une application mobile
Les secrets du développement d'une application mobileLes secrets du développement d'une application mobile
Les secrets du développement d'une application mobileEutech SSII
 
L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8davrous
 
Ergonomie web et mobile en bibliothèque
Ergonomie web et mobile en bibliothèqueErgonomie web et mobile en bibliothèque
Ergonomie web et mobile en bibliothèqueJulien Sicot
 
Développement mobile cross-plateform
Développement mobile cross-plateformDéveloppement mobile cross-plateform
Développement mobile cross-plateformStefan Cosquer
 
BlendWebMix - Concevez rapidement vos applications mobiles
BlendWebMix - Concevez rapidement vos applications mobilesBlendWebMix - Concevez rapidement vos applications mobiles
BlendWebMix - Concevez rapidement vos applications mobilesStéphanie Moallic
 
Comment se préparer au Mobile Index First de Google
Comment se préparer au Mobile Index First de GoogleComment se préparer au Mobile Index First de Google
Comment se préparer au Mobile Index First de GoogleKseo Conseil
 
Web Mobile : quelles opportunités face aux apps ?
Web Mobile : quelles opportunités face aux apps ?Web Mobile : quelles opportunités face aux apps ?
Web Mobile : quelles opportunités face aux apps ?NiceToMeetYou
 
Developpement mobile vs open source
Developpement mobile vs open sourceDeveloppement mobile vs open source
Developpement mobile vs open sourceKorteby Farouk
 
Nouveaux comportements des consommateurs: quelles evolutions ergonomiques, vi...
Nouveaux comportements des consommateurs: quelles evolutions ergonomiques, vi...Nouveaux comportements des consommateurs: quelles evolutions ergonomiques, vi...
Nouveaux comportements des consommateurs: quelles evolutions ergonomiques, vi...polenumerique33
 

Ähnlich wie Cobalt @ Code d'Armor Lannion 20130318 [FR] (20)

Drupal & Mobilité
Drupal & MobilitéDrupal & Mobilité
Drupal & Mobilité
 
Présentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'OfflinePrésentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'Offline
 
L'histoire d'HTML5 pour les développeurs Windows Phone 8
L'histoire d'HTML5 pour les développeurs Windows Phone 8L'histoire d'HTML5 pour les développeurs Windows Phone 8
L'histoire d'HTML5 pour les développeurs Windows Phone 8
 
jQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-sidejQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-side
 
Gtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogyGtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogy
 
Développement web mobile avec IONIC 2
Développement web mobile avec IONIC 2Développement web mobile avec IONIC 2
Développement web mobile avec IONIC 2
 
La mobilité dans Drupal
La mobilité dans DrupalLa mobilité dans Drupal
La mobilité dans Drupal
 
Passage aux applications mobiles
Passage aux applications mobilesPassage aux applications mobiles
Passage aux applications mobiles
 
Les secrets du développement d'une application mobile
Les secrets du développement d'une application mobileLes secrets du développement d'une application mobile
Les secrets du développement d'une application mobile
 
L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8
 
Prez web vr chtijs
Prez web vr chtijsPrez web vr chtijs
Prez web vr chtijs
 
Ergonomie web et mobile en bibliothèque
Ergonomie web et mobile en bibliothèqueErgonomie web et mobile en bibliothèque
Ergonomie web et mobile en bibliothèque
 
Développement mobile cross-plateform
Développement mobile cross-plateformDéveloppement mobile cross-plateform
Développement mobile cross-plateform
 
Native script
Native scriptNative script
Native script
 
BlendWebMix - Concevez rapidement vos applications mobiles
BlendWebMix - Concevez rapidement vos applications mobilesBlendWebMix - Concevez rapidement vos applications mobiles
BlendWebMix - Concevez rapidement vos applications mobiles
 
Comment se préparer au Mobile Index First de Google
Comment se préparer au Mobile Index First de GoogleComment se préparer au Mobile Index First de Google
Comment se préparer au Mobile Index First de Google
 
Web Mobile : quelles opportunités face aux apps ?
Web Mobile : quelles opportunités face aux apps ?Web Mobile : quelles opportunités face aux apps ?
Web Mobile : quelles opportunités face aux apps ?
 
Developpement mobile vs open source
Developpement mobile vs open sourceDeveloppement mobile vs open source
Developpement mobile vs open source
 
Support developpement applications mobiles avec ionic v3 et v4
Support developpement applications mobiles avec ionic v3 et v4Support developpement applications mobiles avec ionic v3 et v4
Support developpement applications mobiles avec ionic v3 et v4
 
Nouveaux comportements des consommateurs: quelles evolutions ergonomiques, vi...
Nouveaux comportements des consommateurs: quelles evolutions ergonomiques, vi...Nouveaux comportements des consommateurs: quelles evolutions ergonomiques, vi...
Nouveaux comportements des consommateurs: quelles evolutions ergonomiques, vi...
 

Cobalt @ Code d'Armor Lannion 20130318 [FR]

  • 1. COBALT UN FRAMEWORK MOBILE HYBRIDE MADE IN LANNION 18/03/2014
  • 2. Le développement mobile, une joyeuse jungle Depuis 2008, date de sortie de l’iPhone : Plates-formes : 
 Android, iOS, Windows Phone 8, BlackBerry, Tizen, etc. Terminaux et tailles d’écran : 
 résolution (en ppp), définition (en px) et format d’écran, etc.
  • 3. La voie royale : le natif Un développement par plate-forme, Temps de développement long, Souvent trop cher pour les clients.
  • 4. Mais le HTML5 s’en mêle Des sites Web mobiles : 
 m.cobalt.fr Des frameworks Web orientés interface mobile : 
 Sencha Touch, jQuery Mobile, Wink Le Responsive Web Design, Des frameworks hybrides : 
 PhoneGap / Cordova.
  • 8. L’hybride, késako ? Utiliser un maximum de code Web dans une application native, Les WebViews permettent d’afficher du Web sur toutes les plateformes connues, Augmenter le code commun d’une application multi-plateformes pour en réduire les coûts de développement.
  • 9. HTML5 et le mobile : le site mobile Fonctionne sur tous les terminaux, API pauvre, Pas de store disponible. source : étude visionmobile, septembre 2013 http://www.developereconomics.com/downloads/can-html5-compete-native/
  • 10. HTML5 et le mobile : les générateurs d’application Génération d’une application native à partir de code HTML5 spécifique ou d’un éditeur WYSIWYG, Développement complexe, Peu customisable. source : étude visionmobile, septembre 2013 http://www.developereconomics.com/downloads/can-html5-compete-native/
  • 11. HTML5 et le mobile : PhoneGap / Cordova Le seul vrai hybride, Développement entièrement en HTML5, Quelques fonctions natives accessibles depuis le JavaScript, Communauté active. source : étude visionmobile, septembre 2013 http://www.developereconomics.com/downloads/can-html5-compete-native/
  • 12. HTML5 et le mobile : PhoneGap / Cordova Mais : Performances HTML5 : Support CSS limité, Animations saccadées, Navigation lente, Ne se prête pas aux applications complexes. source : étude visionmobile, septembre 2013 http://www.developereconomics.com/downloads/can-html5-compete-native/
  • 13. HTML5 ET LE MOBILE UNE AUTRE SOLUTION ?
  • 14. « Si le seul outil que vous avez est un marteau, vous tendez à voir tout problème comme un clou » Abraham Maslow (The Psychology of Science, 1966)
  • 15. « Si j’avais un marteau… 
 Je bâtirais une ferme » Claude François (Si j'avais un marteau, 1963)
  • 16. « Si j’avais un marteau… 
 Je bâtirais un framework hybride » Guillaume Gendre (décembre 2012)
  • 18. Idée de départ Remplacer le code HTML5 par du code natif là où le HTML5 n’est pas performant : transitions, touch events complexes
 pull-to-refresh, swipe, etc. accès aux fonctions natives
 photo, contacts, géolocalisation, etc. Mais le Web reste à la barre !
  • 19. Comment ? Un système de communication Web <-> Natif simple mais robuste, Une navigation native, Des composants natifs pour pallier aux manques du HTML5.
  • 22. Une gestion évènement / callback : 
 
 <– Native, make me sandwich!
 –> Here it is. Un format JSON souple, Un système identique pour toutes les plates-formes. La communication Web <–> Natif
  • 23. La communication Web <–> Natif Le Web ordonne : 
 
 Et le natif s’exécute : cobalt.sendEvent("playVideo", {
 video_id: 654564
 }); @Override
 protected boolean onUnhandledEvent( String event, 
 JSONObject data, 
 String callback) {
 if (event.equals("playVideo")) {
 try {
 int video_id = data.getInt("video_id");
 playVideo(video_id);
 catch (JSONException e) {
 // handle exception
 }
 return true;
 }
 return false;
 }
  • 24. Le natif notifie le Web : 
 
 
 
 
 Et le Web réagit : JSONObject data = new JSONObject()
 try {
 data.put("value", 11);
 sendEvent("setZoom", data, null);
 }
 catch (JSONException e) {
 // handle exception
 } cobalt.init({
 debug: true,
 events: {
 "setZoom": function(data, callback ) {
 $("body").css("font-size", data.value + "px");
 }
 } }); La communication Web <–> Natif
  • 25. Une navigation native Depuis le Web : Push / pop d’une page HTML avec une animation native, Respect des transitions propres à l’OS Choix du contrôleur natif dans lequel charger la page, Choix des options de ce contrôleur.
  • 26. « One file to push them all » Sébastien Vitard (mars 2013)
  • 27. Une navigation native Un fichier de configuration : cobalt.conf ! ! ! ! ! Pour naviguer aisément dans l’application depuis le Web : cobalt.navigate('push','home.html','home'); cobalt.navigate('pop'); { "default": { "androidController": "fr.codedarmor.codedarmor.activities.DefaultActivity", "iosController": "CDADefaultViewController", "pullToRefresh": false, "infiniteScroll": false }, "home": { "androidController": "fr.codedarmor.codedarmor.activities.HomeActivity", "iosController": "CDAHomeViewController", "iosNibName": "CDADefaultViewController", "pullToRefresh": false, "infiniteScroll": false } }
  • 28. Des WebViews buggées ? 
 On corrige ! LocalStorage sur Android, Support de l’Ajax sur BlackBerry 10, Pipeline de communication sur iOS6 et inférieur.
  • 29. Des composants Pull-to-refresh
 &
 Infinite scroll cobalt.init({ events: {
 "pullToRefresh": function(data, callback) { // Update your page content here! // Call callback when content is up to date: cobalt.sendCallback(callback); }, "infiniteScroll": function(data, callback) { // Load your next page here… // And when it’s done: cobalt.sendCallback(callback); } } });
  • 30. Des composants Web Layers cobalt.webLayer("show", "layerContent.html"); cobalt.webLayer("dismiss", { some: "optionalData" }); cobalt.addEventListener("onWebLayerDismissed", function(data) { // WebLayer closed, some data has changed. });
  • 31. Des composants Alerts cobalt.alert(‘Title’,
 ‘Message’,
 [‘OK’, ‘Cancel’],
 function(data) {
 if (data.index == 0) {
 // handle OK button pressed
 }
 else if (data.index == 1) {
 // handle Cancel button pressed
 }
 }
 );
  • 34. Des composants LocalStorage Corrigé et même amélioré ! Supporte tout type de données
 String, Number, Date, JSON, etc. cobalt.storage.setItem(‘key’, ‘value’); cobalt.storage.getItem(‘key’);
 ! cobalt.storage.setItem(‘key’, { some: ‘JSON’ }, ‘json’); cobalt.storage.getItem(‘key’, ‘json’); ! cobalt.storage.setItem(‘key’, new Date(), ‘date’); cobalt.storage.getItem(‘key’, ‘date’);
  • 35. Device info, Geolocation, Contacts access, Side menu, Swipe gestures, Fullscreen video player, Open external URL, InApp external WebView, Action Picker, Date picker, Simple / multiple photo picker. En développement : Des composants
  • 36. On y réfléchit : Des composants More gestures, Page events
 onPause, onResume, onShow, etc. YouTube, Dailymotion and Vimeo fullscreen video player, Fullscreen slideshow, Cross-platform top bar, PhoneGap plugins integration.
  • 39. Ce que ça change 
 pour le développeur Web Un fichier HTML par écran, Layout simplifié par l’absence de navigation, Moins de bugs CSS, Contexte conservé entre les pages 
 grâce au LocalStorage
  • 40. Ce que ça change 
 pour le développeur Web
  • 41. Developer, 
 I’m your framework Nooo ! Developers, join the Rebels! Oubliez vos frameworks JavaScript d’interface mobile 
 comme JQuery Mobile ! Ils vous freinent, Ils sont lourds, Vous devez rhabiller tous les composants. Utilisez un framework moins gras, moins sucré, moins salé : 
 Zepto.js, Backbone.js… ou AngularJS si vous faites attention Utilisez FastClick et gagnez 300ms sur chaque touch, N’abusez pas des logs, ils ralentissent votre application.
  • 43. Cobalt est OpenSource ! cobaltframework.com 
 ou cobaltians.com Sur GitHub : Wiki, BugTracker, Roadmap, Liste des fonctionnalités et leur mode d’emploi.
  • 44. Et maintenant ? Compléter la documentation ! Intégrer les fonctionnalités en développement, Concevoir un système de plugins 
 pour que chacun puisse proposer les siens, Contribuer ! Organiser une soirée coding Cobalt ?
  • 45. Guillaume Gendre Développeur web ! guillaume@haploid.fr @ggendre Merci !! Sébastien Vitard Développeur Mutli-OS ! sebastien@haploid.fr @doc1faux cobaltframework.com Diane Moebs Contributrice historique ! ! @DianeMoebs COBALT