WEBVTT
00:00:07.414 --> 00:00:10.008
Ok, bienvenue à tous !
00:00:10.008 --> 00:00:13.235
Je suis ici aujourd'hui avec Lieke pour vous parler de Cloud9,
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.
00:00:20.039 --> 00:00:26.458
Je suis Ruben Daniels, co-fondateur et directeur de Ajax.org, et Cloud9.
00:00:26.474 --> 00:00:31.835
Je développe en Javascript depuis 1999.
00:00:31.835 --> 00:00:35.921
Ça fait un moment, et javascript a beaucoup évolué.
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.
00:00:44.582 --> 00:00:51.804
Notre compagnie comprend 20 personnes, et on essaie de révolutionner le développement
00:00:51.804 --> 00:00:54.596
de code, dans le cloud.
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,
00:01:01.022 --> 00:01:05.921
parce que Ruben ne parle pas, et moi je ne parle pas "tant" bien.
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 ?
00:01:12.911 --> 00:01:16.696
C'est presque toute la salle.
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.
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 ?"
00:01:40.426 --> 00:01:44.420
Ou plutôt, "Pourquoi le cloud pour des développeurs ?"
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,
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.
00:01:57.307 --> 00:02:04.350
Je vais laisser Lieke commencer, elle va vous expliquer pourquoi le cloud est important.
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.
00:02:12.075 --> 00:02:16.673
Il se peut que vous vous demandiez : pourquoi travailler dans le cloud ?
00:02:16.673 --> 00:02:21.748
Et d'ailleurs, c'est quoi cette chose qu'on appelle le "cloud" ?
00:02:22.733 --> 00:02:25.400
Alors, jetons un oeil au cloud...
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,
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,
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.
00:02:49.343 --> 00:02:55.543
Donc, il y a deux types de systèmes que l'on appelle "cloud" :
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,
00:02:59.026 --> 00:03:03.647
ce qui est proche de "Infrastructure as a Service" (IaaS)
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)
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,
00:03:18.670 --> 00:03:23.128
que l'on utilise en construisant des applications au-dessus.
00:03:23.128 --> 00:03:27.447
Ça inclut donc l'espace disque, la base de données, et la puissance de calcul.
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
00:03:33.554 --> 00:03:36.967
et Heroku sont plutôt loin dans le concept.
00:03:36.967 --> 00:03:41.983
Donc, regardons un exemple ; il est plutôt simple, peut-être inutile,
00:03:41.983 --> 00:03:44.816
mais j'aimerais vous expliquer ce que le cloud signifie.
00:03:44.816 --> 00:03:49.227
Donc, disons que vous avez une boîtes de livres ; vous devez la stocker,
00:03:49.227 --> 00:03:52.409
et plus tard, vous voudrez récupérer des livres.
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,
00:04:01.743 --> 00:04:06.851
mais maintenant, avec la virtualisation, l'abri est déjà prêt.
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,
00:04:13.469 --> 00:04:17.370
et stocker les livres vous-mêmes.
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,
00:04:24.731 --> 00:04:29.584
il les stocke pour vous, et vous pouvez les lui redemander quand vous voulez.
00:04:29.584 --> 00:04:38.036
C'est un exemple simple, mais il montre bien les niveaux de pré-intégration.
00:04:38.036 --> 00:04:43.240
Alors, quelle est la fonctionnalité la plus utile du cloud ?
00:04:43.240 --> 00:04:49.437
Premièrement, gérer le dimensionnement des serveurs.
00:04:49.437 --> 00:04:57.332
Imaginez que vous avez une application sociale, vous commencez avec quelques utilisateurs,
00:04:57.332 --> 00:05:01.511
et vous le faites tourner sur une VM chez Amazon.
00:05:01.511 --> 00:05:05.923
Soudainement, Justin Bieber remarque votre appli, et il tweete dessus.
00:05:05.923 --> 00:05:12.076
Et hop, 8 million d'adolescentes excitées, qui embourbent soudainement sur vos serveurs !
00:05:12.076 --> 00:05:17.928
Que votre business model soit construit pour ça, c'est pas la question !
00:05:17.928 --> 00:05:21.596
Et du coup, vos serveurs explosent...
00:05:21.596 --> 00:05:27.378
Il faut que vous puissiez gérer vos ressources back-end rapidement, donc que faire ?
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 !
00:05:36.179 --> 00:05:40.869
La plupart de vos applications avec des fonctionnalités sociales, ou des bases de données,
00:05:40.869 --> 00:05:44.723
ne peuvent pas se redimensionner horizontalement, sans une étude approfondie ;
00:05:44.723 --> 00:05:47.185
c'est donc un cauchemar !
00:05:47.185 --> 00:05:54.104
Pas juste à cause de lui, mais à cause du coût pour architecturer et dimensionner votre application
00:05:54.104 --> 00:05:59.411
sans même savoir si elle sera populaire ou non.
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.
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,
00:06:13.423 --> 00:06:15.327
puis redescendre à 1 utilisateur !
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 !
00:06:23.361 --> 00:06:27.611
En gros, le cloud sauve du temps et de l'argent,
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 !
00:06:33.114 --> 00:06:38.826
Ils peuvent se concentrer sur les fonctionnalités demandées par les utilisateurs.
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.
00:06:43.354 --> 00:06:45.026
Ruben ?
00:06:45.026 --> 00:06:48.694
Qu'est-ce que ça veut dire pour le développement ?
00:06:48.694 --> 00:06:54.081
Les plateformes cloud fournissent un SDK, que vous installez sur votre machine,
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.
00:06:58.563 --> 00:07:03.741
Regardons App Engine, dans Google, qui embarque Big Table.
00:07:03.741 --> 00:07:08.222
Big Table est cette énorme infrastructure dans le cloud pour stocker des données ;
00:07:08.222 --> 00:07:11.102
vous ne pouvez pas l'installer sur votre PC.
00:07:11.102 --> 00:07:17.418
Donc, vous devez simuler ça, quand vous installez ce SDK, vous simulez l'environnement cloud.
00:07:17.418 --> 00:07:22.480
Et ce n'est jamais parfait ; vous aurez toujours le cas où votre application marche localement,
00:07:22.480 --> 00:07:27.774
et vous l'uploadez, et elle ne marche pas, à cause de certaines différences.
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.
00:07:38.710 --> 00:07:44.004
Cloud9, c'est notre vision d'une solution au problème.
00:07:44.004 --> 00:07:49.507
Le code que vous développez ne vit pas sur votre machine, mais dans le cloud,
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.
00:07:58.610 --> 00:08:02.929
Donc quand vous buildez l'application, il n'y a pas de problème.
00:08:02.929 --> 00:08:07.758
Vous pouvez lancer et débuguer dans le même environnement aussi.
00:08:07.758 --> 00:08:12.008
Un autre avantage : vous n'avez pas à télécharger et installer un SDK,
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.
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 :
00:08:27.913 --> 00:08:29.788
écrire du code.
00:08:30.465 --> 00:08:37.666
Maintenant, prenons ce scénario, vous êtes un nouveau développeur, vous rejoignez une compagnie,
00:08:37.666 --> 00:08:41.218
qui a distribué une web-app il y a un an ;
00:08:41.218 --> 00:08:45.073
les clients appellent parce qu'ils ont entendu parler d'une nouvelle technologie,
00:08:45.073 --> 00:08:48.904
et ils veulent que la web-app la supporte.
00:08:48.904 --> 00:08:56.427
Pour ajouter cette fonctionnalité convenablement, vous avez besoin de tout l'environnement,
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.
00:09:05.437 --> 00:09:10.011
Il faut que vous trouviez votre chemin dans ce système : discuter avec les administrateurs,
00:09:10.011 --> 00:09:14.214
trouver les mots de passe, comprendre la procédure de déploiement...
00:09:14.214 --> 00:09:20.530
Du coup, avant d'avoir créé un environnement de développement que vous pouvez utiliser
00:09:20.530 --> 00:09:28.285
sans avoir à modifier du code en live, vous devez passez une éternité à faire tout ça.
00:09:28.285 --> 00:09:33.301
Ce problème est une réalité pour beaucoup de développeurs.
00:09:33.301 --> 00:09:38.572
Imaginez que vous tentiez d'ajouter une fonctionnalité, ou de résoudre un bug,
00:09:38.572 --> 00:09:44.052
maintenant, imaginez ça : un environnement de développement qui tourne dans le cloud
00:09:44.052 --> 00:09:49.531
est ce qui est utilisé pour fabriquer cette application.
00:09:49.531 --> 00:09:56.869
Tout l'ensemble d'outils, d'éditeurs et de processeurs sont maintenant disponibles
00:09:56.869 --> 00:10:00.491
en entrant une simple URL dans le navigateur.
00:10:00.491 --> 00:10:09.129
En tant que développeur, vous pouvez démarrer immédiatement, améliorer votre application,
00:10:09.129 --> 00:10:13.402
et tester sur une ferme cloud de test.
00:10:13.402 --> 00:10:17.628
Quand vous avez testé le nouveau code, et avec succès,
00:10:17.628 --> 00:10:21.900
vous pouvez cliquer sur "déployer en prod", et le client est content !
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 !
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,
00:10:35.902 --> 00:10:41.389
et votre vie est soudainement bien plus heureuse !
00:10:42.635 --> 00:10:50.256
Je vais vous montrer comment un IDE dans le cloud peut marcher.
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...
00:11:11.985 --> 00:11:19.857
Donc, vous pouvez vous loguer avec votre compte GitHub ; qui en a un ?
00:11:19.857 --> 00:11:30.352
GitHub est un site qui héberge votre code source, avec un aspect social.
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.
00:11:37.945 --> 00:11:42.961
Ici, vous avez tous vos projets ; ils vivent tous dans le cloud.
00:11:42.961 --> 00:11:51.506
Vous pouvez les ouvrir, en les clonant depuis GitHub.
00:11:51.506 --> 00:11:58.890
On ouvre le projet Node.JS, par exemple.
00:11:58.890 --> 00:12:03.952
Comme vous voyez, vous pouvez reconnaître des éléments d'IDE habituels.
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.
00:12:11.173 --> 00:12:20.949
Nous voulons cet éditeur innovant, meilleur que les éditeurs que vous connaissez, dans Eclipse, par exemple,
00:12:20.949 --> 00:12:26.011
ou dans d'autres IDEs important, ou des éditeurs de textes.
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",
00:12:35.670 --> 00:12:40.616
et immédiatement, les gars de Mozilla qui construisaient un éditeur sont venus nous voir :
00:12:40.616 --> 00:12:49.811
"votre éditeur est plus rapide, on pourrait travailler ensemble, et mêler nos efforts"
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.
00:12:56.313 --> 00:13:00.655
Et maintenant, on a une vraie communauté de quelques centaines de gens qui donnent du code,
00:13:00.655 --> 00:13:05.763
et qui rendent l'éditeur encore meilleur, avec des raccourcis vim pour ceux qui aiment.
00:13:05.763 --> 00:13:11.475
La coloration syntaxique, et toutes ces choses que vous voulez pour en faire le meilleur éditeur
00:13:11.475 --> 00:13:16.816
au monde, point final, le détail étant qu'il tourne dans un navigateur.
00:13:16.816 --> 00:13:22.667
Le truc cool avec cet éditeur, c'est qui se dimensionne dynamiquement,
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.
00:13:28.705 --> 00:13:38.550
Cloud9 utilise ACE, cet éditeur, il est open-source, sur ace.ajax.org
00:13:38.550 --> 00:13:47.048
et Cloud9 y ajoute notamment des onglets pour naviguer à travers les fichiers.
00:13:47.048 --> 00:13:53.898
et les fichiers vivent dans le cloud, donc vous y accéder dans le navigateur,
00:13:53.898 --> 00:14:01.584
et on supporte l'offline, donc sans connexion, certains fichiers restent disponibles.
00:14:01.584 --> 00:14:06.367
Dans les versions futures, il y aura un support complet de la synchronisation,
00:14:06.367 --> 00:14:09.107
on en a fait une démo le mois dernier.
00:14:09.107 --> 00:14:15.400
Tout votre projet se synchronise automatiquement avec votre système de fichier local.
00:14:15.400 --> 00:14:20.021
Vous pouvez y accéder dans le train.
00:14:20.021 --> 00:14:25.077
Créons une application de zéro.
00:14:35.462 --> 00:14:39.311
Une application Hello World...
00:15:02.049 --> 00:15:09.253
On commence en créant un fichier javascript.
00:15:13.961 --> 00:15:19.115
On l'appelle "HelloWorld", fichier vide.
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.
00:15:27.219 --> 00:15:31.399
Qui ici connaît Node.JS ?
00:15:31.399 --> 00:15:36.066
Pour ceux qui ne connaissent pas, c'est un runtime javascript, qui utilise V8,
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.
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,
00:15:51.577 --> 00:15:53.644
sauf qu'on est dans le serveur.
00:15:53.644 --> 00:15:57.196
Pour toutes les opérations qui peuvent prendre du temps, comme la lecture d'un fichier,
00:15:57.196 --> 00:16:04.905
vous passez un callback, qui est retourné quand le contenu du fichier est chargé.
00:16:04.905 --> 00:16:08.133
Ça vous autorise à faire beaucoup de choses en même temps,
00:16:08.133 --> 00:16:12.600
et de ne pas bloquer votre thread principal.
00:16:12.600 --> 00:16:18.098
Donc, créons un petit serveur HTTP.
00:16:27.452 --> 00:16:32.294
On crée une classe HTTP.
00:16:38.156 --> 00:16:47.342
Ça c'est le callback, et il a deux paramètres, "request" et "response".
00:16:58.404 --> 00:17:01.748
On lui demande d'écouter sur le port 80.
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.
00:17:10.107 --> 00:17:14.054
Regardons... Je clique sur "debug"...
00:17:14.054 --> 00:17:21.067
La boîte de dialogue me propose d'ajouter des arguments, mais je ne veux pas.
00:17:21.067 --> 00:17:23.737
Et j'obtiens mon erreur.
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,
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.
00:17:35.231 --> 00:17:38.644
donc, je copie ça là.
00:17:38.644 --> 00:17:43.265
On devrait faire autre chose, tiens, à la récupération de la requête.
00:17:43.265 --> 00:18:00.464
Répondons, passons "200", et lançons ça.
00:18:05.510 --> 00:18:09.178
J'ai oublié quelque chose ?
00:18:09.178 --> 00:18:18.332
Ah, après le "200", il faut quand même que j'envoie quelque chose.
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".
00:18:40.409 --> 00:18:48.290
Maintenant, un peu plus complexe ; on ajoute un compteur.
00:19:05.998 --> 00:19:10.462
Regardons ce que ça fait.
00:19:16.400 --> 00:19:22.043
À chaque fois que je recharge la page, il s'incrémente, mais deux fois.
00:19:22.043 --> 00:19:31.960
C'est parce que le serveur requête aussi la favicône à chaque requête.
00:19:31.960 --> 00:19:39.334
Pour faire en sorte que ça ne contrarie pas notre test,
00:19:48.026 --> 00:19:55.603
on peut ajouter cette petite condition.
00:20:29.268 --> 00:20:32.678
Désolé ?
00:20:32.678 --> 00:20:39.322
Oui, c'est partiellement vrai.
00:20:46.122 --> 00:20:50.580
Parce que c'est à la favicon qu'il s'intéresse...
00:20:50.580 --> 00:20:56.194
Faute de frappe ?
00:21:12.825 --> 00:21:26.757
Bon, aucune idée de pourquoi ça ne marche pas, mais on peut passer à autre chose.
00:21:26.757 --> 00:21:31.285
On peut aussi positionner un point d'arrêt.
00:21:31.285 --> 00:21:39.040
J'arrête ce process...
00:21:39.040 --> 00:21:44.102
Et maintenant qu'on a lancé une requête, le breakpoint l'arrête.
00:21:44.102 --> 00:21:50.952
On peut inspecter les variables, pour voir ce qui se passe.
00:21:50.952 --> 00:22:01.192
On peut voir la pile d'appels ici, et la visiter.
00:22:01.192 --> 00:22:06.510
Et tout ceci, ce sont les fichiers internes à Node.JS, que l'on visite.
00:22:06.510 --> 00:22:12.367
On peut aussi regarder ce qu'est la variable "counter".
00:22:18.398 --> 00:22:22.322
"counter" est à 1.
00:22:22.322 --> 00:22:30.287
On débloque, et on relance la requête ; et maintenant, c'est 2.
00:22:30.287 --> 00:22:36.470
Vous pouvez aussi changer la variable.
00:22:48.747 --> 00:22:51.649
Et comme vous voyez, on a changé la variable ici.
00:22:51.649 --> 00:22:59.567
Ça permet un debugging d'application auquel on est habitué dans le monde Java.
00:22:59.567 --> 00:23:03.143
Mais ici c'est du javascript, et c'est dans le cloud.
00:23:03.143 --> 00:23:06.278
Donc, on n'a pas d'application qui tourne localement.
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.
00:23:13.638 --> 00:23:20.321
Beaucoup plus rapides, 3000 fois plus rapides.
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,
00:23:27.408 --> 00:23:35.419
on peut faire beaucoup plus, on peut prendre l'URL, et la partager.
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,
00:23:42.547 --> 00:23:46.704
ou de Git, ou NPM, ou quoi que ce soit.
00:23:46.704 --> 00:23:51.673
Ce n'est même pas mon ordinateur que je suis en train d'utiliser.
00:23:51.673 --> 00:23:56.526
Je peux prendre n'importe quel ordinateur, et j'ai toujours accès à tous mes projets.
00:23:56.526 --> 00:24:05.280
Ça change beaucoup de choses, mais ce qui compte encore plus, c'est la collaboration.
00:24:05.280 --> 00:24:07.787
Travailler ensemble sur du code.
00:24:07.787 --> 00:24:14.272
Et c'est la partie suivante de cette présentation.
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.
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.
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.
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.
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.
00:24:58.291 --> 00:25:03.980
Et Cloud9 IDE, qui est open source aussi ; elle est sur GitHub,
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.
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,
00:25:17.703 --> 00:25:20.489
et aussi quelques autres librairies.
00:25:20.489 --> 00:25:28.105
Donc, jetez-y un oeil, sur github.com/ajaxorg, si ça vous intéresse.
00:25:28.105 --> 00:25:34.560
Donc, comme Ruben l'a dit, c'est l'étape suivante dans la collaboration.
00:25:34.560 --> 00:25:39.320
Jetons un oeil à la collaboration : il y a des challenges habituels.
00:25:39.320 --> 00:25:45.567
Quand vous regardez le monde, vous voyez que c'est un énorme effort de collaboration :
00:25:45.567 --> 00:25:51.604
bureaux, immeubles, gouvernements, ... tout est collaboration !
00:25:51.604 --> 00:25:58.198
Et la nature lui a donné une forme particulière, qui la rend efficiente et efficace !
00:25:58.198 --> 00:26:04.235
Prenons un exemple simple encore : des enfants, qui construisent un château de sable.
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,
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.
00:26:17.680 --> 00:26:24.321
Mais une fois que la pile de sable est finie, il faut des changements dynamiques ;
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,
00:26:31.798 --> 00:26:35.211
encore un autre doit construire une porte, ...
00:26:35.211 --> 00:26:41.434
La collaboration parallèle vient d'être remplacée par une séparation des tâches,
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...
00:26:49.073 --> 00:26:53.322
Je ne pense pas que cet enfant déteste les châteaux de sable ;
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.
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.
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.
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.
00:27:28.477 --> 00:27:34.956
Et c'est la manière de collaborer du malchanceux.
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.
00:27:40.459 --> 00:27:43.478
Et qu'il soit re-downloadé.
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,
00:27:48.841 --> 00:27:53.601
en utilisant une autre forme de communication.
00:27:53.601 --> 00:27:58.362
Vous travaillez séparément, chacun dans son silo.
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
00:28:04.608 --> 00:28:11.249
pour faire en sorte que les développeurs travaillent en temps réel.
00:28:11.249 --> 00:28:17.495
Avoir un IDE dans le cloud ouvre la voie à des nouveaux modes de collaboration.
00:28:17.495 --> 00:28:24.670
Par exemple, les revues de code interactives : vous pouvez parcourir le code, et ajouter un commentaire.
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.
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.
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.
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.
00:28:53.880 --> 00:29:01.450
Disons que vous avez une équipe sur un projet, je vais prendre un exemple véridique.
00:29:01.450 --> 00:29:10.808
Avec Cloud9, on a la possibilité de partager notre environnement de travail.
00:29:10.808 --> 00:29:14.523
Regardons un peu la situation de notre compagnie à nous :
00:29:14.523 --> 00:29:18.958
on a des gens qui travaillent à distance, aux USA ou en Europe,
00:29:18.958 --> 00:29:22.673
mais l'équipe centrale de développement est à Amsterdam.
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,
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.
00:29:39.647 --> 00:29:42.317
Comment faire ?
00:29:42.317 --> 00:29:47.402
Avec Cloud9, tout le projet est en ligne, pas juste le code.
00:29:47.402 --> 00:29:53.045
Le runtime, la base de données, tout est là derrière une unique URL.
00:29:53.045 --> 00:29:56.760
Comme vous en avez l'habitude avec d'autres services en ligne,
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.
00:30:04.446 --> 00:30:10.785
Pour le faire, vous positionnez des permissions, lecture seule ou lecture-écriture.
00:30:10.785 --> 00:30:14.639
Puis, votre ami rejoint votre projet.
00:30:14.639 --> 00:30:21.536
À l'intérieur du projet, vous pourrez communiquer directement, chat, vidéo, conversations audio ;
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.
00:30:30.406 --> 00:30:36.652
Et non seulement ça, mais la personne qui s'est fait inviter peut lancer l'application.
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,
00:30:41.528 --> 00:30:44.686
parce que c'est très exactement votre système.
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 !
00:30:55.762 --> 00:31:00.406
Donc, en résumé : les APIs dans le cloud vous aident à dimensionner,
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.
00:31:06.675 --> 00:31:10.158
L'intégration permet de cibler facilement des plateformes.
00:31:10.158 --> 00:31:15.267
Donc, c'était un aperçu de l'avenir, merci de votre attention,
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.
00:31:22.256 --> 00:31:26.349
Merci beaucoup !
00:31:33.564 --> 00:31:36.490
Y a-t-il des questions ?
00:31:36.490 --> 00:31:40.135
C'est un vieux troll, désolé de le présenter !
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.
00:31:48.355 --> 00:31:54.532
Je peux hacker dans le train, et pusher mes commits ; mais que se passe-t-il
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
00:32:01.591 --> 00:32:06.002
parce que le service est down, ou a simplement fermé ?
00:32:06.002 --> 00:32:09.555
Je ne vous souhaite pas d'avoir à fermer Cloud9, bien sûr...
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 ?
00:32:19.795 --> 00:32:23.301
Je pense que ce sont des soucis généralisés au le cloud ;
00:32:23.301 --> 00:32:26.088
et je pense que le monde s'en rend progressivement compte,
00:32:26.088 --> 00:32:29.478
de plus en plus de grosses applications tournent en ligne,
00:32:29.478 --> 00:32:34.633
et les gens mettent beaucoup de leur valeur dedans, regardez Salesforce, par exemple.
00:32:34.633 --> 00:32:38.742
Il y a des solutions, notamment aux problèmes de sécurité bien entendu ;
00:32:38.742 --> 00:32:43.851
on pourrait même avancer qu'un fournisseur de cloud investira plus dans sa sécurité,
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é.
00:32:52.558 --> 00:32:58.596
Mais il y a des compagnies qui veulent pouvoir contrôler ça eux-mêmes.
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 ;
00:33:04.493 --> 00:33:09.904
et ceux qui se soucient plus des coûts se pencheront vers les publics,
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.
00:33:25.647 --> 00:33:31.545
Dans l'exemple, vous avez fait une application en Node.JS, et je me demande,
00:33:31.545 --> 00:33:37.837
il y a plusieurs versions de Node.JS, comment vous en sortir ?
00:33:37.837 --> 00:33:42.296
Chaque utilisateur installe sa propre version de Node.JS ?
00:33:42.296 --> 00:33:48.263
Est-ce qu'il y a des modules spéciaux, des hacks spéciaux ?
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 ?
00:33:54.207 --> 00:33:57.133
Ou alors vous restez sur une version spécifique ?
00:33:57.133 --> 00:34:02.195
Pour le moment, nous ne supportons qu'une version, mais on travaille dur,
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.
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,
00:34:15.268 --> 00:34:17.636
et on les supportera toutes.
00:34:17.636 --> 00:34:29.338
On travaille ensemble avec Joyent pour supporter toutes ces versions de Node simultanément.
00:34:35.400 --> 00:34:39.208
Bonjour, je ne vous ai jamais vu sauvegarder votre code ;
00:34:39.208 --> 00:34:42.923
et comment est-ce que vous gérer le versionning, aussi ?
00:34:42.923 --> 00:34:50.144
J'ai sauvegardé du code en utilisant Cmd+S, mais c'était rapide !
00:34:50.144 --> 00:34:56.158
Si je ne sauvegarde pas, il sauvegardera quand je cliquerai sur le bouton "debug".
00:34:56.158 --> 00:35:02.079
Pour le versionning, vous avez dû voir vers le bas l'interface en ligne de commande ;
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",
00:35:07.281 --> 00:35:11.878
ou taper "git" ; et même "git" et ce que vous voulez.
00:35:11.878 --> 00:35:17.033
"git status", "git push/pull", "git commit", pour gérer vos versions.
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.
00:35:25.648 --> 00:35:34.959
Pardon ? inaudible Peut-être, peut-être...
00:35:34.959 --> 00:35:41.878
Il demandait aussi si ça allait fonctionner avec Bazaar.
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.
00:35:51.909 --> 00:35:57.436
Du coup, est-ce qu'on devrait l'utiliser comme CDN, Content Delivery Network ?
00:35:57.436 --> 00:35:59.618
Est-ce possible ?
00:35:59.618 --> 00:36:02.730
Heu... non...
00:36:02.730 --> 00:36:09.347
Ce sont des concepts très différents...
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.
00:36:15.501 --> 00:36:21.515
Donc ce n'est pas plus proche de certains réseaux, c'est à un seul endroit,
00:36:21.515 --> 00:36:24.069
contrairement à ce que ferait un CDN.
00:36:24.069 --> 00:36:28.341
Ok, donc c'est juste de l'exécution locale pour tester ?
00:36:28.341 --> 00:36:32.149
Oui, l'exécution est dans le but de développer votre application ;
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.
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.
00:36:50.795 --> 00:36:57.273
Si vous voulez refactoriser MarkitUp avec votre IDE, que va-t-il se passer ?
00:36:57.273 --> 00:37:01.523
Je ne comprends pas vraiment la question, désolé ?
00:37:01.523 --> 00:37:08.164
C'est écrit en Javascript, Cloud9? - Oui. - Il utilise des librairies, des plugs-in jQuery ?
00:37:08.164 --> 00:37:12.483
Quelque chose de similaire, mais pas jQuery, oui.
00:37:12.483 --> 00:37:19.634
Et si je veux refactoriser un plug-in jQuery, par exemple (désolé pour mon anglais)
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 ?
00:37:27.552 --> 00:37:33.357
Non, l'exécution de votre application est complètement séparée de Cloud9.
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.
00:37:41.879 --> 00:37:45.734
Donc il n'y a pas de conflits.
00:37:45.734 --> 00:37:49.193
C'était ça la question que tu voulais poser ? - Ouais ouais.
00:37:49.193 --> 00:37:52.421
Merci beaucoup. Juste pour savoir.
00:37:52.421 --> 00:37:56.763
inaudible
00:37:56.763 --> 00:38:01.779
Production ? Non, c'est juste pour du développement.
00:38:01.779 --> 00:38:06.283
La question c'est : est-ce fait pour du développement, ou aussi de la production ?
00:38:06.283 --> 00:38:09.348
Et on veut vraiment rester concentrés sur le développement.
00:38:09.348 --> 00:38:12.831
On travaille avec d'autres compagnies qui fournissent des environnements de production,
00:38:12.831 --> 00:38:19.402
donc vous pouvez publier votre application depuis Cloud9, vers l'environnement que vous voulez.
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, ... ?
00:38:23.048 --> 00:38:28.389
On était à Google I/O le mois dernier, à démontrer un runtime Python,
00:38:28.389 --> 00:38:31.361
pour pouvoir déployer dans Google App Engine.
00:38:31.361 --> 00:38:36.910
On travaille sur ce type de runtimes, et on les ajoutera dans les mois qui viennent.
00:38:36.910 --> 00:38:41.252
On pourrait considérer un déploiement vers Heroku, aussi ?
00:38:41.252 --> 00:38:45.293
Où es... ? - Juste derrière. - Ah !
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 ?
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.
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 ?
00:39:14.666 --> 00:39:18.706
Vous parlez de développement, de plans, d'infrastructure, ...
00:39:18.706 --> 00:39:23.188
Très bonne question. Pas encore, mais c'est sur la roadmap.
00:39:23.188 --> 00:39:29.364
Et on est en train de construire une jolie interface, pour brancher n'importe quel framework
00:39:29.364 --> 00:39:32.917
de test unitaire que vous souhaitez.
00:39:32.917 --> 00:39:37.120
Et on va aussi ajouter des tests Selenium, pour que vous puissiez les lancer,
00:39:37.120 --> 00:39:47.468
les enregistrer dans Cloud9 mais les lancer dans le cloud, pour n'importe quel navigateur.
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 ?
00:40:02.522 --> 00:40:10.487
Pourquoi devrais-je avoir confiance en un service gratuit comme le vôtre ?
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.
00:40:16.454 --> 00:40:21.121
C'est gratuit pour une utilisation open-source ; donc si vous avez un projet open-source,
00:40:21.121 --> 00:40:24.256
et que vous voulez travailler dessus dans le cloud, c'est gratuit.
00:40:24.256 --> 00:40:32.200
Si c'est un projet commercial, que vous voulez avoir en privé, alors il faut payer.
00:40:35.077 --> 00:40:38.676
Que se passe-t-il quand vous perdez la connexion ?
00:40:38.676 --> 00:40:44.481
On peut toujours utiliser l'éditeur et écrire du code ?
00:40:44.481 --> 00:40:49.798
La fonctionnalité "offline" devrait disponible dans quelques semaines ;
00:40:49.798 --> 00:40:55.278
elle permettra de synchroniser tout le projet sur votre système de fichier,
00:40:55.278 --> 00:40:59.527
et en utilisant le manifest HTML5, l'application est disponible aussi.
00:40:59.527 --> 00:41:04.752
Donc vous pouvez faire toutes les opérations, créer des répertoires, des fichiers, etc.
00:41:04.752 --> 00:41:14.368
les sauvegarder, les supprimer, et ils seront resynchronisés en se reconnectant.
00:41:23.722 --> 00:41:30.897
Si vous n'êtes pas un environnement de production, comment vous gérer les déploiements ?
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 ;
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 ?
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.
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.
00:41:57.763 --> 00:42:02.639
Et votre environnement se configure pour que vous développiez sur App Engine.
00:42:02.639 --> 00:42:06.285
Et quand vous déployez, il déploie sur App Engine.
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.
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.
00:42:23.583 --> 00:42:25.952
Je pense qu'on n'a plus de temps.
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.
00:42:33.313 --> 00:42:36.331
J'ai trouvé la première question plutôt bonne. - Moi aussi, oui.
00:42:36.331 --> 00:42:39.187
Et qui va avoir le deuxième ?
00:42:39.187 --> 00:42:43.181
J'ai trouvé la question sur les tests très bonne. - Mais c'est un orateur !
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 !
00:42:46.827 --> 00:42:51.564
Bon, du coup, on va le garder !
00:42:51.564 --> 00:42:53.421
Je pense que...
00:42:53.421 --> 00:42:56.393
La dernière ?
00:42:56.393 --> 00:43:02.084
Ok, donc pour la première et la dernière question !
00:43:02.084 --> 00:43:04.530
Félicitations !
00:43:08.653 --> 00:43:09.884
Voila.
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.
00:43:13.878 --> 00:43:17.779
On traduira après.
00:43:17.779 --> 00:43:21.076
Si vous avez honte de votre anglais...
00:43:21.076 --> 00:43:22.725
Merci beaucoup !
00:43:22.725 --> 99:59:59.999
Merci !