touch develop a mobile IDE in the cloud

30
touch develo p a mobile IDE in the cloud Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich* Microsoft Research PEPM Workshop San Diego, January 20, 2014

description

touch develop a mobile IDE in the cloud. Michał Moskal , Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel Fähndrich * Microsoft Research. PEPM Workshop San Diego, January 20, 2014. first, most personal, and sometimes only computing device - PowerPoint PPT Presentation

Transcript of touch develop a mobile IDE in the cloud

Page 1: touch develop a mobile  IDE  in the cloud

touchdevelop

a mobile IDE in the cloud

Michał Moskal, Nikolai Tillmann, Peli de Halleux, Tom Ball, Sebastian Burckhardt, Manuel

Fähndrich*

Microsoft Research

PEPM WorkshopSan Diego, January 20, 2014

Page 2: touch develop a mobile  IDE  in the cloud

first, most personal, and sometimes only computing device

can you really program on such a tiny screen?

Page 3: touch develop a mobile  IDE  in the cloud

interfaces having always been changing

?

Page 4: touch develop a mobile  IDE  in the cloud

web app (2012)iOS, Android, Windows PhoneWindows, Mac, Linux

touchdevelop: a touch-first IDEWindows Phone app(2011)

Page 5: touch develop a mobile  IDE  in the cloud

core editingdemotouchdevelop

touchdevelop.com

Page 6: touch develop a mobile  IDE  in the cloud

typed language + semi-structured editortyped, imperative, procedural,data-structures, lambda expressions, module systemexpressions edited as token sequencesauto-completion by crowd-sourcinghigh-level abstractions

language + editor

Page 7: touch develop a mobile  IDE  in the cloud

mission: democratize programming

touchdevelop: BASIC for all devices and the web(or Bourne Shell, AppleScript, VBA, Excel Macros, …)

Page 8: touch develop a mobile  IDE  in the cloud

app-creators to bestudents & teachersenthusiastsdevelopers who want to prototype

goal: anyone with a computing device

who are our users

Page 9: touch develop a mobile  IDE  in the cloud

publishing, hubcrowd-sourced crashes, coverage, profiles

Electronic Constructor, Rex, Buddy and the Bones

demotouchdevelop

touchdevelop.com

Page 10: touch develop a mobile  IDE  in the cloud

future of programming: devices+cloud+social

Devices: phones, tablets, laptops, desktops, ...Works on all devices, keyboard or not -> editing ASTsEasy access to on-device media and sensorsScripts synchronized across all your devices

Cloud-powered: platform and user scriptsCrowd-sourced crash logging, profiling, coverage collectionCloud data and (soon) executionPlugins in the cloud

Social: user-generated contentScripts, libraries – come with source for tweakingComments, likes, tags, followers, ...Pictures and sounds – searchable Scripts as docs (especially libraries), tutorials (teaching)

Page 11: touch develop a mobile  IDE  in the cloud

touchdevelop.com400,000+ app downloads

160,000+registered users

70,000+published scripts

700+apps in stores

Page 12: touch develop a mobile  IDE  in the cloud

script ::= meta-info decl*decl ::= action | page | event | global | library | recordaction ::= private? sync? action sig stmt*event ::= event sig stmt*page ::= private? page sig init stmt* display stmt*sig ::= id (id : type)* returns (id : type)*global ::= var id : type flag*record ::= cloud? (object | table | index | decorator) keys (id : type)* values (id : type)*stmt ::= expr | // comment | if expr then stmt* else stmt* | loop do stmt* | boxed stmt*loop ::= while expr | for id < expr | for each id in exprexpr ::= token* (where sig stmt*)*token ::= “...” | true | false | 0 | 1 | ... | ( | ) | , | + | * | ... | async | id |  → id

abstract syntax

Page 13: touch develop a mobile  IDE  in the cloud

Manipulating TouchDevelop programs with TouchDevelop

demotouchdevelop

touchdevelop.com

Page 14: touch develop a mobile  IDE  in the cloud

REST-based service APIs at http://touchdevelop.com/api/...

opportunity: data mining

lists properties/api/scripts/api/users/api/comments/api/screenshots/api/reviews/api/tags/api/art...

