Advertisement
Advertisement

More Related Content

Similar to DFlow is dead. Long live Tako!(20)

Advertisement

DFlow is dead. Long live Tako!

  1. DFlow is dead. Long live Tako! How a research prototype became a tool that everyone can use R E V E A L Roberto Minelli @robertominelli
  2. Interaction Data
  3. } { The Early Days of Interaction Data Mylar: A Degree-Of-Interest Model for IDEs M. Kersten and Gail C. Murphy In Proceedings of AOSD 2005 (4th International Conference on Aspect-Oriented Software Development) […] the use of a degree-of-interest (DOI) model to capture the task context of program elements scattered across a code base. The Mylar tool that we built encodes the DOI of program elements by monitoring the programmer's activity, and displays the encoded DOI model in views of Java and AspectJ programs.
  4. } { From Mylar to Tasktop https://www.tasktop.com Integrate Bug Tracking Manage Tasks Track Time Manage Events Browse the Web Find Documents Integrate Emails
  5. } { What is Interaction Data?
  6. } { My PhD Dissertation Interaction-Aware Development Environments enable novel and in-depth analyses of the behavior of software developers and set the ground to provide developers with effective and actionable support for their activities inside the Integrated Development Environment.” —Roberto Minelli, 2017 Università della Svizzera italiana Software Institute Interaction-Aware Development Environments Recording, Mining, and Leveraging IDE Interactions to Analyze and Support the Development Flow Roberto Minelli Doctoral Dissertation submitted to the Faculty of Informatics of the Università della Svizzera italiana (USI) in partial fulfillment of the requirements for the degree of Doctor of Philosophy Research Advisor Prof. Michele Lanza Research Co-Advisor Dr. Andrea Mocci
  7. Recording and Interpreting Interaction Data
  8. } { The Pharo IDE Pharo is a pure object-oriented programming language and a powerful environment, focused on simplicity and immediate feedback. https://pharo.org
  9. } { DFlow Recording Interaction Data in the Pharo IDE DFlow
  10. } { DFlow Recording Interaction Data in the Pharo IDE DFlow
  11. } { DFlow Recording Interaction Data in the Pharo IDE DFlow Filter Interesting Interactions Irrelevant Interactions
  12. } { pub/sub DFlow Recording Interaction Data in the Pharo IDE DFlow Recorder Visualizer … Propagate Filter Interesting Interactions Irrelevant Interactions Propagated Interactions
  13. } { DFlow Dataset h M k sessions development time events windows developers 1,631 >770 ~9.5 >40 17
  14. } { Interpreting Interaction Data events t method saved search starts search ends out/in the IDE window activated window activated active window Mouse Keyboard Window Meta Events
  15. } { Interpreting Interaction Data events sprees t t method saved search starts search ends out/in the IDE window activated window activated active window >RT >RT >RT DOI MS1 MS2 MS3 MS4 MS5 KS1 KS2 KS3 KS4 activities t A1 A2 A3 A4 A5 A6 A7 RT = 1s Mouse Keyboard Window Meta Events Mouse Keyboard Activity Sprees and Activities Workspace Code Browser Finder Windows
  16. } { Interpreting Interaction Data 8% 4% 14% 5% 69% 70% 5% 14% 4% 8% “Program comprehension occupies half of the time of developers” Application Program Maintenance Study: Report to Our Respondents R. K. Fjeldstad, W. T. Hamlen. GUIDE 48. 1983 more than I Know What You Did Last Summer: An Investigation of How Developers Spend Their Time R. Minelli, A. Mocci, M. Lanza In Proceedings of ICPC 2015 (23rd International Conference on Program Comprehension)
  17. Visual Analytics of Development Sessions
  18. } { Visual Analytics of Development Sessions Visualizing Developer Interactions R. Minelli, A. Mocci, M. Lanza, L. Baracchi In Proceedings of VISSOFT 2014 (2nd IEEE Working Conference on Software Visualization) 3:00 6:00 18:35 21:00 23:00 45:43 48:00 51:00 54:00 56:33 10:20 20:12 Activity Timeline Navigation Inspection Edit Understanding Vertical Lines Explicit Pause Implicit Pause Commit UI View Open Activate Resize/Move Close Minimize/Expand Minimized Backbone Nodes shape 1 event 10+ events edited color & stroke recent old size Edges color & stroke 1 occurrence 10+ occurrences past working set current working set start end Method Class Visualizing the Evolution of Working Sets R. Minelli, A. Mocci, M. Lanza In Proceedings of VISSOFT 2016 (4th IEEE Working Conference on Software Visualization)
  19. } { Visual Analytics of Development Sessions Visualizing Developer Interactions R. Minelli, A. Mocci, M. Lanza, L. Baracchi In Proceedings of VISSOFT 2014 (2nd IEEE Working Conference on Software Visualization) The Window Plague The Inspection Valley
  20. } { Visual Analytics of Development Sessions Visualizing the Evolution of Working Sets R. Minelli, A. Mocci, M. Lanza In Proceedings of VISSOFT 2016 (4th IEEE Working Conference on Software Visualization) Moving in Circles The Guiding Star The Working Funnel
  21. Supporting Developers with Interaction Data
  22. } { Supporting Developers with Interaction Data “Developers using a modern IDE are forced to open views on numerous source artifacts to reveal hidden relationships, leading to a crowded workspace with many opened windows or tabs.” Autumn Leaves: Curing the Window Plague in IDEs D. Röthlisberger, O. Nierstrasz, S. Ducasse In Proceedings of WCRE 2009 (16th Working Conference on Reverse Engineering)
  23. } { Supporting Developers with Interaction Data Autumn Leaves: Curing the Window Plague in IDEs D. Röthlisberger, O. Nierstrasz, S. Ducasse In Proceedings of WCRE 2009 (16th Working Conference on Reverse Engineering) The Plague Doctor: A Promising Cure for the Window Plague R. Minelli, A. Mocci, M. Lanza In Proceedings of ICPC 2015 (23rd International Conference on Program Comprehension) [ERA Track] young old Age pinned low Importance high “Developers using a modern IDE are forced to open views on numerous source artifacts to reveal hidden relationships, leading to a crowded workspace with many opened windows or tabs.”
  24. } { Supporting Developers with Interaction Data Developers spend more than 30% of their time in highly chaotic IDE configurations… Taming the IDE with Fine-grained Interaction Data R. Minelli, A. Mocci, R. Robbes, M. Lanza In Proceedings of ICPC 2016 (24th International Conference on Program Comprehension)
  25. } { Supporting Developers with Interaction Data Taming the IDE with Fine-grained Interaction Data R. Minelli, A. Mocci, R. Robbes, M. Lanza In Proceedings of ICPC 2016 (24th International Conference on Program Comprehension)
  26. } { Supporting Developers with Interaction Data Taming the IDE with Fine-grained Interaction Data R. Minelli, A. Mocci, R. Robbes, M. Lanza In Proceedings of ICPC 2016 (24th International Conference on Program Comprehension) Elision strategies
  27. } { Supporting Developers with Interaction Data Taming the IDE with Fine-grained Interaction Data R. Minelli, A. Mocci, R. Robbes, M. Lanza In Proceedings of ICPC 2016 (24th International Conference on Program Comprehension) + Elision strategies Layout strategies
  28. } { Supporting Developers with Interaction Data Taming the IDE with Fine-grained Interaction Data R. Minelli, A. Mocci, R. Robbes, M. Lanza In Proceedings of ICPC 2016 (24th International Conference on Program Comprehension) + Reduced chaos = Elision strategies Layout strategies
  29. DFlow is dead.
  30. DFlow is dead. And now what?
  31. } { CodeLounge is a center for software research & development, part of the Software Institute at USI. CodeLounge brings together expertise from academia and industry, with two main goals: push research ideas beyond prototypes making real products out of them, and carry out applied research in the areas of software development, visualization, evolution, and analytics. CodeLounge
  32. } { Tech·nol·o·gy trans·fer | tekˈnäləjē tran(t)sˈfər, ˈtran(t)sfər | The process of transferring technology from the person or organization that owns it to another person or organization to ensure that scientific and technological developments are accessible to a wider range of users who can further develop and exploit the technology into new products, processes, applications, or services.
  33. } { Hack-week #1 October, 2018 Yo! We are organizing an hack-week! Do you want to hack with us ?
  34. } { Hack-week #1 October, 2018 IDE Monitoring Linking Code with Page Visited Developer Dashboard Toolchain to Support the Generation of  Semi-Automatic Subtitles for TED/TEDx Talks Gitlab Ecosystem Particle System
  35. } { Hack-week #1 October, 2018 Università della Svizzera italiana Software Institute Interaction-Aware Development Environments Recording, Mining, and Leveraging IDE Interactions to Analyze and Support the Development Flow Roberto Minelli Doctoral Dissertation submitted to the Faculty of Informatics of the Università della Svizzera italiana (USI) in partial fulfillment of the requirements for the degree of Doctor of Philosophy Research Advisor Prof. Michele Lanza Research Co-Advisor Dr. Andrea Mocci
  36. } { Hack-week #1 October, 2018 Visual Studio Code Università della Svizzera italiana Software Institute Interaction-Aware Development Environments Recording, Mining, and Leveraging IDE Interactions to Analyze and Support the Development Flow Roberto Minelli Doctoral Dissertation submitted to the Faculty of Informatics of the Università della Svizzera italiana (USI) in partial fulfillment of the requirements for the degree of Doctor of Philosophy Research Advisor Prof. Michele Lanza Research Co-Advisor Dr. Andrea Mocci
  37. } { } { Hack-week #1 October, 2018
  38. } { } { Hasler Small Project Hasler Stiftung — Proposal for a Small Project Tako: Collecting and Visualizing Development Activities in Visual Studio Code Dr. Marco D’Ambros, Dr. Andrea Mocci CodeLounge @ Software Institute Università della Svizzera italiana https://codelounge.si.usi.ch/ Contents 1 Summary 1 2 Field of Research 2 3 Goals and Objectives 3 3.1 Hasler Project: Interaction Data for Visual Studio Code . . . . . . . . . . . . . . . . . . . 4 3.2 Potentials and Extension: Innosuisse project . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.3 CodeLounge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 4 Significance of the Project 6 4.1 Contributions to Swiss Software Development . . . . . . . . . . . . . . . . . . . . . . . . 6 4.2 Scientific Contributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 5 Work Plan and Requested Funding 7 5.1 Work Plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 5.1.1 WP1 (7 weeks): Collecting and analyzing raw data . . . . . . . . . . . . . . . . . 7 5.1.2 WP2 (10 weeks): Aggregation and modeling . . . . . . . . . . . . . . . . . . . . 8 5.1.3 WP3 (9 weeks): Reporting, Visualization, and Hints . . . . . . . . . . . . . . . . 9 5.2 Requested Funding and Staffing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 5.2.1 Team . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Andrea Mocci Marco D’Ambros
  39. Tako
  40. } { Tako An Interaction Data Profiler for Visual Studio Code An extension for Visual Studio Code that collects, aggregates, and visualizes fine-grained interaction data. Tako aggregates the data into development activities (e.g., navigation, editing) and provides a set of interactive visualizations to help developers reflect on their activities, and ultimately understand how they are spending their time. Tako supports multiple programming languages.
  41. } { Tako Recording Interaction Data in Visual Studio Code Visual Studio Code Developer Tool Language Server https://microsoft.github.io/language-server-protocol/
  42. } { Tako Recording Interaction Data in Visual Studio Code Visual Studio Code Developer Tool Language Server https://microsoft.github.io/language-server-protocol/ Notification: textDocument/didOpen
  43. } { Tako Recording Interaction Data in Visual Studio Code Visual Studio Code Developer Tool Language Server https://microsoft.github.io/language-server-protocol/ Notification: textDocument/didOpen Notification: textDocument/publishDiagnostics Notification: textDocument/didChange
  44. } { Crystal Java Scala Tako Recording Interaction Data in Visual Studio Code Visual Studio Code Developer Tool Language Server https://microsoft.github.io/language-server-protocol/ Notification: textDocument/didOpen Notification: textDocument/publishDiagnostics Notification: textDocument/didChange Request: textDocument/definition Response: textDocument/definition Result: Location
  45. } { Crystal Java Scala Tako Recording Interaction Data in Visual Studio Code Visual Studio Code Developer Tool Language Server https://microsoft.github.io/language-server-protocol/ Notification: textDocument/didOpen Notification: textDocument/publishDiagnostics Notification: textDocument/didChange Request: textDocument/definition Response: textDocument/definition Result: Location s
  46. } { Notification: textDocument/didOpen Notification: textDocument/publishDiagnostics Notification: textDocument/didChange Request: textDocument/definition Response: textDocument/definition Result: Location Java Scala Tako Recording Interaction Data in Visual Studio Code Visual Studio Code Developer Tool Language Server https://microsoft.github.io/language-server-protocol/ Language Server Protocol s Crystal
  47. } { Notification: textDocument/didOpen Notification: textDocument/publishDiagnostics Notification: textDocument/didChange Request: textDocument/definition Response: textDocument/definition Result: Location Java Scala Tako Recording Interaction Data in Visual Studio Code Visual Studio Code Developer Tool Language Server https://microsoft.github.io/language-server-protocol/ Language Server Protocol Custom Middleware Crystal s
  48. } { Tako Visualizing Development Sessions
  49. } { Tako Visualizing Development Sessions
  50. } { Tako Visualizing Development Sessions
  51. } { Tako Visualizing Development Sessions
  52. } { Tako Visualizing Development Sessions
  53. } { Hack-week #2 February, 2021 Free Hugs — Praising Developers For Their Actions Roberto Minelli, Andrea Mocci, and Michele Lanza REVEAL @ Faculty of Informatics — University of Lugano, Switzerland Abstract—Developing software is a complex, intrinsically in- tellectual, and therefore ephemeral activity, also due to the intangible nature of the end product, the source code. There is a thin red line between a productive development session, where a developer actually does something useful and productive, and a session where the developer essentially produces “fried air”, pieces of code whose quality and usefulness are doubtful at best. We believe that well-thought mechanisms of gamification built on fine-grained interaction information mined from the IDE can crystallize and reward good coding behavior. We present our preliminary experience with the design and implementation of a micro-gamification layer built into an object- oriented IDE, which at the end of each development session not only helps the developer to understand what he actually produced, but also praises him in case the development session was productive. Building on this, we envision an environment where the IDE reflects on the deeds of the developers and by providing a historical view also helps to track and reward long- term growth in terms of development skills, not dissimilar from the mechanics of role-playing games. I. INTRODUCTION What is a game? According to McGonigal [1] games share four defining traits: a goal, rules, a feedback system, and volun- tary participation. The goal gives a sense of purpose. The rules unleash creativity and foster strategic thinking. The feedback system provides motivation. The voluntary participation makes the experience safe and pleasurable. Suits sums it up with “playing a game is the voluntary attempt to overcome unnec- essary obstacles” [2]. McGonigal provides several examples of contexts, ranging from house holding chores to physical exercise, where the performance of subjects has been boosted through gamification [1]. While this may seem remote from software engineering, Werbach and Hunter provide an illumi- nating example closer to our discipline: Microsoft’s testing team in charge of the multi-language aspect of Windows 7 invented the Language Quality Game, recruiting thousands of participants who reviewed over half a million dialog boxes, logging 6,700 bug reports, resulting in hundreds of fixes [3]. Another example is StackOverflow, a Q&A website where asking and answering technical questions is rewarded with points and badges. There is evidence that gamification is in part responsible for StackOverflow’s success [4]. We envision the use of gamification in the context of how developers use the main vehicle for programming, namely the integrated development environment (IDE). Modern IDEs have become powerful tool suites that allow one to construct, understand, and modify software systems. This is quite a step away from the (in our opinion outdated) notion, promoted by Weinberg several decades ago, that programming is a “kind of writing” (of source code) [5]. We believe this is a fundamentally flawed perception, and among others is also responsible for the wrong, and fashioned, assumption that productivity can be measured in terms of lines of code [6], [7]. Programming is more, beautifully put by Brooks: “The programmer, like the poet, works only slightly removed from thought-stuff. He builds his castles in the air, from air, creating by exertion of the imagination.” [7]. Although this sounds all very poetic and romantic, in the end developers often end up as unsung heroes, i.e., there is no mechanism (other than venal aspects) that rewards them for a good job. What can be done about it? The ICSE NIER track welcomes “Bold visions of new directions which may not yet be supported by solid results but rather by a strong and well motivated scientific intuition.”. As opposed to the common belief that gamification is a recent, under-explored and thus not very scientific domain, behind it there is in fact a strong scientific intuition, rooted in the realm of psychology, and more specifically behaviorism, an approach that combines elements of philosophy, methodology, and theory [8]. In fact, behaviorism, whose main tenet is “if you do this you’ll get that”, is the antithesis of successful gamification, because simple rewarding mechanisms like token programs have been shown to be bound to fail [9] in the long run. Put simply, our goal is not to assign points to development actions. Such a simplistic approach is destined to fail. Rather, we propose a comprehensive approach where the ultimate goal is the creation of an alter ego of a developer, which we believe is the key to enable what McGonigal [1] identified as the 4 key aspects of successful gamification: (1) Satisfying work (after all, programming is creative), (2) the experience/hope of being successful, (3) a social connection, and (4) a deeper meaning. We argue that the creation of such an alter ego is the key to provide both short-term and long-term gratification to developers. We are currently devising and implementing an approach which leverages fine-grained interaction data mined from an IDE using our tool DFLOW [10]. DFLOW models and silently harvests any low-level action performed by developers and thus offers a complete and precise summary of what is being done. Our vision is composed of the following steps: • Session Digest. The session digest is a short-term form of gratification, similar to the one present in fitness apps, offered to developers for their last development session. It summarizes the last session from various perspectives, e.g., how was time used, how much was achieved from a coding point of view, which program entities were involved, etc. It also enables to dig into the fine-grained recorded data and acquire a deeper understanding.
  54. } { Free Hugs — Praising Developers For Their Actions Roberto Minelli, Andrea Mocci, and Michele Lanza REVEAL @ Faculty of Informatics — University of Lugano, Switzerland Abstract—Developing software is a complex, intrinsically in- tellectual, and therefore ephemeral activity, also due to the intangible nature of the end product, the source code. There is a thin red line between a productive development session, where a developer actually does something useful and productive, and a session where the developer essentially produces “fried air”, pieces of code whose quality and usefulness are doubtful at best. We believe that well-thought mechanisms of gamification built on fine-grained interaction information mined from the IDE can crystallize and reward good coding behavior. We present our preliminary experience with the design and implementation of a micro-gamification layer built into an object- oriented IDE, which at the end of each development session not only helps the developer to understand what he actually produced, but also praises him in case the development session was productive. Building on this, we envision an environment where the IDE reflects on the deeds of the developers and by providing a historical view also helps to track and reward long- term growth in terms of development skills, not dissimilar from the mechanics of role-playing games. I. INTRODUCTION What is a game? According to McGonigal [1] games share four defining traits: a goal, rules, a feedback system, and volun- tary participation. The goal gives a sense of purpose. The rules unleash creativity and foster strategic thinking. The feedback system provides motivation. The voluntary participation makes the experience safe and pleasurable. Suits sums it up with “playing a game is the voluntary attempt to overcome unnec- essary obstacles” [2]. McGonigal provides several examples of contexts, ranging from house holding chores to physical exercise, where the performance of subjects has been boosted through gamification [1]. While this may seem remote from software engineering, Werbach and Hunter provide an illumi- nating example closer to our discipline: Microsoft’s testing team in charge of the multi-language aspect of Windows 7 invented the Language Quality Game, recruiting thousands of participants who reviewed over half a million dialog boxes, logging 6,700 bug reports, resulting in hundreds of fixes [3]. Another example is StackOverflow, a Q&A website where asking and answering technical questions is rewarded with points and badges. There is evidence that gamification is in part responsible for StackOverflow’s success [4]. We envision the use of gamification in the context of how developers use the main vehicle for programming, namely the integrated development environment (IDE). Modern IDEs have become powerful tool suites that allow one to construct, understand, and modify software systems. This is quite a step away from the (in our opinion outdated) notion, promoted by Weinberg several decades ago, that programming is a “kind of writing” (of source code) [5]. We believe this is a fundamentally flawed perception, and among others is also responsible for the wrong, and fashioned, assumption that productivity can be measured in terms of lines of code [6], [7]. Programming is more, beautifully put by Brooks: “The programmer, like the poet, works only slightly removed from thought-stuff. He builds his castles in the air, from air, creating by exertion of the imagination.” [7]. Although this sounds all very poetic and romantic, in the end developers often end up as unsung heroes, i.e., there is no mechanism (other than venal aspects) that rewards them for a good job. What can be done about it? The ICSE NIER track welcomes “Bold visions of new directions which may not yet be supported by solid results but rather by a strong and well motivated scientific intuition.”. As opposed to the common belief that gamification is a recent, under-explored and thus not very scientific domain, behind it there is in fact a strong scientific intuition, rooted in the realm of psychology, and more specifically behaviorism, an approach that combines elements of philosophy, methodology, and theory [8]. In fact, behaviorism, whose main tenet is “if you do this you’ll get that”, is the antithesis of successful gamification, because simple rewarding mechanisms like token programs have been shown to be bound to fail [9] in the long run. Put simply, our goal is not to assign points to development actions. Such a simplistic approach is destined to fail. Rather, we propose a comprehensive approach where the ultimate goal is the creation of an alter ego of a developer, which we believe is the key to enable what McGonigal [1] identified as the 4 key aspects of successful gamification: (1) Satisfying work (after all, programming is creative), (2) the experience/hope of being successful, (3) a social connection, and (4) a deeper meaning. We argue that the creation of such an alter ego is the key to provide both short-term and long-term gratification to developers. We are currently devising and implementing an approach which leverages fine-grained interaction data mined from an IDE using our tool DFLOW [10]. DFLOW models and silently harvests any low-level action performed by developers and thus offers a complete and precise summary of what is being done. Our vision is composed of the following steps: • Session Digest. The session digest is a short-term form of gratification, similar to the one present in fitness apps, offered to developers for their last development session. It summarizes the last session from various perspectives, e.g., how was time used, how much was achieved from a coding point of view, which program entities were involved, etc. It also enables to dig into the fine-grained recorded data and acquire a deeper understanding. Session Digest When? Navigation Understanding Editing User Interface browsing inspecting searching 2h09m25s duration 6m22s navgation time 11m06s editing time 20m16s user interface time 1h31m40s understanding time Profile 23 2,321 pts. 12 Lv. 4 1 2 What? 1 class 3 methods 3 class 4 methods 1 class 1 method navigation inspection edit mouse keyboard Top Activity Timeline time How do you feel? Hack-week #2 February, 2021
  55. } { The Session Digest
  56. Acknowledgements
  57. } { CodeLounge Team Marco D’Ambros Michele Lanza Andrea Mocci Jesper Findahl Davide Paolo Tua Valerie Burgener Luca Ponzanelli
  58. } { Tako An Interaction Data Profiler for VS Code An extension for Visual Studio Code (VSC) that collects, aggregates, and visualizes fine-grained interaction data. Tako supports multiple programming languages. It aggregates the data into development activities (e.g., navigation, editing) and provides a set of interactive visualizations to help developers reflect on their activities, and ultimately understand how they are spending their time. } { My PhD Dissertation Interaction-Aware Development Environments enable novel and in-depth analyses of the behavior of software developers and set the ground to provide developers with effective and actionable support for their activities inside the Integrated Development Environment (IDE).” —Roberto Minelli, 2017 Università della Svizzera italiana Software Institute Interaction-Aware Development Environments Recording, Mining, and Leveraging IDE Interactions to Analyze and Support the Development Flow Roberto Minelli Doctoral Dissertation submitted to the Faculty of Informatics of the Università della Svizzera italiana (USI) in partial fulfillment of the requirements for the degree of Doctor of Philosophy Research Advisor Prof. Michele Lanza Research Co-Advisor Dr. Andrea Mocci Roberto Minelli } { What is Interaction Data? } { The Session Digest DFlow is dead. Long live Tako!
Advertisement