1 00:00:07,414 --> 00:00:10,008 Ok, bienvenue à tous ! 2 00:00:10,008 --> 00:00:13,235 Je suis ici aujourd'hui avec Lieke pour vous parler de Cloud9, 3 00:00:13,235 --> 00:00:19,331 un IDE dans le cloud, avec lequel vous pouvez accéder à votre code de n'importe où, n'importe quand. 4 00:00:20,039 --> 00:00:26,458 Je suis Ruben Daniels, co-fondateur et directeur de Ajax.org, et Cloud9. 5 00:00:26,474 --> 00:00:31,835 Je développe en Javascript depuis 1999. 6 00:00:31,835 --> 00:00:35,921 Ça fait un moment, et javascript a beaucoup évolué. 7 00:00:35,921 --> 00:00:44,582 Je suis l'auteur et le créateur de la plateforme Ajax.org, qui est une librairie d'interface qu'on utilise dans Cloud9. 8 00:00:44,582 --> 00:00:51,804 Notre compagnie comprend 20 personnes, et on essaie de révolutionner le développement 9 00:00:51,804 --> 00:00:54,596 de code, dans le cloud. 10 00:00:55,380 --> 00:01:01,022 Bonjour, je m'appelle Lieke, je parle français, mais je ne fais pas cette présentation en français, 11 00:01:01,022 --> 00:01:05,921 parce que Ruben ne parle pas, et moi je ne parle pas "tant" bien. 12 00:01:05,921 --> 00:01:12,911 Donc, il y a de la traduction, mais je m'intéresse : combien de gens peuvent entendre l'anglais ? 13 00:01:12,911 --> 00:01:16,696 C'est presque toute la salle. 14 00:01:16,746 --> 00:01:25,655 Je vais parler anglais. Je fais partie dAjax.org depuis 2009, dans les relations avec les développeurs. 15 00:01:33,429 --> 00:01:40,426 Donc, ce dont on va parler aujourd'hui : premièrement, une réponse à la question "Pourquoi le cloud ?" 16 00:01:40,426 --> 00:01:44,420 Ou plutôt, "Pourquoi le cloud pour des développeurs ?" 17 00:01:44,420 --> 00:01:49,761 Je vous ferai une démo de l'IDE Cloud9, qui est notre vision de la manière de faire, 18 00:01:49,761 --> 00:01:57,307 et ensuite nous parlerons de collaboration, que nous imaginons dans le futur du développement dans le cloud. 19 00:01:57,307 --> 00:02:04,350 Je vais laisser Lieke commencer, elle va vous expliquer pourquoi le cloud est important. 20 00:02:05,365 --> 00:02:12,075 Nous pensons que le développement se fera dans le cloud, donc prenons un peu de recul. 21 00:02:12,075 --> 00:02:16,673 Il se peut que vous vous demandiez : pourquoi travailler dans le cloud ? 22 00:02:16,673 --> 00:02:21,748 Et d'ailleurs, c'est quoi cette chose qu'on appelle le "cloud" ? 23 00:02:22,733 --> 00:02:25,400 Alors, jetons un oeil au cloud... 24 00:02:25,400 --> 00:02:33,809 Le cloud, c'est l'étape qui suit la virtualisation, qui nous permet de ne plus nous soucier du matériel, 25 00:02:33,809 --> 00:02:42,586 mais quand même toujours de quel OS tourne, comment installer et configurer des SGBD comme MySQL, 26 00:02:42,586 --> 00:02:49,343 et il faut toujours garder un oeil sur chaque serveur, on doit s'inquiéter de leur dimensionnement. 27 00:02:49,343 --> 00:02:55,543 Donc, il y a deux types de systèmes que l'on appelle "cloud" : 28 00:02:55,543 --> 00:02:59,026 il y en a qui sont des constructions d'APIs sur des systèmes de gestion de virtualisation, 29 00:02:59,026 --> 00:03:03,647 ce qui est proche de "Infrastructure as a Service" (IaaS) 30 00:03:03,647 --> 00:03:12,052 et des systèmes où la couche remonte au-dessus de l'API, "Platform as a Service" (PaaS) 31 00:03:12,052 --> 00:03:18,670 Pour moi, la promesse du cloud, c'est que l'intégration remonte au niveau de l'API, 32 00:03:18,670 --> 00:03:23,128 que l'on utilise en construisant des applications au-dessus. 33 00:03:23,128 --> 00:03:27,447 Ça inclut donc l'espace disque, la base de données, et la puissance de calcul. 34 00:03:27,447 --> 00:03:33,554 Ce niveau de cloud est pour l'instant surtout une promesse, même si Google App Engine 35 00:03:33,554 --> 00:03:36,967 et Heroku sont plutôt loin dans le concept. 36 00:03:36,967 --> 00:03:41,983 Donc, regardons un exemple ; il est plutôt simple, peut-être inutile, 37 00:03:41,983 --> 00:03:44,816 mais j'aimerais vous expliquer ce que le cloud signifie. 38 00:03:44,816 --> 00:03:49,227 Donc, disons que vous avez une boîtes de livres ; vous devez la stocker, 39 00:03:49,227 --> 00:03:52,409 et plus tard, vous voudrez récupérer des livres. 40 00:03:52,409 --> 00:04:01,743 Avant la virtualisation, vous deviez construire un abri ; pour protéger vos livres, avec une porte verrouillable, 41 00:04:01,743 --> 00:04:06,851 mais maintenant, avec la virtualisation, l'abri est déjà prêt. 42 00:04:06,851 --> 00:04:13,469 Vous avez quand même besoin de gérer l'espace à l'intérieur, construire les étagères, 43 00:04:13,469 --> 00:04:17,370 et stocker les livres vous-mêmes. 44 00:04:17,370 --> 00:04:24,731 Avec le cloud, vous obtenez un gars, ou un robot, vous lui donnez votre stock de livres, 45 00:04:24,731 --> 00:04:29,584 il les stocke pour vous, et vous pouvez les lui redemander quand vous voulez. 46 00:04:29,584 --> 00:04:38,036 C'est un exemple simple, mais il montre bien les niveaux de pré-intégration. 47 00:04:38,036 --> 00:04:43,240 Alors, quelle est la fonctionnalité la plus utile du cloud ? 48 00:04:43,240 --> 00:04:49,437 Premièrement, gérer le dimensionnement des serveurs. 49 00:04:49,437 --> 00:04:57,332 Imaginez que vous avez une application sociale, vous commencez avec quelques utilisateurs, 50 00:04:57,332 --> 00:05:01,511 et vous le faites tourner sur une VM chez Amazon. 51 00:05:01,511 --> 00:05:05,923 Soudainement, Justin Bieber remarque votre appli, et il tweete dessus. 52 00:05:05,923 --> 00:05:12,076 Et hop, 8 million d'adolescentes excitées, qui embourbent soudainement sur vos serveurs ! 53 00:05:12,076 --> 00:05:17,928 Que votre business model soit construit pour ça, c'est pas la question ! 54 00:05:17,928 --> 00:05:21,596 Et du coup, vos serveurs explosent... 55 00:05:21,596 --> 00:05:27,378 Il faut que vous puissiez gérer vos ressources back-end rapidement, donc que faire ? 56 00:05:27,378 --> 00:05:36,179 Il faut démarrer d'autres instances, et un balanceur de charge, mais d'abord, il faut gérer le dimensionnement de votre code ! 57 00:05:36,179 --> 00:05:40,869 La plupart de vos applications avec des fonctionnalités sociales, ou des bases de données, 58 00:05:40,869 --> 00:05:44,723 ne peuvent pas se redimensionner horizontalement, sans une étude approfondie ; 59 00:05:44,723 --> 00:05:47,185 c'est donc un cauchemar ! 60 00:05:47,185 --> 00:05:54,104 Pas juste à cause de lui, mais à cause du coût pour architecturer et dimensionner votre application 61 00:05:54,104 --> 00:05:59,411 sans même savoir si elle sera populaire ou non. 62 00:05:59,411 --> 00:06:06,968 L'infrastructure dans le cloud résoud ce problème ; les APIs sont exactement construites pour le dimensionnement. 63 00:06:06,968 --> 00:06:13,423 En utilisant cet outil de dimensionnement tout prêt, vous pouvez dimensionner d'1 utilisateur à 1 million, 64 00:06:13,423 --> 00:06:15,327 puis redescendre à 1 utilisateur ! 65 00:06:15,327 --> 00:06:23,361 Et ceci, sans le coût de le prévoir à l'avance, ou les pertes dûes à l'échec face à la popularité soudaine ! 66 00:06:23,361 --> 00:06:27,611 En gros, le cloud sauve du temps et de l'argent, 67 00:06:27,611 --> 00:06:33,114 et les développeurs peuvent se concentrer sur ce qu'ils aiment faire le plus : développer des applications ! 68 00:06:33,114 --> 00:06:38,826 Ils peuvent se concentrer sur les fonctionnalités demandées par les utilisateurs. 69 00:06:38,826 --> 00:06:43,354 Je pense qu'on peut se mettre d'accord pour dire que le cloud, c'est un truc sympa. 70 00:06:43,354 --> 00:06:45,026 Ruben ? 71 00:06:45,026 --> 00:06:48,694 Qu'est-ce que ça veut dire pour le développement ? 72 00:06:48,694 --> 00:06:54,081 Les plateformes cloud fournissent un SDK, que vous installez sur votre machine, 73 00:06:54,081 --> 00:06:58,563 et vous espérez que tout marchera pareil sur votre machine et dans le cloud, mais ce n'est jamais le cas. 74 00:06:58,563 --> 00:07:03,741 Regardons App Engine, dans Google, qui embarque Big Table. 75 00:07:03,741 --> 00:07:08,222 Big Table est cette énorme infrastructure dans le cloud pour stocker des données ; 76 00:07:08,222 --> 00:07:11,102 vous ne pouvez pas l'installer sur votre PC. 77 00:07:11,102 --> 00:07:17,418 Donc, vous devez simuler ça, quand vous installez ce SDK, vous simulez l'environnement cloud. 78 00:07:17,418 --> 00:07:22,480 Et ce n'est jamais parfait ; vous aurez toujours le cas où votre application marche localement, 79 00:07:22,480 --> 00:07:27,774 et vous l'uploadez, et elle ne marche pas, à cause de certaines différences. 80 00:07:27,774 --> 00:07:38,710 Donc, c'est difficile, vous ne pouvez pas tester entièrement votre application, et il faut une solution. 81 00:07:38,710 --> 00:07:44,004 Cloud9, c'est notre vision d'une solution au problème. 82 00:07:44,004 --> 00:07:49,507 Le code que vous développez ne vit pas sur votre machine, mais dans le cloud, 83 00:07:49,507 --> 00:07:58,610 vous développez dans le cloud, et puisque c'est là qu'il vit, vous pouvez accéder toute l'API, dont Big Table. 84 00:07:58,610 --> 00:08:02,929 Donc quand vous buildez l'application, il n'y a pas de problème. 85 00:08:02,929 --> 00:08:07,758 Vous pouvez lancer et débuguer dans le même environnement aussi. 86 00:08:07,758 --> 00:08:12,008 Un autre avantage : vous n'avez pas à télécharger et installer un SDK, 87 00:08:12,008 --> 00:08:20,529 sur votre système, qui est sans doute différent de celui du développeur qui a créé le SDK. 88 00:08:20,529 --> 00:08:27,913 Tous ces problèmes s'en vont, vous pouvez commencer à faire ce que vous aimez faire en tant que développeur : 89 00:08:27,913 --> 00:08:29,788 écrire du code. 90 00:08:30,465 --> 00:08:37,666 Maintenant, prenons ce scénario, vous êtes un nouveau développeur, vous rejoignez une compagnie, 91 00:08:37,666 --> 00:08:41,218 qui a distribué une web-app il y a un an ; 92 00:08:41,218 --> 00:08:45,073 les clients appellent parce qu'ils ont entendu parler d'une nouvelle technologie, 93 00:08:45,073 --> 00:08:48,904 et ils veulent que la web-app la supporte. 94 00:08:48,904 --> 00:08:56,427 Pour ajouter cette fonctionnalité convenablement, vous avez besoin de tout l'environnement, 95 00:08:56,427 --> 00:09:05,437 le serveur, la base de données, scripts pour le déploiement, et d'installer tout ça. 96 00:09:05,437 --> 00:09:10,011 Il faut que vous trouviez votre chemin dans ce système : discuter avec les administrateurs, 97 00:09:10,011 --> 00:09:14,214 trouver les mots de passe, comprendre la procédure de déploiement... 98 00:09:14,214 --> 00:09:20,530 Du coup, avant d'avoir créé un environnement de développement que vous pouvez utiliser 99 00:09:20,530 --> 00:09:28,285 sans avoir à modifier du code en live, vous devez passez une éternité à faire tout ça. 100 00:09:28,285 --> 00:09:33,301 Ce problème est une réalité pour beaucoup de développeurs. 101 00:09:33,301 --> 00:09:38,572 Imaginez que vous tentiez d'ajouter une fonctionnalité, ou de résoudre un bug, 102 00:09:38,572 --> 00:09:44,052 maintenant, imaginez ça : un environnement de développement qui tourne dans le cloud 103 00:09:44,052 --> 00:09:49,531 est ce qui est utilisé pour fabriquer cette application. 104 00:09:49,531 --> 00:09:56,869 Tout l'ensemble d'outils, d'éditeurs et de processeurs sont maintenant disponibles 105 00:09:56,869 --> 00:10:00,491 en entrant une simple URL dans le navigateur. 106 00:10:00,491 --> 00:10:09,129 En tant que développeur, vous pouvez démarrer immédiatement, améliorer votre application, 107 00:10:09,129 --> 00:10:13,402 et tester sur une ferme cloud de test. 108 00:10:13,402 --> 00:10:17,628 Quand vous avez testé le nouveau code, et avec succès, 109 00:10:17,628 --> 00:10:21,900 vous pouvez cliquer sur "déployer en prod", et le client est content ! 110 00:10:21,900 --> 00:10:29,191 Vous n'avez pas à perdre de temps à faire l'admin système, ou à répéter vos efforts ! 111 00:10:29,191 --> 00:10:35,902 Vous pouvez avoir tout l'environnement de développement d'un projet derrière une simple URL, 112 00:10:35,902 --> 00:10:41,389 et votre vie est soudainement bien plus heureuse ! 113 00:10:42,635 --> 00:10:50,256 Je vais vous montrer comment un IDE dans le cloud peut marcher. 114 00:10:53,781 --> 00:11:04,462 C'est notre site web, c9.io, et vous ne le voyez pas, parce qu'on a deux écrans... 115 00:11:11,985 --> 00:11:19,857 Donc, vous pouvez vous loguer avec votre compte GitHub ; qui en a un ? 116 00:11:19,857 --> 00:11:30,352 GitHub est un site qui héberge votre code source, avec un aspect social. 117 00:11:30,352 --> 00:11:37,945 Pour les gens qui ont un compte c'est facile ; sinon, vous pouvez créer un compte avec Cloud9. 118 00:11:37,945 --> 00:11:42,961 Ici, vous avez tous vos projets ; ils vivent tous dans le cloud. 119 00:11:42,961 --> 00:11:51,506 Vous pouvez les ouvrir, en les clonant depuis GitHub. 120 00:11:51,506 --> 00:11:58,890 On ouvre le projet Node.JS, par exemple. 121 00:11:58,890 --> 00:12:03,952 Comme vous voyez, vous pouvez reconnaître des éléments d'IDE habituels. 122 00:12:03,952 --> 00:12:11,173 Un éditeur, un arbre de fichiers, et des éléments d'interface pour vous aider dans certaines tâches. 123 00:12:11,173 --> 00:12:20,949 Nous voulons cet éditeur innovant, meilleur que les éditeurs que vous connaissez, dans Eclipse, par exemple, 124 00:12:20,949 --> 00:12:26,011 ou dans d'autres IDEs important, ou des éditeurs de textes. 125 00:12:26,011 --> 00:12:35,670 Quand nous l'avons construit, en septembre 2010, nous l'avons présenté à une conférence, "JS conf", 126 00:12:35,670 --> 00:12:40,616 et immédiatement, les gars de Mozilla qui construisaient un éditeur sont venus nous voir : 127 00:12:40,616 --> 00:12:49,811 "votre éditeur est plus rapide, on pourrait travailler ensemble, et mêler nos efforts" 128 00:12:49,811 --> 00:12:56,313 Et donc, c'est ce qu'on a fait, on a travaillé avec Mozilla pour le rendre meilleur et plus rapide. 129 00:12:56,313 --> 00:13:00,655 Et maintenant, on a une vraie communauté de quelques centaines de gens qui donnent du code, 130 00:13:00,655 --> 00:13:05,763 et qui rendent l'éditeur encore meilleur, avec des raccourcis vim pour ceux qui aiment. 131 00:13:05,763 --> 00:13:11,475 La coloration syntaxique, et toutes ces choses que vous voulez pour en faire le meilleur éditeur 132 00:13:11,475 --> 00:13:16,816 au monde, point final, le détail étant qu'il tourne dans un navigateur. 133 00:13:16,816 --> 00:13:22,667 Le truc cool avec cet éditeur, c'est qui se dimensionne dynamiquement, 134 00:13:22,667 --> 00:13:28,705 même avec 100000 lignes de code, il serait toujours aussi rapide ; il ne rend que la partie que vous voyez. 135 00:13:28,705 --> 00:13:38,550 Cloud9 utilise ACE, cet éditeur, il est open-source, sur ace.ajax.org 136 00:13:38,550 --> 00:13:47,048 et Cloud9 y ajoute notamment des onglets pour naviguer à travers les fichiers. 137 00:13:47,048 --> 00:13:53,898 et les fichiers vivent dans le cloud, donc vous y accéder dans le navigateur, 138 00:13:53,898 --> 00:14:01,584 et on supporte l'offline, donc sans connexion, certains fichiers restent disponibles. 139 00:14:01,584 --> 00:14:06,367 Dans les versions futures, il y aura un support complet de la synchronisation, 140 00:14:06,367 --> 00:14:09,107 on en a fait une démo le mois dernier. 141 00:14:09,107 --> 00:14:15,400 Tout votre projet se synchronise automatiquement avec votre système de fichier local. 142 00:14:15,400 --> 00:14:20,021 Vous pouvez y accéder dans le train. 143 00:14:20,021 --> 00:14:25,077 Créons une application de zéro. 144 00:14:35,462 --> 00:14:39,311 Une application Hello World... 145 00:15:02,049 --> 00:15:09,253 On commence en créant un fichier javascript. 146 00:15:13,961 --> 00:15:19,115 On l'appelle "HelloWorld", fichier vide. 147 00:15:19,115 --> 00:15:27,219 On crée un fichier javascript qui s'exécute côté serveur, qui tourne grâce à Node.JS. 148 00:15:27,219 --> 00:15:31,399 Qui ici connaît Node.JS ? 149 00:15:31,399 --> 00:15:36,066 Pour ceux qui ne connaissent pas, c'est un runtime javascript, qui utilise V8, 150 00:15:36,066 --> 00:15:43,659 et exécute du javascript côté serveur, en étant très orienté sur les entrées/sorties asynchrones. 151 00:15:43,659 --> 00:15:51,577 Vous utilisez un style de développement orienté "événements", comme les événements dans le navigateur, 152 00:15:51,577 --> 00:15:53,644 sauf qu'on est dans le serveur. 153 00:15:53,644 --> 00:15:57,196 Pour toutes les opérations qui peuvent prendre du temps, comme la lecture d'un fichier, 154 00:15:57,196 --> 00:16:04,905 vous passez un callback, qui est retourné quand le contenu du fichier est chargé. 155 00:16:04,905 --> 00:16:08,133 Ça vous autorise à faire beaucoup de choses en même temps, 156 00:16:08,133 --> 00:16:12,600 et de ne pas bloquer votre thread principal. 157 00:16:12,600 --> 00:16:18,098 Donc, créons un petit serveur HTTP. 158 00:16:27,452 --> 00:16:32,294 On crée une classe HTTP. 159 00:16:38,156 --> 00:16:47,342 Ça c'est le callback, et il a deux paramètres, "request" et "response". 160 00:16:58,404 --> 00:17:01,748 On lui demande d'écouter sur le port 80. 161 00:17:01,748 --> 00:17:10,107 Puisqu'il tourne dans le cloud, il va nous lever une erreur, parce qu'on n'a pas le droit d'écouter sur le port 80. 162 00:17:10,107 --> 00:17:14,054 Regardons... Je clique sur "debug"... 163 00:17:14,054 --> 00:17:21,067 La boîte de dialogue me propose d'ajouter des arguments, mais je ne veux pas. 164 00:17:21,067 --> 00:17:23,737 Et j'obtiens mon erreur. 165 00:17:23,737 --> 00:17:28,172 C'est exécuté dans le serveur, qui me dit que je ne peux pas accéder ce port, 166 00:17:28,172 --> 00:17:35,231 il faut que j'utilise le port qui est dans cette variable, que l'on me fournit. 167 00:17:35,231 --> 00:17:38,644 donc, je copie ça là. 168 00:17:38,644 --> 00:17:43,265 On devrait faire autre chose, tiens, à la récupération de la requête. 169 00:17:43,265 --> 00:18:00,464 Répondons, passons "200", et lançons ça. 170 00:18:05,510 --> 00:18:09,178 J'ai oublié quelque chose ? 171 00:18:09,178 --> 00:18:18,332 Ah, après le "200", il faut quand même que j'envoie quelque chose. 172 00:18:27,040 --> 00:18:40,409 Et voila ; c'est un petit serveur web écrit en Node. Je peux l'accéder dans le cloud, et il me dit "HelloWorld". 173 00:18:40,409 --> 00:18:48,290 Maintenant, un peu plus complexe ; on ajoute un compteur. 174 00:19:05,998 --> 00:19:10,462 Regardons ce que ça fait. 175 00:19:16,400 --> 00:19:22,043 À chaque fois que je recharge la page, il s'incrémente, mais deux fois. 176 00:19:22,043 --> 00:19:31,960 C'est parce que le serveur requête aussi la favicône à chaque requête. 177 00:19:31,960 --> 00:19:39,334 Pour faire en sorte que ça ne contrarie pas notre test, 178 00:19:48,026 --> 00:19:55,603 on peut ajouter cette petite condition. 179 00:20:29,268 --> 00:20:32,678 Désolé ? 180 00:20:32,678 --> 00:20:39,322 Oui, c'est partiellement vrai. 181 00:20:46,122 --> 00:20:50,580 Parce que c'est à la favicon qu'il s'intéresse... 182 00:20:50,580 --> 00:20:56,194 Faute de frappe ? 183 00:21:12,825 --> 00:21:26,757 Bon, aucune idée de pourquoi ça ne marche pas, mais on peut passer à autre chose. 184 00:21:26,757 --> 00:21:31,285 On peut aussi positionner un point d'arrêt. 185 00:21:31,285 --> 00:21:39,040 J'arrête ce process... 186 00:21:39,040 --> 00:21:44,102 Et maintenant qu'on a lancé une requête, le breakpoint l'arrête. 187 00:21:44,102 --> 00:21:50,952 On peut inspecter les variables, pour voir ce qui se passe. 188 00:21:50,952 --> 00:22:01,192 On peut voir la pile d'appels ici, et la visiter. 189 00:22:01,192 --> 00:22:06,510 Et tout ceci, ce sont les fichiers internes à Node.JS, que l'on visite. 190 00:22:06,510 --> 00:22:12,367 On peut aussi regarder ce qu'est la variable "counter". 191 00:22:18,398 --> 00:22:22,322 "counter" est à 1. 192 00:22:22,322 --> 00:22:30,287 On débloque, et on relance la requête ; et maintenant, c'est 2. 193 00:22:30,287 --> 00:22:36,470 Vous pouvez aussi changer la variable. 194 00:22:48,747 --> 00:22:51,649 Et comme vous voyez, on a changé la variable ici. 195 00:22:51,649 --> 00:22:59,567 Ça permet un debugging d'application auquel on est habitué dans le monde Java. 196 00:22:59,567 --> 00:23:03,143 Mais ici c'est du javascript, et c'est dans le cloud. 197 00:23:03,143 --> 00:23:06,278 Donc, on n'a pas d'application qui tourne localement. 198 00:23:06,278 --> 00:23:13,638 Et c'est le type de choses qui deviennent possibles avec les navigateurs qui sont de plus en plus rapides. 199 00:23:13,638 --> 00:23:20,321 Beaucoup plus rapides, 3000 fois plus rapides. 200 00:23:20,321 --> 00:23:27,408 Cette application, en terme de vitesse et de temps de démarrage bat Eclipse, mais parce que c'est dans le cloud, 201 00:23:27,408 --> 00:23:35,419 on peut faire beaucoup plus, on peut prendre l'URL, et la partager. 202 00:23:35,419 --> 00:23:42,547 On n'a pas eu à installer quoi que ce soit, j'ai juste créé un projet, pas d'installation de Node, 203 00:23:42,547 --> 00:23:46,704 ou de Git, ou NPM, ou quoi que ce soit. 204 00:23:46,704 --> 00:23:51,673 Ce n'est même pas mon ordinateur que je suis en train d'utiliser. 205 00:23:51,673 --> 00:23:56,526 Je peux prendre n'importe quel ordinateur, et j'ai toujours accès à tous mes projets. 206 00:23:56,526 --> 00:24:05,280 Ça change beaucoup de choses, mais ce qui compte encore plus, c'est la collaboration. 207 00:24:05,280 --> 00:24:07,787 Travailler ensemble sur du code. 208 00:24:07,787 --> 00:24:14,272 Et c'est la partie suivante de cette présentation. 209 00:24:20,164 --> 00:24:29,544 Il y avait un slide de plus que je voulais évoquer, sur le projet qui tourne sous Cloud9 IDE. 210 00:24:29,544 --> 00:24:34,305 Ce sont tous des projets open source que l'on a démarrés et que l'on utilise. 211 00:24:34,305 --> 00:24:42,269 Le plus large est APF, Ajax.org PlatForm, une librairie d'applications qui tourne dans le navigateur. 212 00:24:42,269 --> 00:24:49,769 C'est open source, et ça vous permet de mélanger plusieurs types de composants, de manière déclarative. 213 00:24:49,769 --> 00:24:58,291 Et il y a ACE, je vous en ai parlé, l'éditeur avec la coloration syntaxique, la complétion de code, etc. 214 00:24:58,291 --> 00:25:03,980 Et Cloud9 IDE, qui est open source aussi ; elle est sur GitHub, 215 00:25:03,980 --> 00:25:08,577 vous pouvez la rélécharger, et l'utiliser localement, ou sur votre serveur Web, si vous le souhaitez. 216 00:25:08,577 --> 00:25:17,703 Il y a beaucoup d'autres projets, comme JSDav, WebFS, qui est un wrapper pour le FS offline de Chrome, 217 00:25:17,703 --> 00:25:20,489 et aussi quelques autres librairies. 218 00:25:20,489 --> 00:25:28,105 Donc, jetez-y un oeil, sur github.com/ajaxorg, si ça vous intéresse. 219 00:25:28,105 --> 00:25:34,560 Donc, comme Ruben l'a dit, c'est l'étape suivante dans la collaboration. 220 00:25:34,560 --> 00:25:39,320 Jetons un oeil à la collaboration : il y a des challenges habituels. 221 00:25:39,320 --> 00:25:45,567 Quand vous regardez le monde, vous voyez que c'est un énorme effort de collaboration : 222 00:25:45,567 --> 00:25:51,604 bureaux, immeubles, gouvernements, ... tout est collaboration ! 223 00:25:51,604 --> 00:25:58,198 Et la nature lui a donné une forme particulière, qui la rend efficiente et efficace ! 224 00:25:58,198 --> 00:26:04,235 Prenons un exemple simple encore : des enfants, qui construisent un château de sable. 225 00:26:04,235 --> 00:26:11,085 Si on veut faire un truc simple, comme un gros tas de sable, tout le monde peut travailler librement, 226 00:26:11,085 --> 00:26:17,680 ils travaillent en parallèle, et il n'y a aucun problème, ils font tous la même chose. 227 00:26:17,680 --> 00:26:24,321 Mais une fois que la pile de sable est finie, il faut des changements dynamiques ; 228 00:26:24,321 --> 00:26:31,798 les tâches vont être séparées : un enfant va creuser une trancher, un autre construire le château, 229 00:26:31,798 --> 00:26:35,211 encore un autre doit construire une porte, ... 230 00:26:35,211 --> 00:26:41,434 La collaboration parallèle vient d'être remplacée par une séparation des tâches, 231 00:26:41,434 --> 00:26:49,073 et quand un enfant interfère avec les tâches d'un autre, il va y avoir des caprices, sous peu... 232 00:26:49,073 --> 00:26:53,322 Je ne pense pas que cet enfant déteste les châteaux de sable ; 233 00:26:53,322 --> 00:27:01,031 je pense qu'il ne peut juste pas séparer ses tâches convenablement avec l'autre enfant. 234 00:27:01,031 --> 00:27:10,041 C'est une partie difficile de la collaboration ; et fondamentalement, il n'y a pas une seule manière de faire. 235 00:27:10,041 --> 00:27:18,768 Toutes les tâches ont des paramètres différents selon la phase du process où vous êtes. 236 00:27:20,722 --> 00:27:28,477 Avec le développement, tout le monde utilise sans doute un de ces contrôleurs de sources. 237 00:27:28,477 --> 00:27:34,956 Et c'est la manière de collaborer du malchanceux. 238 00:27:34,956 --> 00:27:40,459 Vous devez uploader votre code pour qu'il soit livré à un serveur, peut-être dans le cloud. 239 00:27:40,459 --> 00:27:43,478 Et qu'il soit re-downloadé. 240 00:27:43,478 --> 00:27:48,841 C'est très distant, vous n'avez pas une réponse immédiate, il faut que vous sachiez ce que les autres font, 241 00:27:48,841 --> 00:27:53,601 en utilisant une autre forme de communication. 242 00:27:53,601 --> 00:27:58,362 Vous travaillez séparément, chacun dans son silo. 243 00:27:58,362 --> 00:28:04,608 Il y a beaucoup d'autres moyens de collaborer, et dans Cloud9, on essaie de trouver des pistes 244 00:28:04,608 --> 00:28:11,249 pour faire en sorte que les développeurs travaillent en temps réel. 245 00:28:11,249 --> 00:28:17,495 Avoir un IDE dans le cloud ouvre la voie à des nouveaux modes de collaboration. 246 00:28:17,495 --> 00:28:24,670 Par exemple, les revues de code interactives : vous pouvez parcourir le code, et ajouter un commentaire. 247 00:28:24,670 --> 00:28:30,382 Et c'est immédiatement partagé avec les autres personnes, parce que c'est dans le cloud. 248 00:28:30,382 --> 00:28:41,806 Pensez aussi à l'entraide, à la formation, au partage de morceaux de codes, ou de l'URL de votre application. 249 00:28:41,806 --> 00:28:46,822 On n'aura plus besoin de dépendre d'inventions comme celle-ci, pour la programmation à plusieurs. 250 00:28:46,822 --> 00:28:53,880 Il y a une nouvelle manière de collaborer qui améliore l'expérience de développement. 251 00:28:53,880 --> 00:29:01,450 Disons que vous avez une équipe sur un projet, je vais prendre un exemple véridique. 252 00:29:01,450 --> 00:29:10,808 Avec Cloud9, on a la possibilité de partager notre environnement de travail. 253 00:29:10,808 --> 00:29:14,523 Regardons un peu la situation de notre compagnie à nous : 254 00:29:14,523 --> 00:29:18,958 on a des gens qui travaillent à distance, aux USA ou en Europe, 255 00:29:18,958 --> 00:29:22,673 mais l'équipe centrale de développement est à Amsterdam. 256 00:29:22,673 --> 00:29:30,522 Souvent, quelqu'un a un problème, il y a un bug à corriger, du code doit être produit, 257 00:29:30,522 --> 00:29:39,647 ça nécessite d'y réfléchir, et d'y collaborer ; c'est pratique de travailler ensemble sur ce problème. 258 00:29:39,647 --> 00:29:42,317 Comment faire ? 259 00:29:42,317 --> 00:29:47,402 Avec Cloud9, tout le projet est en ligne, pas juste le code. 260 00:29:47,402 --> 00:29:53,045 Le runtime, la base de données, tout est là derrière une unique URL. 261 00:29:53,045 --> 00:29:56,760 Comme vous en avez l'habitude avec d'autres services en ligne, 262 00:29:56,760 --> 00:30:04,446 avec Cloud9, vous pouver partager l'URL de votre environnement avec vos collègues de l'autre côté du monde. 263 00:30:04,446 --> 00:30:10,785 Pour le faire, vous positionnez des permissions, lecture seule ou lecture-écriture. 264 00:30:10,785 --> 00:30:14,639 Puis, votre ami rejoint votre projet. 265 00:30:14,639 --> 00:30:21,536 À l'intérieur du projet, vous pourrez communiquer directement, chat, vidéo, conversations audio ; 266 00:30:21,536 --> 00:30:30,406 mais avant tout, vous pouvez coder simultanément, de manière collaborative, comme vous le faites avec Google Docs. 267 00:30:30,406 --> 00:30:36,652 Et non seulement ça, mais la personne qui s'est fait inviter peut lancer l'application. 268 00:30:36,652 --> 00:30:41,528 En cliquant sur le bouton "debug", vous lancez le code dans un système identique au vôtre, 269 00:30:41,528 --> 00:30:44,686 parce que c'est très exactement votre système. 270 00:30:44,686 --> 00:30:55,762 Donc la personne n'a pas à simuler votre environnement, et la phrase "Ça marche chez moi" n'existe plus ! 271 00:30:55,762 --> 00:31:00,406 Donc, en résumé : les APIs dans le cloud vous aident à dimensionner, 272 00:31:00,406 --> 00:31:06,675 et avoir votre code dans le cloud vous facilitent l'accès, la collaboration, et la maintenance sur vos applications. 273 00:31:06,675 --> 00:31:10,158 L'intégration permet de cibler facilement des plateformes. 274 00:31:10,158 --> 00:31:15,267 Donc, c'était un aperçu de l'avenir, merci de votre attention, 275 00:31:15,267 --> 00:31:22,256 et si vous voulez collaborer, ou utiliser notre application, c'est en ligne sur c9.io, ou GitHub. 276 00:31:22,256 --> 00:31:26,349 Merci beaucoup ! 277 00:31:33,564 --> 00:31:36,490 Y a-t-il des questions ? 278 00:31:36,490 --> 00:31:40,135 C'est un vieux troll, désolé de le présenter ! 279 00:31:40,135 --> 00:31:48,355 Mais il y a un problème avec la confiance et la sécurité, et l'accessibilité, dans le cloud. 280 00:31:48,355 --> 00:31:54,532 Je peux hacker dans le train, et pusher mes commits ; mais que se passe-t-il 281 00:31:54,532 --> 00:32:01,591 si je possède une compagnie privée, et je ne veux pas ne plus être capable de récupérer mes données 282 00:32:01,591 --> 00:32:06,002 parce que le service est down, ou a simplement fermé ? 283 00:32:06,002 --> 00:32:09,555 Je ne vous souhaite pas d'avoir à fermer Cloud9, bien sûr... 284 00:32:09,555 --> 00:32:19,795 Mais quels sont les problèmes de sécurité, de confidentialité, de confiance, et comment vous les gérez ? 285 00:32:19,795 --> 00:32:23,301 Je pense que ce sont des soucis généralisés au le cloud ; 286 00:32:23,301 --> 00:32:26,088 et je pense que le monde s'en rend progressivement compte, 287 00:32:26,088 --> 00:32:29,478 de plus en plus de grosses applications tournent en ligne, 288 00:32:29,478 --> 00:32:34,633 et les gens mettent beaucoup de leur valeur dedans, regardez Salesforce, par exemple. 289 00:32:34,633 --> 00:32:38,742 Il y a des solutions, notamment aux problèmes de sécurité bien entendu ; 290 00:32:38,742 --> 00:32:43,851 on pourrait même avancer qu'un fournisseur de cloud investira plus dans sa sécurité, 291 00:32:43,851 --> 00:32:52,558 parce que c'est son "nom", et sa compagnie n'aura aucune valeur en cas de problème de sécurité. 292 00:32:52,558 --> 00:32:58,596 Mais il y a des compagnies qui veulent pouvoir contrôler ça eux-mêmes. 293 00:32:58,596 --> 00:33:04,493 Je pense qu'il va toujours y avoir un équilibre entre le cloud privé, et le cloud public ; 294 00:33:04,493 --> 00:33:09,904 et ceux qui se soucient plus des coûts se pencheront vers les publics, 295 00:33:09,904 --> 00:33:21,278 et ceux qui se soucient plus de la sécurité se pencheront vers les clouds privés. 296 00:33:25,647 --> 00:33:31,545 Dans l'exemple, vous avez fait une application en Node.JS, et je me demande, 297 00:33:31,545 --> 00:33:37,837 il y a plusieurs versions de Node.JS, comment vous en sortir ? 298 00:33:37,837 --> 00:33:42,296 Chaque utilisateur installe sa propre version de Node.JS ? 299 00:33:42,296 --> 00:33:48,263 Est-ce qu'il y a des modules spéciaux, des hacks spéciaux ? 300 00:33:48,263 --> 00:33:54,207 Ou est-ce que vous le mettez à jour à la dernière version, mais du coup le code doit être mis à jour ? 301 00:33:54,207 --> 00:33:57,133 Ou alors vous restez sur une version spécifique ? 302 00:33:57,133 --> 00:34:02,195 Pour le moment, nous ne supportons qu'une version, mais on travaille dur, 303 00:34:02,195 --> 00:34:09,463 pour gérer ce problème de versions ; et c'est dans le SDK, et dans le runtime en effet. 304 00:34:09,463 --> 00:34:15,268 Ce que vous aurez, c'est un fichier de configuration, dans votre projet, qui déclare la version, 305 00:34:15,268 --> 00:34:17,636 et on les supportera toutes. 306 00:34:17,636 --> 00:34:29,338 On travaille ensemble avec Joyent pour supporter toutes ces versions de Node simultanément. 307 00:34:35,400 --> 00:34:39,208 Bonjour, je ne vous ai jamais vu sauvegarder votre code ; 308 00:34:39,208 --> 00:34:42,923 et comment est-ce que vous gérer le versionning, aussi ? 309 00:34:42,923 --> 00:34:50,144 J'ai sauvegardé du code en utilisant Cmd+S, mais c'était rapide ! 310 00:34:50,144 --> 00:34:56,158 Si je ne sauvegarde pas, il sauvegardera quand je cliquerai sur le bouton "debug". 311 00:34:56,158 --> 00:35:02,079 Pour le versionning, vous avez dû voir vers le bas l'interface en ligne de commande ; 312 00:35:02,079 --> 00:35:07,281 et vous pouvez faire beaucoup de choses que vous feriez sur votre ordinateur, comme "ls" ou "cd", 313 00:35:07,281 --> 00:35:11,878 ou taper "git" ; et même "git" et ce que vous voulez. 314 00:35:11,878 --> 00:35:17,033 "git status", "git push/pull", "git commit", pour gérer vos versions. 315 00:35:17,033 --> 00:35:25,648 On ajoute Mercurial en ce moment aussi ; Subversion n'est pas encore sûr, mais on finira probablement par l'ajouter. 316 00:35:25,648 --> 00:35:34,959 Pardon ? inaudible Peut-être, peut-être... 317 00:35:34,959 --> 00:35:41,878 Il demandait aussi si ça allait fonctionner avec Bazaar. 318 00:35:41,878 --> 00:35:51,909 Bonjour, si j'ai bien compris, votre IDE Cloud9 exécute du Javascript du côté du serveur ? - Oui. 319 00:35:51,909 --> 00:35:57,436 Du coup, est-ce qu'on devrait l'utiliser comme CDN, Content Delivery Network ? 320 00:35:57,436 --> 00:35:59,618 Est-ce possible ? 321 00:35:59,618 --> 00:36:02,730 Heu... non... 322 00:36:02,730 --> 00:36:09,347 Ce sont des concepts très différents... 323 00:36:09,347 --> 00:36:15,501 Il exécute du code, mais qui vivra uniquement sur un serveur, quelque part dans le cloud. 324 00:36:15,501 --> 00:36:21,515 Donc ce n'est pas plus proche de certains réseaux, c'est à un seul endroit, 325 00:36:21,515 --> 00:36:24,069 contrairement à ce que ferait un CDN. 326 00:36:24,069 --> 00:36:28,341 Ok, donc c'est juste de l'exécution locale pour tester ? 327 00:36:28,341 --> 00:36:32,149 Oui, l'exécution est dans le but de développer votre application ; 328 00:36:32,149 --> 00:36:40,811 donc on vous fournit toute l'infrastructure pour développer votre appli, comme vous l'installeriez localement. 329 00:36:40,811 --> 00:36:50,795 Juste un petit exemple : votre IDE a l'air d'utiliser MarkItUp, pour les Cmd+S et tout. 330 00:36:50,795 --> 00:36:57,273 Si vous voulez refactoriser MarkitUp avec votre IDE, que va-t-il se passer ? 331 00:36:57,273 --> 00:37:01,523 Je ne comprends pas vraiment la question, désolé ? 332 00:37:01,523 --> 00:37:08,164 C'est écrit en Javascript, Cloud9? - Oui. - Il utilise des librairies, des plugs-in jQuery ? 333 00:37:08,164 --> 00:37:12,483 Quelque chose de similaire, mais pas jQuery, oui. 334 00:37:12,483 --> 00:37:19,634 Et si je veux refactoriser un plug-in jQuery, par exemple (désolé pour mon anglais) 335 00:37:19,634 --> 00:37:27,552 qui est utilisé par Cloud9 IDE ? Est-ce qu'il y a des conflits entre les exécutions ? 336 00:37:27,552 --> 00:37:33,357 Non, l'exécution de votre application est complètement séparée de Cloud9. 337 00:37:33,357 --> 00:37:41,879 Cloud9 est juste une application qui tourne là, et quel que soit le code que vous tapez, il tourne dans une nouvelle fenêtre. 338 00:37:41,879 --> 00:37:45,734 Donc il n'y a pas de conflits. 339 00:37:45,734 --> 00:37:49,193 C'était ça la question que tu voulais poser ? - Ouais ouais. 340 00:37:49,193 --> 00:37:52,421 Merci beaucoup. Juste pour savoir. 341 00:37:52,421 --> 00:37:56,763 inaudible 342 00:37:56,763 --> 00:38:01,779 Production ? Non, c'est juste pour du développement. 343 00:38:01,779 --> 00:38:06,283 La question c'est : est-ce fait pour du développement, ou aussi de la production ? 344 00:38:06,283 --> 00:38:09,348 Et on veut vraiment rester concentrés sur le développement. 345 00:38:09,348 --> 00:38:12,831 On travaille avec d'autres compagnies qui fournissent des environnements de production, 346 00:38:12,831 --> 00:38:19,402 donc vous pouvez publier votre application depuis Cloud9, vers l'environnement que vous voulez. 347 00:38:19,402 --> 00:38:23,048 Vous avez montré Node.JS, mais qu'est-ce qu'il en est de Python, de Ruby, ... ? 348 00:38:23,048 --> 00:38:28,389 On était à Google I/O le mois dernier, à démontrer un runtime Python, 349 00:38:28,389 --> 00:38:31,361 pour pouvoir déployer dans Google App Engine. 350 00:38:31,361 --> 00:38:36,910 On travaille sur ce type de runtimes, et on les ajoutera dans les mois qui viennent. 351 00:38:36,910 --> 00:38:41,252 On pourrait considérer un déploiement vers Heroku, aussi ? 352 00:38:41,252 --> 00:38:45,293 Où es... ? - Juste derrière. - Ah ! 353 00:38:45,293 --> 00:38:52,770 Désolé ? - On pourrait considérer un déploiement vers Heroku, en d'autres langages, comme PHP ? 354 00:38:52,770 --> 00:39:05,866 Oui, on pense à Ruby aussi, et peut-être PHP, et on discute avec ces fournisseurs pour déployer vers eux. 355 00:39:05,866 --> 00:39:14,666 Désolé pour mon anglais. Est-ce qu'il y a des services de tests automatisés dans l'outil ? 356 00:39:14,666 --> 00:39:18,706 Vous parlez de développement, de plans, d'infrastructure, ... 357 00:39:18,706 --> 00:39:23,188 Très bonne question. Pas encore, mais c'est sur la roadmap. 358 00:39:23,188 --> 00:39:29,364 Et on est en train de construire une jolie interface, pour brancher n'importe quel framework 359 00:39:29,364 --> 00:39:32,917 de test unitaire que vous souhaitez. 360 00:39:32,917 --> 00:39:37,120 Et on va aussi ajouter des tests Selenium, pour que vous puissiez les lancer, 361 00:39:37,120 --> 00:39:47,468 les enregistrer dans Cloud9 mais les lancer dans le cloud, pour n'importe quel navigateur. 362 00:39:56,299 --> 00:40:02,522 Bonjour, j'aimerais en savoir plus sur votre business model, est-ce que le service est gratuit ? 363 00:40:02,522 --> 00:40:10,487 Pourquoi devrais-je avoir confiance en un service gratuit comme le vôtre ? 364 00:40:10,487 --> 00:40:16,454 Ok, le service est basé sur du freemium, c'est-à-dire qu'il y a une partie gratuite. 365 00:40:16,454 --> 00:40:21,121 C'est gratuit pour une utilisation open-source ; donc si vous avez un projet open-source, 366 00:40:21,121 --> 00:40:24,256 et que vous voulez travailler dessus dans le cloud, c'est gratuit. 367 00:40:24,256 --> 00:40:32,200 Si c'est un projet commercial, que vous voulez avoir en privé, alors il faut payer. 368 00:40:35,077 --> 00:40:38,676 Que se passe-t-il quand vous perdez la connexion ? 369 00:40:38,676 --> 00:40:44,481 On peut toujours utiliser l'éditeur et écrire du code ? 370 00:40:44,481 --> 00:40:49,798 La fonctionnalité "offline" devrait disponible dans quelques semaines ; 371 00:40:49,798 --> 00:40:55,278 elle permettra de synchroniser tout le projet sur votre système de fichier, 372 00:40:55,278 --> 00:40:59,527 et en utilisant le manifest HTML5, l'application est disponible aussi. 373 00:40:59,527 --> 00:41:04,752 Donc vous pouvez faire toutes les opérations, créer des répertoires, des fichiers, etc. 374 00:41:04,752 --> 00:41:14,368 les sauvegarder, les supprimer, et ils seront resynchronisés en se reconnectant. 375 00:41:23,722 --> 00:41:30,897 Si vous n'êtes pas un environnement de production, comment vous gérer les déploiements ? 376 00:41:30,897 --> 00:41:36,795 L'un de vos arguments était que vous êtes dans le cloud, donc c'est facile de déployer ; 377 00:41:36,795 --> 00:41:45,642 mais si la configuration de l'environnement de déploiement est différent du vôtre, vous ne résolvez pas le problème ? 378 00:41:45,642 --> 00:41:52,051 Ce qu'on fait, c'est qu'on travaille ensemble avec les PaaS, ou les fournisseurs d'infrastructure. 379 00:41:52,051 --> 00:41:57,763 Quand vous commencez votre projet, vous pouvez choisir : je veux créer un projet Google App Engine. 380 00:41:57,763 --> 00:42:02,639 Et votre environnement se configure pour que vous développiez sur App Engine. 381 00:42:02,639 --> 00:42:06,285 Et quand vous déployez, il déploie sur App Engine. 382 00:42:06,285 --> 00:42:14,296 Du coup, on génère de la liberté, parce que toutes ces organisations ré-invente comment on fait ça. 383 00:42:14,296 --> 00:42:23,583 Nous on ne veut pas faire ça, on veut juste fournir la meilleure expérience de développement. 384 00:42:23,583 --> 00:42:25,952 Je pense qu'on n'a plus de temps. 385 00:42:25,952 --> 00:42:33,313 On a deux livres, qui doivent être donnés aux meilleures questions ; mais il faut que tu me donnes un coup de main. 386 00:42:33,313 --> 00:42:36,331 J'ai trouvé la première question plutôt bonne. - Moi aussi, oui. 387 00:42:36,331 --> 00:42:39,187 Et qui va avoir le deuxième ? 388 00:42:39,187 --> 00:42:43,181 J'ai trouvé la question sur les tests très bonne. - Mais c'est un orateur ! 389 00:42:43,181 --> 00:42:46,827 Mais il ne peut pas l'avoir, je sais, c'est juste une remarque pour l'honneur ! 390 00:42:46,827 --> 00:42:51,564 Bon, du coup, on va le garder ! 391 00:42:51,564 --> 00:42:53,421 Je pense que... 392 00:42:53,421 --> 00:42:56,393 La dernière ? 393 00:42:56,393 --> 00:43:02,084 Ok, donc pour la première et la dernière question ! 394 00:43:02,084 --> 00:43:04,530 Félicitations ! 395 00:43:08,653 --> 00:43:09,884 Voila. 396 00:43:09,884 --> 00:43:13,878 Vous pouvez poser quand même une dernière question en français si vous voulez, si c'est juste la langue qui vous retient. 397 00:43:13,878 --> 00:43:17,779 On traduira après. 398 00:43:17,779 --> 00:43:21,076 Si vous avez honte de votre anglais... 399 00:43:21,076 --> 00:43:22,725 Merci beaucoup ! 400 00:43:22,725 --> 99:59:59,999 Merci !