/api/[id]/api/[scriptid]/text/api/[scriptid]/ast/api/[scriptid]/successors/api/[scriptid]/base/api/[userid]/scripts/api/[scriptid]/comments/api/[scriptid]/screenshots /api/[scriptid]/reviews /api/[userid]/picture… touchdevelop.com/help/cloudservices

Page 15: touch develop a mobile  IDE  in the cloud

high-velocity research platformIDE powered by the clouddata mining: 1,000+ active user every day, 3,000,000+ program snapshotssocial features (sharing, attribution, discussions, …)information-flow analysis to deal with privacy concernscrowd-sourced profiling, code coverage, crash reportingranking of code by noveltylive programmingcloud-based code synthesis from keywordscloud statecoming soon: collaborative coding, adaptive tutorials, cloud execution, “apps”, …

Page 16: touch develop a mobile  IDE  in the cloud

touchdevelop + education1st App Day in May 2013, 500+ students. Many follow-up events, and 1500 students planned this year.130,000+ students doing TouchDevelop tutorials in Hour of Code.

Page 17: touch develop a mobile  IDE  in the cloud

Interactive tutorials based on AST diffdemotouchdevelop

touchdevelop.com

Page 18: touch develop a mobile  IDE  in the cloud

sharing data in the cloudmakes apps more social, fun, and convenient.examples: games, settings,chat, favorites, ratings, comments, grocery list…just tag your data as ‘cloud’,we synchronize and merge

cloud state

cloud state

Page 19: touch develop a mobile  IDE  in the cloud

putting parts of scripts in the cloudmakes mobile apps more efficient and enriches functionalitysupporting non-blockingexecution using distributed state

just tag your code as ‘cloud’, we do the rest…

coming soon: mobile cloud computing

cloudexecution

Page 20: touch develop a mobile  IDE  in the cloud

Cloud chatdemotouchdevelop

touchdevelop.com

Page 21: touch develop a mobile  IDE  in the cloud

try it yourself: touchdevelop.com

questions?touchdevelop

Page 22: touch develop a mobile  IDE  in the cloud

building touchdevelopbackup slidestouchdevelop

Page 23: touch develop a mobile  IDE  in the cloud

.ts

architecture

touchdevelop.com

Page 24: touch develop a mobile  IDE  in the cloud

.js

152,000 lines of C#12,000 lines of XAML

130,000 lines of C#(plus 10,000 lines of tools in C#)

the scale of things

60,000 lines of TypeScript4,000 lines of CSS

Page 25: touch develop a mobile  IDE  in the cloud

TypeScript JavaScript – types are great!TypeScript is JavaScript+type annotationsTypeScript compiler erases type annotations

reality check: HTML5 is still work in processno effective standard for storageno effective standard for sensor accessno effective standard for data accesstons of quirks in all engines

reflections after building web app

touchdevelop.com/help/platforms

Page 26: touch develop a mobile  IDE  in the cloud

PC – legacy development modelAndroid: AIDE, App Inventor, …iOS: Codeamobile development environments are becoming popular on all platformsonly touchdevelop embraces new devices(touchscreen, editor, language, social)

related approaches: mobile IDEs

Page 27: touch develop a mobile  IDE  in the cloud

code + run scripts on all devices

Page 28: touch develop a mobile  IDE  in the cloud

highlights Structured/token split editing TD plugins in TD operating on ASTs

Lint, C++ export, JSON schema generator, decamelizer, localizer, regex explorer, claudifier, many more possible!

Multiple refactorings extract to local, simplify, extract to parameter, promote to global/field, demote to

local, extract action, extract to library, surround with … Wealth of data in the cloud Language research platform Tutorial – diff

Page 29: touch develop a mobile  IDE  in the cloud

TouchDevelop (www.touchdevelop.com) is…

a simple statically-typed safe programming language

a browser-based programming environment

a set of high-level APIs for sensors, data, services, …

a cloud of programmers, scripts, users, data, bugs, …

Page 30: touch develop a mobile  IDE  in the cloud

computing devices everywheresmartphones, tablets – mobile, touchscreenscloud-connected (intermittent)social communities, crowd-sourcingeducation

why do we care?