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 !