Presentation is loading. Please wait.

Presentation is loading. Please wait.

E Pluribus Unum for end-user programming Christopher Scaffidi EUSES 2009.

Similar presentations


Presentation on theme: "E Pluribus Unum for end-user programming Christopher Scaffidi EUSES 2009."— Presentation transcript:

1 E Pluribus Unum for end-user programming Christopher Scaffidi EUSES 2009

2 2 The power of union http://www.agcensus.usda.gov/Publications/images/us_map.gif http://bitcast-a.v1.ord1.bitgravity.com/blyon/opte/maps/static/1105841711.LGL.2D.1024x1024.png http://www.flickr.com/photos/dossy/1253108893/ internet civilization programmers

3 3 Uniting people, uniting code Previous successes in supporting EUP code reuse and, to a lesser extent, EUP collaboration: ○ AgentSheets ○ CoScripter ○ Forms/3 ○ Matlab ○ Scratch ○ Topes ○ Yahoo pipes (and probably others that I’m forgetting… no offense intended!)

4 4 How can we… … methodically design tools to support effective EUP collaboration and code reuse? ○ … predict whether, when, and how EUPs will collaborate and/or share/reuse code? ○ … apply and extend theory in order to understand EUPs’ actions and in order to design effective tools? ○ … generalize successes of similar efforts aimed at professional programmers?

5 5 Three current areas of focus Helping people to find reusable code Helping people to connect code together Helping people to connect and collaborate with each other

6 6 Help needed Do you have any quantitative data describing EUP collaboration or code reuse? Can you suggest relevant theories?... aside from ○ Attention investment ○ Distributed cognition ○ Information foraging ○ Innovation diffusion ○ Minimalist learning ○ Social networking Finding code, Connecting code, Connecting people

7 7 Finding reusable code - overview Examples: ○ CoScripter macros ○ Yahoo pipes ○ Libraries/components ○ Finished programs How to find relevant, reusable code? ○ In a huge repository or scattered on the internet ○ When code varies widely in quality and purpose ○ When code is typically not maintained, supported, or documented ○ When code may be unreadable, uncallable, and/or un-runnable ○ When programmers lack many software engineering skills (e.g.: creating test harnesses, writing documentation, reviewing code for security flaws) Finding code, Connecting code, Connecting people

8 8 Finding code to connect - approach Generalize, extend, apply existing reuse-prediction model  Existing model can predict if CoScripter macros will be reused ○ Test the model on repositories of other kinds of code Yahoo Pipes GreaseMonkey scripts o SourceForge projects ○ Address model limitations ○ Interpret results in light of theory ○ Extend to incorporate dynamic and historical data o E.g.: detecting if a component is about to be de-supported ○ Extend to incorporate textual data such as user-written reviews ○ Extend to incorporate specialized analyses (e.g.: for security flaws) ○ Use model to design tools for code consumers and producers o Search engine for one or more repository o Code critic for one or more programming tool o Integrate with lightweight approaches to give producers control over the ways in which their code can be reused (~ copyright control) Finding code, Connecting code, Connecting people

9 9 Finding code to connect - collaborators Students ○ Chris Bogart ○ Sarah Cooley (flu) ○ Jarrod Jackson ○ Katie Stolee (UNL) Others ○ Margaret Burnett ○ Allen Cypher ○ Mary Shaw Excellent predictions of Pipes cloning using data from Katie Stolee Finding code, Connecting code, Connecting people

10 10 Connecting code - problem Examples: ○ End user tasks often involve transferring data from one website to another, with intervening transformations ○ Professional programmers often create large systems by linking together heterogeneous, independently-evolving servers, which requires data glue code that is extremely brittle How to reliably connect servers (and other components)? ○ When the pieces of code live on different servers ○ When intervening data transformations are required ○ When the pieces of code may evolve or fail without notice ○ When programmer lacks skills to read code, or code is unavailable ○ When it is unsafe or undesirable to run test cases on the code Finding code, Connecting code, Connecting people

11 11 Connecting code - approach Integrate topes with programming tools, then characterize and solve new problems discovered in practice  Integrate topes with CoScripter so macros can call transformations  Integrate topes with web services so producers/consumers can focus on functionality, not formatting New API for implementing topes in 100% JavaScript (more appealing to professional programmers, vs visual language) ○ Evaluate functional expressiveness on scenarios ○ Evaluate usability with lab experiments o Start with professional programmers for web services, then eventually generalize to support EUPs ○ Deploy in field test, uncovering new problems encountered in practice, requiring new solutions ○ Develop approaches for detecting when combined code isn’t working ○ Integrate with approaches to facilitate active and/or asynchronous collaboration between code authors (~ version control) Finding code, Connecting code, Connecting people

12 12 Connecting code - status Students ○ Atipol Asavametha ○ Prashanth Ayyavu ○ Thuan Duong Ba Other collaborators ○ Allen Cypher ○ Sebastian Elbaum ○ Greg Rothermel Finding code, Connecting code, Connecting people

13 13 Connecting programmers - problem Examples: ○ A spreadsheet wanders through an organization, periodically getting modified, eventually landing on a certain person’s desk To whom should he direct his questions about the spreadsheet? Whom should he communicate/collaborate with if he wants to modify the spreadsheet? ○ Two students learning animation in a classroom, each working on their own animation; what would it take to get them working together and learning together, and who cares? How to help programmers establish productive collaboration? ○ When reuse and collaboration are embedded in a social setting ○ When people might be separated by time and distance ○ When people have widely varying goals, motivations and skills ○ When people have the in-the-moment focus inherent to EUP Finding code, Connecting code, Connecting people

14 14 Connecting programmers - approach Current work: studying and modeling collaboration ○ Four experimental approaches Detailed analyses of CoScripter logs  Analysis of rates of reuse o Analysis of clustering of reuse o Surveys + interviews of CoScripter users o Contextual inquiry of office workers o Contests + surveys of Scratch animation-tool users  New features so Scratch animations can “talk” to each other o To serve as a testbed for experiments on promoting collaboration ○ Find answers to questions, capture in models, compare to theory: o What are people thinking when they do/don’t collaborate? o What are the common patterns and anti-patterns of collaboration? o What are the practical benefits and costs of collaboration? o Design and evaluate improved tools o For identifying opportunities for collaboration o For recommending good collaborators Finding code, Connecting code, Connecting people

15 15 Connecting programmers - status Students ○ Chris Chambers ○ Aniket Dahotre ○ Yan Zhang Other collaborators ○ Allen Cypher ○ Sebastian Elbaum ○ Anita Sarma Very funny story told by two interacting animations created by Yan Zhang Finding code, Connecting code, Connecting people

16 16 Other ongoing work Enhancing the topes repository ○ Take advantage of society-driven patterns surrounding topes Understanding and supporting various activities related to information-seeking during software development ○ Interpret prior work through lens of Information Foraging Theory ○ Design quantitative models and tool enhancements ○ With Margaret Burnett, Scott Fleming, David Piorkowski Finding code, Connecting code, Connecting people

17 17 Help needed Do you have any quantitative data describing EUP collaboration or code reuse? Can you suggest relevant theories?... aside from ○ Attention investment ○ Distributed cognition ○ Information foraging ○ Innovation diffusion ○ Minimalist learning ○ Social networking Finding code, Connecting code, Connecting people


Download ppt "E Pluribus Unum for end-user programming Christopher Scaffidi EUSES 2009."

Similar presentations


Ads by Google