(Paper link: http://proceedings.2011.icse-conferences.org/icsews11webse/index.html)
Pex4Fun Contest URL: http://research.microsoft.com/icse2011contest
Andrew Begel (andrew.begel@microsoft.com)
Arie van Deursen (Arie.vanDeursen@tudelft.nl)
Margaret-Anne (Peggy) Storey (mastorey@gmail.com)
Thomas LaToza (tlatoza@cs.cmu.edu)
Gargi Bougie (gbougie@uvic.ca)
Matthias Kovatsch (kovatsch@inf.ethz.ch)
Kelly Lyons (Kelly.Lyons@acm.org) Kelly.Ann.Lyons@gmail.com
Jamie Starke (jrstarke@gmail.com)
Christoph Walesch (info@christoph-walesch.de)
Leif Singer (leif.singer@inf.uni-hannover.de)
Christoph Treude (ctreude@uvic.ca)
Soo Ling Lim (s.lim@cs.ucl.ac.uk)
Takashi Hattori (hattori@sfc.keio.ac.jp)
Dennis Pagano (pagano@cs.tum.edu)
Chris Parnin (chris.parnin@gatech.edu)
Peter Rigby (rigbypc@gmail.com)
Dejana Bajic (dejanab@gmail.com)
Marcelo Cataldo (mcataldo@cs.cmu.edu)
In the introduction round some commonly expressed interests include:
[ feel free to insert your own: ]
Measuring API Documentation on the Web
Chris Parnin and Christoph Treude
Where do developers turn for questions?
Web search dominant way of asking developer questions.
[ If you have a question you’d like (someone) to ask, write it here. ]
How many blog tutorials were advanced vs. introductory?
How do people using search find these many blog posts?
Why do people write coding blogs? What motivates them to write so much? How much effort goes into a good blog post about code?
Can API quality be measured by counting how many people write posts about corner cases and messy areas of the API?
Is it really a crowd writing documentation or is it the same small group (e.g. in stackoverflow and in blogs)?
How do people re-find information about code that they find online?
Do these results generalize to other APIs?
Who are the people who write answers to questions (e.g. on stackoverflow)? What motivates them? (perhaps put their stackoverflow ranking on their resume? advertisement revenue for blogs? consulting leads based on posts? evangelists?)
Where are the missing answers? Orphaned parts of the API?
We found some evidence for the importance of blogging for evangelists in the Eclipse community: “How Do Developers Blog? An Exploratory Study”, Dennis Pagano and Walid Maalej, MSR 2011
The 12% unblogged APIs might be simple ones that developers generally don't have problems with. (Soo Ling)
Gargi Bougie, Jamie Starke, Margaret-Anne Storey and Daniel German
How software engineers use twitter
The amount of conversation is drastically higher than average
Amount of information sharing also higher
SE topics on twitter: problem solving, self-promotion, complaints, use of a specific tool for work
twitter brings water cooler atmosphere to distributed developers
Place comments about paper 2 here.
[ If you have a question you’d like (someone) to ask, write it here. ]
Self-promotion or shout-out? [Parnin]
How to identify a software engineer? LDA topic analysis? Some social network analysis was used, but not much?
- maybe also look at whom they’re following [Dejana]
- We did something like that by connecting to the source code repositories and comparing author names. But it is hard... [Dennis]
Is Twitter secondary to blogs for detailed solutions to problems or a new primary means of communicating these solutions? [Sean]
Is lifetime an important factor for considering using twitter? What is value?
Do developers get some kind of benefit in terms of privacy or ephemeral commenting by using twitter?
Chris’s question: what dimensions or problem solving are discussed?
Is Twitter used sometimes instead of IM?
How do you support swifting channels of communication?
Matthias: Have you considered correlating use of Twitter to commits?
Differences in user communities? Linux = users, Eclipse = dev community https://github.com/eob/twitter-scraper is this the scraper?
No, it’s here: https://github.com/lintool/twitter-corpus-tools (by http://twitter.com/lintool)
Leveraging Social Media to Gather User Feedback for Software Development
Dejana Bajic and Kelly Lyons
Place comments about paper 3 here.
Dell’s idea storm: http://www.ideastorm.com/
Challenges in managing user feedback: identifying best ideas; sustaining community; avoiding disclosure to competitors.
UserVoice = digg for user feedback. Also GetSatisfaction.
inkscape’s blueprint process.
https://blueprints.launchpad.net/inkscape/
Votes replace the Me Too and +1 comments.
[ If you have a question you’d like (someone) to ask, write it here. ]
How does automated feedback (e.g. crash reports) get used by companies w.r.t. user-written feedback?
Do companies feel like they’re missing feedback from customers?
Are companies more likely to share product roadmap of hard-to-implement features vs. features that are easy to copy?
Curious: do software industry people here value individual or collaborative feedback more?
What is the tipping point for number of people asking for a feature before the company implements it?
Suggestions to practitioners for making a good social media presence?
Do companies shun collaborative feedback because of trust and noise?
Any aspects of communities you studied that bias your results?
Did anyone sell their product for money?
What if feedback included donation bucket? User ratings (how often their suggestions are accepted)?
Related sites: getsatisfaction.com, inkscape request features, google waves (perpetual beta paradigm)
Will unique requests (not already internally planned) ever emerge from the community? What value beyond the idea (votes?)
Are forum users reflective of general users?
Arie van Deursen: Pollicino breadcrumb dropping tool for Eclipse. Website: http://www.st.ewi.tudelft.nl/~guzzi/pollicino/
Christophe Treude: Work Item Explorer, based on IBM Jazz platform (see www.jazz.net). Graph view of work items (nodes and edges) (based on Choosel: http://choosel-mashups.appspot.com/ and http://code.google.com/p/choosel/)
Abayomi King: Auto-update IM status based on where you are in the IDE.
Soo Ling Lim: StakeSource2.0. Social networking tool to identify and prioritise stakeholders and their requirements. www.stakesource.co.uk. (Tool demo on Friday)
Automatic Status Updates in Distributed Software Development
Abayomi King and Kelly Lyons
Place comments about paper 4 here.
digital natives are people born after 1980?? ‘83
[ If you have a question you’d like (someone) to ask, write it here. ]
How would you measure prevented interruptions? Diary study?
How much less apprehension turned out in practice vs. before the study?
Were there any positive reasons for using the tool?
Does the size of the team affect whether this is a good idea?
Are other applications besides interruption management?
Supporting the Cooperation of End-User Programmers through Social Development Environments
Leif Singer and Kurt Schneider
how do we
- create a community?
- motivate contributions?
- stabilize the community?
Communities of practice tell us we need to:
Building a community:
- enable public and private exchanges
- need to connect members with each other so they can help each other
- should be “no anonymity” -- really?
encourage contributions by:
- embracing and engaging lurkers (use any activity as a contribution, show activities of others)
- support all levels of involvement (see Bonnie Nardi’s study of community of spreadsheet users), show object statistics
- enable copying (see also Bonnie Nardi’s study -- co-workers could copy each others’ spreadsheets), support lightweight branching of mashups with notifications of changes made to branches
stabilize the community:
- make value visible (low barrier to gratitude)
- support reputation building (attribution)
- recognize outstanding members (badges and achievements)
Some good books on this topic:
- Porter: designing for the social web (http://www.amazon.com/Designing-Social-Web-Joshua-Porter/dp/0321534921)
Currently working on showing spreadsheet visualizations to encourage sharing.
Related work from Scratch community re: attribution: Computers Can’t Give Credit: How Automatic Attribution Falls Short in an Online Remixing Community
http://papers.ssrn.com/sol3/papers.cfm?abstract_id=1826825
Andres Monroy-Hernandez
Massachusetts Institute of Technology (MIT) - MIT Media Laboratory
Benjamin Mako Hill
Massachusetts Institute of Technology (MIT)
Jazmin Gonzalez-Rivero
Microsoft Corporation - Microsoft Research New England
danah boyd
Microsoft Research; University of New South Wales (UNSW); Harvard University - Berkman Center for Internet & Society
Kurt Luther’s work on community collaboration.
How is this similar to the Scratch community work? Especially around attribution.
Genes of collective intelligence.
Important lesson: Know your community! Learn what they do, what they want, what their goals are, and support them in their own interests. Watch out that you don’t accidentally subjourn (spelling?) them to your interests, instead.
[ If you have a question you’d like (someone) to ask, write it here. ]
Where do these principles (embrace and engage lurkers, etc.) exactly emerge from? These are findings? Communities of practice literature?
Yes, see the paper -- that specific one for example is from E. Wenger, R.A. McDermott, and W. Snyder. Cultivating communities of practice: A guide to managing knowledge. Harvard Business Press, 2002.
Introduction to Communities of Practice: http://www.ewenger.com/theory/
Demo time: Programming on the Phone and in the Cloud with Pex4Fun
Nikolai Tillmann, Microsoft Research
Social environment where it is fun to learn programming
Goal is to create a community where they can share scripts
If you’re a teacher, you can make a course built into Pex 4 Fun.
Need to enable the teacher feature if you want to use this!
Social features:
- shows usage statistics
- live twitter feed
- created a specialized application for mobile phones (involve students in class :) )
Write scripts for the phone on the phone.
Paradigm of programming here is the touch screen
Printing by posting to your wall
With the phone we have many more input and output options (as opposed to just keyboard and print to the screen)
Wikigramming: a Wiki-based Training Environment for Programming
Takashi Hattori
Place comments about paper 6 here.
Open source can cause apprehension (due to culture) but also long time to see results (due to patch/verification process)
Compared with Wikipedia -- passersby can edit, can see changes immediately.
Hence suggesting programming wikistyle (anonymous, no need for version control) etc.
Wikigramming: Wiki (Hiki) + Scheme (Gauche)
Each page represents a function
Potential issues:
- spam, mischief
- edit wars
(but can restore versions (tedious?); independent pages)
Authors are requested to give test cases for functions they will use
Give credit for code that passes test cases it passes
Motivation:
- training for new developers
- prototyping for the end users
Related tools:
- AdessoWiki (embedded codes in wiki, but not a prog. environment)
http://wikigramming.com/
[ If you have a question you’d like (someone) to ask, write it here. ]
This feels a bit inspired by Boxer, no (literate programming, logo)? http://edutechwiki.unige.ch/en/Boxer, http://www.soe.berkeley.edu/boxer/
Why is the code separated from the text?
How do you prevent evil programs from destroying the server? (answer: this is described in the paper)
Will writing test cases put users off?
Perhaps translate Scheme to JS and run it on the client! https://csel.cs.colorado.edu/~silkense/js-scheme/ http://www.bluishcoder.co.nz/jsscheme/
[Soo Ling] results from experiences so far? (answer: no experience just yet); contributing test cases first, might be onerous (not required).
Key aspect of a Wiki (links to future content) not used?
[Chris] what value is Wiki really adding?
Comment: Wikis could be useful -- have code, test cases, documentation in the same environment that is highly collaborative.
Suggestion: have a classroom experiment to have 10 or so students to work on the same program.
CollabDE by Max Goldman -- plugin for Eclipse to support simultaneous editing (presented at CHASE). Idea is that this could be used in conjunction with Mechanical Turk so you could outsource your work easily. Advantage of Wiki approach is that the version issue goes away.
Documentation reading tool to aggregate useful information from blogs, official docs, and web forums and restructure them to be coherent.
Jill, age 12, Hawaiian native islander. Wants to create a surf board design app. She’s a hobbyist. Hobbyists make the greatest inventions. Connect the experts to the people who want to build projects.
Large software companies will no longer exist.
She needs an expert. Mary, 30, consultant. Connected to everyone to the hobbyists, and helps Jill with her application. She can use social marketing to market it to her friends and their friends.
Ideas:
Virtual marketing
1 million users
1 million devs creating software
social media leads to fewer or more devs? Does everyone become a developer
connect ot answers
expertise
make money app store, critical mass
discovery of libs/research for proper libs
democratization - innovation - hobbyists
subsistence programming/customization
reuse-at-a-high-level.
Social media means fewer devs => smaller teams.
5 years
Cindy, mother of 3, wakes up at 8am
end-user developer
we’ve reached a state where everybody is a developer
distinction between developer and user won’t be clear
she’s creating a mashup for soccer moms
it’s collaborative development
social conflict is moved into online space
everybody can be a developer
- how is she learning things?
we will be better at data mining
we will be better at understanding natural language
capture context
development environment will be customized to her level of ability / mindset
(like a cookie recipe)
development environment makes complexities transparent (class vs. object etc)
helper tools (like Pex) built in
- what will the social aspect be?
fewer nerds programming
programming won’t be as nerd-ish anymore
she communicates with a group of people
make use of content created by other people
cookbooks written for different people (boiling water vs. souffles)
closer to literate programming, don’t want to learn the “nerdy mindset”
using twitter language to define what she’s looking for (requirements) collaboratively
returns a list of “social” search results
a web of who has dealt with similar requirements
how does the coupling work?
- visual, but you can switch to a textual view
20 years
everybody’s a developer, natural language programming, acting programs out
programming won’t be the problem, figuring out what you want
capture and observe everything we’re doing to find out what we need - but innovation doesn’t work this way, there needs to be a creative process
Social aspect of engineering software.
Moving to the masses.
Gettysburg address:
software of the people, by the people, for the people, shall not perish from the earth.
Now: Divide & conquer, using social aspect to coordinate the divided work.
Future:
Today: d&c
instead: imlpementation effortless.
Hence; many different alternatives can be easily generated.
And then discussed by end users and the best one picked.
Collaborative design.
You don’t pick alternatives
You give feedback during execution (like, dislike).
Consistency?
Things will get more dynamic
Software adjust to your moods
I want my program to be like yours
Sensings
Discovery & learning.
As you walk around
http://www.switched.com/2011/03/24/color-app-takes-your-photos-public-shows-users-in-150-foot-ra/
Our story:
It’s 2061, 50 years from now.
Sue is a user.
We’re all users. No one is a developer anymore.
Sue is historian.
She seeks to understand the reasons why Hillary Clinton did not get re-elected in 2016.
She has a number of historian friends that she is following and based on her friends
and the way that they make those documents, the software comes up with an interface
and display all of her documents in that interface.
She likes & dislikes, and gives feedback to what she is using.
There’s one thing she is missing.
She gives two examples.
Her application support devices gives another two examples.
She dislikes one, likes the other, and her application is automatically adjusted.
Sue tells her friends, and all friends ...
Our story would be really good if we had more time.
Goal in time: 20 years.
Scenario parameters: general population.
Who are the developer(s)? Distinction between professional programmers and hobbyists.
Will the distinction between professional and end user developers start to blur ?
Constraints to contributing may start to disappear.
Personalized computer center? Will also need peripheral devices, in a ubiquitous programming environment.
Mobile may help in debugging... e.g. send me visual output of what is going on.
Large screens? multiple monitors....
Notion of a device will be limited.
Could project or headed mounted display....
Devices will get smaller, but i/o will become ubiquitous .
Programming language -- domain specific languages will be more prevalent. Will be influenced by components, visual languages...
gestures, natural language
New form factors will effect how we program -- not bound to physical environments.
Code mining.....
Programmer base will change.... more people enabled but have same number of professional developers.