Aalto University School of Science Degree Programme in Computer Science and Engineering Vittorio Dal Bianco Third-Party Developer Experience: Using the platform boundary resources of a software ecosystem Master’s Thesis Espoo, August 16, 2013 Supervisor: Professor Marjo Kauppinen, Aalto University Advisor: Mikko Raatikainen M.Sc. (Tech.) Aalto University School of Science Degree Programme in Computer Science and Engineering ABSTRACT OF MASTER’S THESIS Author: Vittorio Dal Bianco Title: Third-Party Developer Experience: Using the platform boundary resources of a software ecosystem Date: August 16, 2013 Pages: ix + 90 Major: Software Engineering Code: T-76 Supervisor: Professor Marjo Kauppinen Advisor: Mikko Raatikainen M.Sc. (Tech.) Software ecosystems are an increasingly common setting in which software organizations operate. A software ecosystem refers to a context where a keystone player, or platform owner, provides a software platform and platform boundary resources. These resources allow third-party developers to build software applications on top of the platform. These applications target end-users who selected to adopt the software platform. The relationships among the entities we introduced are the engine of a software ecosystem. After selecting the software platform, much of the interaction the end-users have with the software ecosystem happens by selecting and using the software applications that are available in the software ecosystem. Hence, software applications play a crucial role in the success of the software ecosystem. Attracting third-party developers to build software applications is, therefore, a key issue. In this sense, a fundamental technical concern is third-party developer experience. In fact, minimizing developers effort is recognized as one of the key success factors; and it requires acting on the platform boundary resources. We understand this as enabling third-party development. We investigated these issues in the specific context of F-Secure’s Content Anywhere (CAN) Ecosystem. We conducted a case study in a hackathon event, where F-Secure used the CAN Ecosystem. We found out that enablement can occur to different degrees. We concluded that the minimum requirement is to ensure technical feasibility through APIs and access to basic resources. While, for example, addressing issues of learnability and abstraction levels helps to raise the degree of enablement; thus increasing the software ecosystem’s attractiveness to third-party developers. Additionally, the third-party developer experience is affected by met or unmet expectations; the expectations depend on the mental model that the developer constructs. Keywords: software ecosystems, third-party developer experience, platform boundary resources Language: English ii Acknowledgements I wish to thank all the people that, in different ways, have supported me throughout my master’s thesis journey and during my master’s at Aalto University. First of all, special thanks to my instructor Mikko Raatikainen for the precious feedback, support and guidance that he has constantly given me. Thanks for reviewing this thesis a number of times and helping me to steer it to the right direction. Another special thanks to my supervisor Marjo Kauppinen, for the guidance she offered and for the continuous encouragements. I would also want to thank Tömi Männistö for supervising this research work at the beginning of its journey. My gratitude also goes to Danielle Pichlis, Jari Pääkkö and Mikko Ylikangas. Thanks for all the advices and practical help, but most of all thanks for sharing all the moments that have led to the completion of this master’s thesis. In addition, I would like to thank all the other people from the Preago research group. I am also thankful to SoberIT for the giving me the opportunity to work on my master’s thesis. I also want to thank Marko Komssi, Janne Järvinen, Klas Kindström, Heikki Nousiainen and all the other people at F-Secure that made this research work possible. I would like thank this people also for the article we wrote, together with Mikko Raatikainen, for COMPSAC ’13. I also wish to thank the SMT 10 A crew: Simon, Raisa, Marc and Danielle. Thanks for the great time we had together, for believing in me and bringing joy in this journey. Finally I want to thank my family for supporting me during the studies in Finland, and also before. Thanks for the countless Skype calls and the nice moments spent together. Espoo, August 16, 2013 Vittorio Dal Bianco iii “Sit down before fact with an open mind. Be prepared to give up every preconceived notion. Follow humbly wherever and to whatever abyss Nature leads or you learn nothing. Don’t push out figures when facts are going in the opposite direction.” –Admiral Hyman G. Rickover “Technology makes it possible for people to gain control over everything, except over technology.” –Jhon Tudor “It troubles me that we are so easily pressured by purveyors of technology into permitting so-called “progress” to alter our lives without attempting to control it’as if technology were an irrepressible force of nature to which we must meekly submit.” –Admiral Hyman G. Rickover iv Contents 1 Introduction 1.1 Background . . . . . . . . . . . 1.2 Problem Area . . . . . . . . . . 1.3 Research Problem . . . . . . . . 1.4 Hackathon . . . . . . . . . . . . 1.4.1 Hackathons’ Description 1.4.2 Hackathon Activities . . 1.5 Scope of the Thesis . . . . . . . 1.6 Thesis Outline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Research Method 2.1 Empirical Data Collection . . . . . . . . 2.1.1 In the Hackathon . . . . . . . . . 2.1.2 Interviews and Feedback Meeting 2.2 Data Analysis . . . . . . . . . . . . . . . 3 Software Ecosystems 3.1 Definition of Software Ecosystems . 3.2 Software platforms in SECOs . . . 3.3 A Theory of Software Ecosystems . 3.4 Taxonomy of Software Ecosystems . 3.5 Roles in Software Ecosystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Third-Party Development in SECOs 4.1 Software Platforms . . . . . . . . . . . . . . . . . . . . . . . 4.1.1 Software Platforms Architecture . . . . . . . . . . . . 4.1.2 Platform Boundary Resources and Third-party Development . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Platform Boundary Resources . . . . . . . . . . . . . . . . . 4.3 Boundary Objects in Design . . . . . . . . . . . . . . . . . . v . . . . . . . . 1 1 4 5 8 8 9 10 10 . . . . 12 12 14 16 19 . . . . . 21 22 24 26 29 32 36 . 36 . 37 . 38 . 40 . 42 5 Third-Party Developer Experience 5.1 Quality Characteristics and Quality in Use (ISO/IEC 9126-1) 5.1.1 Relation to Third-Party Developer Experience . . . . . 5.1.2 Metrics from Software Quality . . . . . . . . . . . . . . 5.2 Usability (ISO 9241-11) . . . . . . . . . . . . . . . . . . . . . 5.2.1 Relation to Third-Party Developer Experience . . . . . 5.2.2 Metrics from Usability . . . . . . . . . . . . . . . . . . 5.3 User Experience (ISO 9241-210) . . . . . . . . . . . . . . . . . 5.3.1 Relation to Third-Party Developer Experience . . . . . 5.3.2 Metrics from User Experience . . . . . . . . . . . . . . 5.4 The Standards and Third-party Developer Experience . . . . . 45 46 46 49 50 50 51 53 53 54 55 6 Results of the Case Study 6.1 CAN Ecosystem . . . . . . . . . . . . . . . . . . . 6.1.1 Software Platform Architecture . . . . . . 6.1.2 Platform Boundary Resources . . . . . . . 6.1.3 Technical Platform Boundary Resources . 6.1.4 Social Platform Boundary Resources . . . 6.2 Evaluation . . . . . . . . . . . . . . . . . . . . . . 6.2.1 Understanding the Platform Architecture . 6.2.2 Learnability . . . . . . . . . . . . . . . . . 6.2.3 Developer Portal and Registration Process 6.2.4 Support . . . . . . . . . . . . . . . . . . . 6.2.5 Using the APIs . . . . . . . . . . . . . . . 6.2.6 Authentication and Ticketing . . . . . . . 6.2.7 Tagging issue . . . . . . . . . . . . . . . . 6.2.8 Javascript . . . . . . . . . . . . . . . . . . 6.2.9 External Workers . . . . . . . . . . . . . . 6.3 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 58 60 62 63 63 65 65 66 67 67 68 68 69 69 69 70 7 Discussion 7.1 Answering the First Research Question . . . 7.1.1 Comparison with Related Work . . . 7.2 Answering the Second Research Question . . 7.2.1 Comparison with Related Work . . . 7.3 Further Observations . . . . . . . . . . . . . 7.3.1 Third-party Developer Segmentation 7.3.2 Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 72 74 74 75 77 77 78 vi . . . . . . . . . . . . . . . . . . . . . 8 Validity Discussion 80 8.1 Internal validity . . . . . . . . . . . . . . . . . . . . . . . . . . 80 8.2 Construct validity . . . . . . . . . . . . . . . . . . . . . . . . . 81 8.3 External validity . . . . . . . . . . . . . . . . . . . . . . . . . 81 9 Conclusions 83 9.1 Future Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 vii List of Tables 2.1 2.2 Pre-study data . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Data collection . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.1 3.2 Software platform, possible denominations . . . . . . . . . . . 25 Roles in SECOs . . . . . . . . . . . . . . . . . . . . . . . . . . 35 5.1 5.2 5.3 Software quality model (ISO/IEC 9126-1), own synthesis . . . 49 Usability objectives and possible measures, an example . . . . 52 Combining the standards . . . . . . . . . . . . . . . . . . . . . 56 viii List of Figures 1.1 1.2 Software Ecosystem, Roles and Elements . . . . . . . . . . . . 6 Hackathon activities . . . . . . . . . . . . . . . . . . . . . . . 11 2.1 2.2 Retrospective questionnaire . . . . . . . . . . . . . . . . . . . 17 Happiness level graph . . . . . . . . . . . . . . . . . . . . . . . 18 3.1 3.2 3.3 Taxonomy, Bosch (2009) . . . . . . . . . . . . . . . . . . . . . 30 Taxonomy, Bosch (2012) . . . . . . . . . . . . . . . . . . . . . 30 The Onion Model . . . . . . . . . . . . . . . . . . . . . . . . . 32 6.1 6.2 6.3 Content Anywhere . . . . . . . . . . . . . . . . . . . . . . . . 60 CAN architecture. A high level representation . . . . . . . . . 61 Content Anywhere Ecosystem . . . . . . . . . . . . . . . . . . 62 ix Chapter 1 Introduction 1.1 Background When observing the different smartphones ecosystems it is easy to notice how the number of software applications available for the end-users has been growing exponentially; there are applications for any possible use one can think of, and some that one cannot even think of. At the present stage, potentially anyone would be able to develop an application, and even the step “from-zero-to-superhero” is not that huge anymore; meaning the step from being a novice to reaching a satisfactory level of expertise. In these contexts the barriers for developing and marketing applications have significantly lowered (Yoo et al., 2010). Barriers can be various kinds of costs and difficulties; first of all learning, accessing tools and distribution. To summarize, it is possible to say that innovation has been democratized (Yoo et al., 2010). These kinds of settings are usually referred to as software ecosystems (Hanssen and Dybå, 2012; Jansen et al., 2009b; Bosch, 2012; Scacchi and Alspaugh, 2012). In a software ecosystem there typically is an organization controlling the platform, and third-party developers, or at a general level complementors, that produce complementary assets for the platform. The platform offers third-parties a means to reach its heterogeneous customer base or end-users. By producing the complementary applications the thirdparties aim at fulfilling the different needs of the different end-users groups. Furthermore, software organizations are becoming more and more permeable and linked to one another. Doing so, platform owners accept to shift part of their design capabilities and control to third-parties, in order to bring in complementary components (von Hippel and Katz, 2002; Ghazawneh and Henfridsson, 2010). These third-parties, in turn, use the platform produc- 1 CHAPTER 1. INTRODUCTION 2 ing heterogeneous and potentially unexpected results (Yoo et al., 2010). In other words, a software ecosystem is the result of a strategy where software producing organizations open interfaces to the external world in order to harness open innovation. In fact, there is a trend in the software industry where organizations open up successful product lines to third-party development (Bosch, 2012), but software ecosystems can also grow around an open source platform (Kilamo et al., 2012) (Jansen et al., 2012) or an open standard (Jansen et al., 2012). However, there is no guarantee that enacting a software ecosystem strategy will lead to a great success (Ghazawneh and Henfridsson, 2010). The fundamental prerequisite for the birth of a thriving ecosystem is the presence of a software platform with a layered modular architecture (Yoo et al., 2010). Because of such an architecture, the software platform can be used not only as a standalone product, but it allows third-parties to innovate using the services the platform exposes (Gawer and Cusumano, 2008; Yoo et al., 2010). From the technological perspective this innovation, driven by third-party, is enabled by creating an architecture providing interfaces (Gawer and Cusumano, 2008). In other words, the enablement occurs providing resources as APIs(application programming interfaces) and SDKs (software development kits) (Yoo et al., 2010). In this thesis we refer to these resources as platform boundary resources (Ghazawneh, 2012). These boundary resources are the interface that allows the third-party developers to access the services and resources offered by the software platform without knowing too many details. Within platform boundary resources, technical boundary resources are not the only means to enable and facilitate the third-parties; it happens also through social boundary resources(Ghazawneh and Henfridsson, 2010). These social resources are different forms of support: as documentation; intellectual propriety rights (IPR) agreements; and a market place, just to name a few. From the business perspective, the platform owner needs to provide the third-parties with incentives; often in the form of viable business models (Bosch, 2012). In other words the possibility to benefit from the software ecosystem. From the industrial economics perspective a software ecosystem typically fits the definition of a two-sided market, and it shares similar high-level dynamics. Two-sided markets have a platform owner and two distinct groups of users(also called players or actors) on each side of the platform. The platform is a product or service that connects these two groups (Eisenmann et al., 2006). These are rather complex market situations that have many issues to be taken into account. In contrast to the traditional industry value chain, from the platform owner point of view, costs and revenues are on both CHAPTER 1. INTRODUCTION 3 sides; though one of the sides is often subsidized (Eisenmann et al., 2006). For example Adobe is charging writers for the software that creates PDFs, but has a give-away policy for the reader. The setting is not new, although it has evolved significantly (Eisenmann et al., 2006). One of the first examples of a two-sided market is the credit card payment system that connects consumers and merchants. Later on appeared operating systems and video game consoles; although they look similar they have different market dynamics. Then Google and all its services, linking the endusers of its services with advertisers. Last but not least the ecosystems existing around the smartphones’ operating systems; interesting, among other things, for the multi-homing issues third-parties have to face. Multi-homing is the problem, for third-parties, of deploying as software applications in all the software platforms. For this reason, often third-parties need to make a choice about which ecosystem to participate in. All the provided examples share common characteristics.The platform provides the infrastructure and rules that enable interactions between the two groups. Interactions, within and across the two groups, are the engine of software ecosystems (Hanssen, 2012) and generate network effects (Eisenmann et al., 2006). Network effect is a term used to describe the phenomena involving and affecting the users on both sides of a two-sided market. Such phenomena are responsible for creating virtuous circles (Cusumano and Gawer, 2002); to be exact, only a subset of those are. This subset can be referred to as “positive cross-side network effect” (Eisenmann et al., 2006) using another author’s denomination. Other possible, but less specific, denomination are “positive-feedback effects” (Cusumano and Gawer, 2002) and “positive network externalities” (Cusumano and Gawer, 2002) (Yoo et al., 2010). In two-sided markets it is fundamental to consider different kinds of network effects: same-side or cross-side network effects; each of those can be positive or negative (Eisenmann et al., 2006). An example of positive sameside network effect is that people join Facebook or choose WhatsApp over similar messaging services because more and more of their acquaintances are part of the service. Same-side network effect can also be negative: usually the group of users making transactions with the other side of the platform prefers to have less competitors. A positive cross-side network effect occurs when one side of the market is attracted to the platform because of the large user base on the other side of the market. There could even be negative cross-side effects. For example endusers might get annoyed by the amount of advertisers on a platform (e.g. TV content providers, Google) and be willing to join another platform because of that. This, of course, requires the presence of a competitor for the described mechanism to happen. This last condition is not always obvious, since often CHAPTER 1. INTRODUCTION 4 there are winner-take-all dynamics in two-sided markets (Eisenmann et al., 2006). Meaning that, typically in a two-sided market almost all the endusers are using a single platform. The platform can be controlled by a single company (e.g. PC operating systems) or be shared among companies (e.g. DVD standard) (Eisenmann et al., 2006). In two-sided markets a big challenge for the company controlling the platform, is to generate and harness positive network effects. A particular pricing policy, for example, may be one way to generate such effects (Eisenmann et al., 2006). In the specific context of software ecosystems, attracting third-party development is a major strategical concern (Yoo et al., 2010); it is one way of generating positive network effects (Eisenmann et al., 2006). In fact, the higher the number of applications the more the end-user can benefit from the ecosystem (Huang et al., 2009; Kabbedijk and Jansen, 2011); thus the ecosystem thrives. To achieve this objective, enabling third-party development is an important issue. That happens in a number of ways that may have a different magnitude of importance. It starts from technically giving the possibility of interacting with the platform and developing software applications on top of it; to providing realizable business models; to support and facilitate in various ways the software development processes. 1.2 Problem Area At a general level, there is still not an agreed definition or theory about software ecosystems nor sufficient research on “real-word” SECO’s (Manikas and Hansen, 2013); some authors call for more empirical studies of exploratory or longitudinal nature (Hanssen, 2012) (Kilamo et al., 2012). Within this field third-party developers are perceived as crucial by many authors. The relation between the software platform owner and third-party developers has been defined as “the engine of a software ecosystem” (Hanssen, 2012), and among the challenges encountered by platform owners, there is the ability to attract developer to produce complementary assets (i.e. software applications) for the platform (Ghazawneh, 2012). So the main aim of software platform owner is to facilitate and boost the development process. At the same time there is an intrinsic tension in the relationship between the software platform and the third-party developers, that originates from conflicting needs (Bosch, 2009). On one hand the the software platform owner wants to facilitate the development processes as much as possible to harness the potential innovation and the possibility of addressing the needs of heterogeneous users (von Hippel and Katz, 2002); this means a shift of design CHAPTER 1. INTRODUCTION 5 capabilities (von Hippel and Katz, 2002) towards the third parties. On the other hand the platform owner still wants to retain control of the platform, and is reluctant to give up part of the relationship with the end-users to the third-parties (Bosch, 2009; Ghazawneh, 2012). Finally, these relations and the described mechanism exist through what has been referred to as platform boundary resources; they are an interface between entities. These resources, on a general level, can be described as the attempt of the platform owner to address the needs of the third-party developers; these resources range from technical solutions to viable business models (Bosch, 2009). This calls for additional research studies on the topic (Ghazawneh, 2012), particularly in relation to practices that attract thirdparty development. To our knowledge, platform boundary resources in a software ecosystem were investigated from the perspective of the platform owner (Ghazawneh, 2012); Hence another suggested direction is to analyze their role from the perspective of third-party developers. A simplified view of the problem area is offered by Figure 1.1. In this figure we can see the three basic roles within a software ecosystem, as well as the main elements and the relations between the elements and roles. 1.3 Research Problem The success of a software ecosystem is determined by the software application built on top of it (Bosch, 2009). It follows that third-party developers are undoubtedly a key element: they play a major role in making attractive for the users to join the software ecosystem. Third-party developers develop heterogeneous software applications that complement the software platform, hence making the software ecosystem more appealing for heterogeneous endusers with different needs and living in different contexts. Observing the problem from the third-party developers perspective: What makes third-party developers join a particular software ecosystem and invest in the development of applications? One of the main drives for the developers to join a software ecosystem is certainly the economic reasoning involved (Eisenmann et al., 2006; Huang et al., 2009) (e.g. size of the market, competitors, investments and risks etc.). However, a maybe obvious, fundamental prerequisite is that the third-party developers are actually able to develop software applications. We mean that another factor that definitely plays a major role in the ecosystem’s dynamics is the ease, for third-party developers, to develop applications for the software ecosystem. In fact “Minimizing the effort required by developers...” (Bosch, CHAPTER 1. INTRODUCTION Figure 1.1: Essential roles and elements of a software ecosystem 6 CHAPTER 1. INTRODUCTION 7 2009) to develop applications on top of the software platform is indicated as a key factor for the success of the software ecosystem (Bosch, 2009). The interaction of the third-party developers with the software platform is mediated by platform boundary resources (Ghazawneh and Henfridsson, 2012; Ghazawneh, 2012)(See Figure 1.1). So: Minimizing third-party developers effort requires acting on the platform boundary resources; we refer to minimizing third-party developers effort as enabling third-party development. At the same time, the effort or enablement is perceived by third-party developers. So: To understand how to enable third-party development further, it is crucial to understand the experience of third-party developers in using platform boundary resources to create software applications. We studied the problem in light of the practical challenge F-secure had in creating a software ecosystem around their product called Content Anywhere. The research problem is condensed in the following research questions: RQ1 How does F-secure enable third-party development through platform boundary resources? RQ2 What does third-party developer experience consist of in F-secure’s software ecosystem? The first question is concerned with the current state of the practice of Content Anywhere Ecosystem in relation to its boundary resources offered to third-party developers. The second question, is concerned with how the platform boundary resources and Content Anywhere Ecosystem in general are perceived by third-party developers. To answer this questions, the approach we chose was to find relevant elements for discussion starting from the literature concerning software ecosystems and their internal dynamics. We also considered literature concerning API’s usage and, in general, resources offered to third-party developers as well as traditional usability and user experience material. The literature part was complemented with empirical data collection. In order to collect data in a convenient and semi-controlled way, both for the researchers and the developers, we used a hackathon as the setting to conduct our research. A hackathon is described in the next section. CHAPTER 1. INTRODUCTION 1.4 8 Hackathon In order to explore and gain a better understanding of the the issues we listed when presenting the research problem, we decided to observe and collect data during a hackathon organized by F-secure. During this hackathon, teams of F-secure’s employees were developing different kind of software application prototypes. The software applications had different scopes, but they were all using the services offered by F-secure’s Content Anywhere Ecosystem through the third-party APIs; along with other application-specific technologies. 1.4.1 Hackathons’ Description Hackathon stands for hacking marathon. Other denominations might also be hack day, hackfest or codefest, and even webfest if focused on web development. A possible explanation of these different names comes from one of the the informal interviews, part of the lightweight pre-study on how to organize successful hackathons. According to the interviewee that organized a hackathon at CERN (Centre, 2012) called Webfest, the choice of using a wording including hacking was discarded because some people would have associated it with something related to computer crime. Regardless of the terminology used to describe it, a hackathon is: “An event where people in small groups participate in an intensive prototyping activity for a limited amount of time.” (Raatikainen et al., 2013) Usually the prototyping activity is software development, particularly web and mobile applications, but it could be otherwise. Recently at Aalto university there has been a 48-hours hackathon with 3D printers (AaltoES, 2013); at the OKfestival1 , that took place in Helsinki in September 2012, there was an open journalism hackathon; in the Cloud Software Hackathon2 in March 2013 in Vuokatti there was a business development hackathon. The prototyping activity typically goes from the idea generation to the demonstration of a working prototype. In that case the main activity consists solely of the idea generation and its communication by some form of visualization, the word jam (Osvald and Robert, 2008) might be more appropriate. An informal report of a hackathon event can be found on Wired in the article “The Hackathon Is On: Pitching and Programming the Next Killer 1 2 http://okfestival.org/ http://www.cloudsoftwareprogram.org/ CHAPTER 1. INTRODUCTION 9 App” (Leckart, 2012). The event can last from one night like in Facebook’s internal hackathons (Burnham, 2012) to some days like in the case of F-secure’s internal hackathon; typical formats are a 24-hours and 48-hours hackathons. We use the term internal hachathons because we want to specify that only the employees of a specific company participate. 1.4.2 Hackathon Activities An example of the different phases of an hackathon is given in Figure 1.2. The first phase is the idea generation, and it can happen in different ways. Either some participants pitch their idea to the other participants that then decide who to join, or the team does some brainstorming activity. All the different options for idea generation may happen before the start of the actual hackathon. The second phase involves forming a team, as explained in the previous description it can happen before or after the initial idea generation. Ideally the team should include a designer and a business oriented person in addition to coders. However, in many cases the team is only composed of coders. The main phase is clearly the development activity. The members of the team usually do a little bit of planning to divide tasks and define the characteristics of the minimum viable product. To this end, the coders typically have an incremental approach, since it might be hard to make an estimate of the required time and the difficulties one may encounter. So they try to achieve basic objectives at first and then add more in the following iterations if there is time left; team members can help other members in case their tasks are completed and others are having difficulties. When the time is up, the teams have to present their prototype and answer questions from the audience. After that, the best prototypes can receive different kinds of prizes. Another phase that is not mentioned in the example picture is the “set-up” phase. As for the idea generation, this phase can happen before the actual hackathon event. It typically comprises setting up the required tools (eg. installing certain IDE, or particular libraries), getting acquainted with some specific technologies by reading the documentation and so forth. These last activity as well the idea generation part can happen before the actual hackathon; with the goal of saving the, already short, available time for focusing on the prototype development. We provided an account of typical hackathon activities. This information have been condensed from: on-line articles; few scientifically conducted studies; informal interviews in the pre-study phase; personal experience. However, it cannot be denied that there is no formal structure for a hackathon, as there is no standardized definition of what constitutes a hackathon; except CHAPTER 1. INTRODUCTION 10 maybe the common knowledge that it involves some prototyping activity. Actually, hacking itself lacks formality by definition. 1.5 Scope of the Thesis Without any doubts, economic reasoning regarding viable business models is a major concern in the context of third-party development; so in this regard it is important to provide guidance to developers (Bosch, 2012). In addition, there are issues related to the specific business relations between the third-parties and the end-users; issues about IPR related to the third-parties’ innovations; and issues related to the impact these two factors have in the likelihood that third-parties join the software ecosystem (Huang et al., 2009). However, this study focuses on issues related to the usage of the platform boundary resources exposed to the third-party developers in the context of a specific software ecosystem. Estimations on the different impact that the different factors have (i.e. various economic reasoning or technical and legal concerns), in making third-parties participate in a SECO, is also kept out of the objectives of this Master’s thesis. 1.6 Thesis Outline This master’s thesis starts with an introductive chapter where we depict the general context in which reside the specific issues that this study is concerned with. This first chapter includes also the description of the specific target of this study and the research objectives. Chapter 2 presents the research methods used to realize this study. Chapters 3, 4, and 5 are concerned with established knowledge from the available literature and standards. Those chapters provide basic and more advanced concepts, define the terminology used throughout the thesis, as well as possible measures. Chapter 6, after the introducing Content Anywhere Ecosystem, presents the result of our data collection and analysis in the form of an evaluation. In Chapter 7 results are first discussed in relation the research questions, and then in relation to the findings of other studies that are related to our problem domain. In Chapter 8 we discuss the validity of our study. Chapter 9 gives a summary of the main contributions of this master’s thesis in relation to the research problem and, finally, we give suggestions for future work. CHAPTER 1. INTRODUCTION 11 Figure 1.2: A visualization of a generic hackathon’s activities (source: Tim Boelaars (Leckart, 2012)). Chapter 2 Research Method This research work conforms to a case study (Yin, 2002) approach to gain a description of the state of the practice of F-secure’s Content Anywhere (CAN for short) ecosystem. The description is presented in light of the experience of third-party developers using the platform resources offered by CAN ecosystem; the aim is also to gain insights on new requirements in that direction. The subject matter is essentially how the third-party developers perceive the platform resources of the CAN ecosystem according to their expertise and experience. In the literature part we provide an account of the research context; we collected basic and more advanced concepts and definitions found in the existing literature. Specifically concerning Third-party developer experience we relied on an expert’s opinion to find appropriate reference material. Regarding the empirical part, we essentially relied on F-secure’s developer professional opinion for the evaluation. F-secure’s internal hackathon facilitated the process. In addition, the study had an explorative nature; for this reason we deemed appropriate to use principles borrowed from grounded theory (Myers, 2008), when conducting data analysis. For example through the use of codes. 2.1 Empirical Data Collection The most consistent part of the data was collected during a three-day-long hackathon event in October 2012, in Espoo at the Aalto Design Factory1 premises. If not collected directly during the event, the data the related to the hackathon. Specifically, we conducted individual interviews with the 1 http://www.aaltodesignfactory.fi/ 12 CHAPTER 2. RESEARCH METHOD 13 F-Secure employees participating in the hackathon; mainly developers, but also members of the support team. The individual interview rounds started immediately in the week after the event and were concluded approximately within a month from the hackathon. The empirical study is, in fact, mainly concerned with the first trial of a hackathon in F-secure. The objective of this hackathon was to develop three applications using the platform boundary resources; each of the applications had a different scope and targeted different devices. For the company, this trial hackathon had the double function of creating software applications to showcase the capability of CAN as a platform, and at the same time test the platform in a more rapid and extensive way than usual testing. Additionally, there was a curiosity in F-secure about hackathons as a company practice to boost innovation. While initially the idea of a Hackathon emerged as a practice to boost innovation in F-Secure, the idea of using it to study the platform and learn from it arose later. These latter concerns resulted in starting a more rigorous study on the whole experience in the form of a case study. To this end, the hackathon had been carefully planned before its start; the planning activity included agreeing upon structure, length, focus and topics. A fundamental part of the planning and preparation activity was a lightweight pre-study (summarized in table 2.1) on how to organize successful hackathons. In this regard, we found information on blogs and on-line articles but few scientifically reported experiences (Crowston et al., 2007) (Lapp et al., 2007). In addition to this we conducted some semi-structured informal interviews aimed at collecting insights from subjects experienced with hackathons. There has been a series of hackathons open to a wide audience organized and colocated in a conference event called “Open Knowledge Festival”2 in Helsinki; in this event we observed and learned about good practices for successful hackathons. We also interviewed one of the key figure of the Aalto University’s Windows Phone community3 that is active in organizing hackathons with Aalto Entrepreneurship Society in the various “Build it”4 events they had. The article from Crowston et al. (2007) offered guidance on how to approach data collection and analysis. They provided an account on the role of face-to-face meetings occurring at periodical conferences of FLOSS. The term refers to Free/Libre Open Source Software (software developed and licensed under open source license) and the study is about the role of these 2 http://okfestival.org/ http://windowsphoneaalto.org/ 4 http://aaltoes.com/build-it/ 3 CHAPTER 2. RESEARCH METHOD Technique Interviews Documentation 14 Data Two hackathon organizers Two hackathon participants Blogs and on-line articles Table 2.1: A summary of data collection for the lightweight pre-study on how to organize successful hackathons intensive software development activities carried out at the conferences. The developers participating in FLOSS projects are typically part of distributed teams, hence these face-to-face meetings are not a usual setting. Due to the similarity of the setting and the phenomenon being observed, we took the approach the authors used in the study as a reference. 2.1.1 In the Hackathon One week before the hackathon there had been a meeting at F-secure’s premises in Helsinki. Present in the meeting were almost all the F-Secure employees that responded to the open call and volunteered to participate in the hackathon; in addition to a few product owners and members of the support team. A researcher from Aalto University participated in this preliminary meeting. The researcher used the meeting to collect information about the architecture and current status of F-secure’s CAN. Additionally, the researcher introduced himself and the research activity that was being carried out. This was done with the goal of making the F-Secure people as comfortable as possible with the research activity, enhance future collaboration, and gain their trust (Myers, 2008). This preliminary meeting had a double role. First of all, some of the fellas had the opportunity of pitching their previously prepared initial ideas for the hackathon and communicating the technologies they intended to to use. In this way the other participants could choose which team they wanted to join according to their preferences; in terms of technology. As explained when presenting hackathons activities , this phase can happen before the actual hackathon. Secondly, a product owner and other members of the support team were providing instructions to the participants. Specifically: illustrating the general architecture of CAN; some detail on the APIs; practical information on where to find documentation and register as a developer to get authentication and download the needed tools. This activity can be CHAPTER 2. RESEARCH METHOD 15 considered as a sort of “bootcamp” (Lapp et al., 2007). We need to specify that the developers that participated in the hackathon were not familiar with CAN and its APIs, they were all working on different projects within F-secure. During the hackathon our general approach, as researcher, was to observe and learn rather than disturb the participants thus hindering their work. We used lunch breaks and other common gathering moments to acquire additional information and become familiar with the participants; following the same approach as Crownstone et al. (Crowston et al., 2007). Another objective we had was to collect material to present the hackathon at F-secure internally and promote the participation to future ones; this provided us with the opportunity to collect observational data such as photos and video recordings. The data collection consisted mainly of observations, and post-hackathon interviews; In table 2.1.2 there is a summary of the data collection techniques and the type of data collected. Three people observed the hackathon for the majority of the time, one person occasionally. These observations were annotated in the researchers’ notes. We recorded video of the common sessions like the opening, morning briefings, and the closing demo session. Additionally we have informal audio recording of the discussion going on after the hackathon. This observational data is complemented with the slides of the presentation given in the common session and an on-line chat log of the discussion between the participants. This last chat log contained the communication between the participants and the support team. At least one researcher was constantly checking the chat conversation. This had a double function: constantly checking participants needs and solving practical problems (e.g. food and other practicalities); complementing the researcher’s observation notes. After all, since we did not want to disturb the participants, that was the only means to know what was happening if they were not communicating verbally and they were totally dedicated to software development. Other data was collected in the form a retrospective session; in figure 2.1 we can see the retrospective questionnaire that was given to the participants. This kind of session is a state-of-practice method in the context of agile software development, and participants were familiar with it because it is also applied in their daily work at F-secure. These retrospective session happened twice, during lunch on the second and third days. As we can see in Figure 2.1 the retrospective was a paper having three spaces for comments titled: “keep”, “drop”, and “try”. These referred to, respectively, practices that should be kept, practices that should be abandoned, and new practices that should be tried. We also stored material, such as invitations sent by CHAPTER 2. RESEARCH METHOD 16 e-mail and slides from the preparation meeting. 2.1.2 Interviews and Feedback Meeting As introduced at the beginning of this section, within the weeks following the hackathon we conducted hour-long, semi-structured interviews with 12 participants; in the meanwhile we also interviewed the two main organizers. The interviews were conducted partially in Finnish and partially in English; depending on which language F-Secure employee were most comfortable expressing themselves in. A researcher from Aalto University and a hackathon organizer from F-Secure were present throughout the interviews. A questionnaire was prepared and handed out after the hackathon to all developers and support team and sent electronically again with an interview request. The purpose was to remind developers what kinds of experiences they are expected to reflect on later in the interview. The questionnaire was filled, corrected or finalized in the interviews. This was done because the participants were probably not motivated to fill out the questionnaire directly after the hackathon. Additionally, we thought this would add reliability to the data obtained by interviews done in the weeks following the event. In the questionnaire the developers evaluated the activities that were assumed as hypothetical development activities. The developers were also asked to draw a trend of the happiness level (figure 2.2) during the three days, and at the same time, we asked what was the cause or what happened, especially in cases of changes in feelings. The interviews were semi-structured and their main points, even though planned beforehand, were shaped by the observation made during the hackathon. The interviews started with an informal talk about the participant’s role in F-secure and the kind of research we are conducting, explaining the importance of the interview for that aim. The feedback, about the importance of feeling that the effort the participant put in is being valued, emerged also regarding other aspects of the hackathon. We recorded and subsequently transcribed all the interviews. In addition, as an extra precaution, we took notes of the answers. As the interview rounds proceeded and we started analyzing the data, we tended to focus on some aspects more then others. After having coded and analyzed the data, a researcher from Aalto University gave a presentation that was summarizing and grouping the data from the hackathon around certain topics. The results of the Hackathon were discussed with the product owner and a couple of software architects that had CHAPTER 2. RESEARCH METHOD 17 Figure 2.1: The retrospective questionnaire filled by one of the participantsl. CHAPTER 2. RESEARCH METHOD 18 Figure 2.2: A graph of the happiness level as drawed by one of the participants. CHAPTER 2. RESEARCH METHOD Technique Interviews Observations Documentation Questionnaires 19 Data 9 participants, transcription, 1 hour each, semi-structured 3 support persons, transcription, 1 hour each, semi-structured Videos, photos, researcher notes, subjective experiences, skype chat log Presentation slides E-mails from organizers Satisfaction level graph Keep, drop, try table Table 2.2: A summary of data collection techniques and key data participated in the hackathon. The results constituted a basis for the following discussion on the main issues of the software platform resources, and hackathons as an industry practice. The results in terms of the hackathon as an industry practice are reported in an article (Raatikainen et al., 2013). F-secure people noted down all the issues they regarded as important on post-its during the researcher’s presentation. Specifically some issues were regarded by F-Secure’s people as minor or non-relevant details. As researchers, we did not want to take the responsibility of making a selection of the results. After that the post-its were attached to a whiteboard, grouped in clusters depending on their relation, and the clusters named accordingly. That allowed the F-secure’s people present in the meeting to give the different conceptual level to the different issues, prioritize them, and think of responsibilities for future actions. In that occasion, besides presenting our results and answering questions, we recorded the meeting and took pictures of the visual data produced. 2.2 Data Analysis The collected data was translated into a textual form (if possible). The data being analyzed comprised the transcribed interviews, the log of the chat that included participants and support team, and the observers’ notes. With the aid of Atlas.ti5 , segments of text were assigned to categories; in the software the categories are named codes. These codes are basically labels 5 http://www.atlasti.com CHAPTER 2. RESEARCH METHOD 20 that are assigned to quotations from the text. Using the codes it is possible to query the software and build network views that help visualizing related information. The codes were selected according to our initial assumptions on the developer activities, and the main factors influencing their experience. We started our analysis activity with a small set of codes. While proceeding in the data analysis the set of codes evolved. New codes were added and as we gained more understanding of the data also the meaning of the codes changed. In fact some code became a bit too generic and the introduction of more specific codes was required. The use of more than one code for a segment of text was not uncommon. In this case, a bigger segment of code had a more generic code and a smaller portion of that same segment was assigned a more specific code. It also happened that the same text segment was assigned with two codes if that part of text was bearing relevant information for both the categories the two codes represented; or one of the two codes indicated a required clarification for that category, for example “positive” or “negative”. The results from the “keep-drop-try” table where collected in a table to facilitate the feedback meeting with the hackathon organizers and highlight recurring or conflicting issues; this data was more concerned with the hackathon as a company practice. The developer’s activity questionnaire and the hand-drawn happiness level graph we gave to the developers, was filled-in, or completed, or anyways discussed during the individual interviews. Those document actually constituted an important part of the interviews. Therefore the data concerning those documents is embodied in the interviews’ transcriptions and analyzed in the same way we described above. Chapter 3 Software Ecosystems Software ecosystems, SECO (Jansen et al., 2009b) for short, are the general setting within which lies the research interest of this Master’s thesis. It is a rather new and active field of research (Hanssen and Dybå, 2012), where there are new business models, new relationships and modes of interaction between different actors that create networked communities. These networked communities are tied together by the interest in a certain technology (Hanssen and Dybå, 2012), namely a shared software platform. The software platform as a product and its services have a fundamental role in connecting the activities of clustered firms constituting an ecosystem (Baldwin and Woodard, 2008). So it is already clear how software ecosystems are characterized by an interplay of social and technological aspects (Hanssen and Dybå, 2012). This interplay and the new relations between different actors bring a change in the field of software engineering to aspects related to collaboration, shift of control and innovation (Hanssen and Dybå, 2012; Yoo et al., 2010; Ghazawneh and Henfridsson, 2012) Since it is a relatively new field of research we first decided to analyze the most relevant definitions of software ecosystems found in the literature, and we attempted to highlight the characteristics of software ecosystems from those definitions. Software ecosystems can also have different origins and thus assume different forms (Bosch, 2012), so to clarify the concept we deemed necessary to provide an account on how software ecosystems can be classified. Within this context it is also relevant to present the different roles that participants in a software ecosystem can assume (Manikas and Hansen, 2013). In analyzing software ecosystems from the existing literature we faced some challenges. In fact the concept of software ecosystems can be vague and different, and there is also a quite high variability in the use of terminology (Hanssen and Dybå, 2012); even within a certain research community. 21 CHAPTER 3. SOFTWARE ECOSYSTEMS 3.1 22 Definition of Software Ecosystems The literature review from Manikas and Hansen (Manikas and Hansen, 2013), addresses the objective of providing a shared and comprehensive definition of the term software ecosystem. The literature body comprises ninety articles, half of which did not provide a definition of the term software ecosystem. The authors explain this with the fact that, either those articles are relying on previous research to provide context and definitions or the main focus of the articles was not the general topic of SECOs. Within those articles defining the term, only a few articles provide their own definition of the term; in two of these few articles own definitions coexist with another definition from the literature (Manikas and Hansen, 2013). The remaining articles used one or more definitions from previous research works. Four definitions in particular are the most quoted. The oldest definition of SECO found in the literature (Manikas and Hansen, 2013) is from a book by Messerschmitt and Szyperski published in 2005. However, this definition was excluded from Manikas and Hansen’s analysis. The rationale behind this is that, despite the fact that the definition is concerned with software and relationships between parts, it has exclusively a technical focus. Whereas the ones that are discussed further in this thesis present a wider perspective (Manikas and Hansen, 2013); Moreover, counted together these definitions are cited by the majority (65%) of the papers providing a definition (Manikas and Hansen, 2013). The first of these definitions is from Jansen et al. (2009b): “We define a software ecosystem as a set of businesses functioning as a unit and interacting with a shared market for software and services, together with the relationships among them. These relationships are frequently underpinned by a common technological platform or market and operate through the exchange of information, resources and artifacts” (Jansen et al., 2009b). This definition presents a list of key elements. Relationships appear to be a central concept and, in this regard, the exchange of information, resources and artifacts is a means through which different actors (businesses in the definition) relate to each other. The common software platform or market place assume the role of important enabler but are not presented essential. The definitions that can be regarded as having a wider-perspective are by Bosch (2009), and Bosch and Bosch-Sijtsema (2010b,a): “A software ecosystem consists of the set of software solutions that enable, support and automate the activities and transactions CHAPTER 3. SOFTWARE ECOSYSTEMS 23 by the actors in the associated social or business ecosystem and the organizations that provide these solutions” (Bosch, 2009). “A software ecosystem consists of a software platform, a set of internal and external developers and a community of domain experts in service to a community of users that compose relevant solution elements to satisfy their needs” (Bosch and Bosch-Sijtsema, 2010b,a). The first of these two definitions presents a software ecosystem as a part of a bigger picture that comprises also a social and business ecosystem. The software ecosystem with its solution is described as the foundation upon which the related social or business ecosystem can thrive. The second definition provides a view where the software ecosystem comprises all the other elements; these elements are the different actors together with their relationships and the software platform, which is regarded a fundamental element. The definitions presented above share three common points: a common software, relationships between actors, and a business element. The business element is not to be intended only as direct revenues or profit, but generally as various benefits the different actors can get from the participation in a SECO (Manikas and Hansen, 2013). Concerning relationships it appears that a symbiosis aspect is common to all the listed definitions (Manikas and Hansen, 2013); perhaps the use of the word ecosystem itself implies that. The wording “symbiotic relationship”, though, was explicitly used only by Messerschmitt and Szyperski in their book; however, as explained before, Messerschmitt and Szyperski had an exclusively technical point of view. Besides these commonalities we can notice also differences. For example, the software platform has a more fundamental role in the last definition (Bosch and Bosch-Sijtsema, 2010b,a) than in the others (Jansen et al., 2009b; Bosch, 2009). Also, different aspects of the relationships are highlighted in each definition: In the first definition Bosch describes the relationships as part of a social or business ecosystem (Bosch, 2009); the definition from Bosch et al. refers to communities (Bosch and Bosch-Sijtsema, 2010b) (Bosch and Bosch-Sijtsema, 2010a); and Jansen et al. explain that SECOs work exchanging “information, resources and artifacts” (Jansen et al., 2009b). Based on the analyisis of the previous definitions Manikas and Hansen suggest their own definition. SECOs are described as interactions between different actors that share a technological platform and produce solutions and services (Manikas and Hansen, 2013). The authors also add that different actors have different motivations, different business models and have a symbiotic relationship with each other. The symbiotic relationship exists also CHAPTER 3. SOFTWARE ECOSYSTEMS 24 between the actors and the ecosystem as whole (Manikas and Hansen, 2013); meaning that, actors benefit from participating in a thriving ecosystem and the success of the ecosystem is determined by the actors’ activity. To conclude, the different definitions of a SECO and descriptions of its comprising elements share some key aspects. However, we can observe that there is no agreed definition of SECOs. The presence of many definitions, and their relative differences, can be explained by the fact that SECOs are a quite new area of research. It is also true that, different researchers and research communities focus their interests in different specific aspects of software ecosystems (Manikas and Hansen, 2013; Hanssen and Dybå, 2012). For example, from the software architecture community and the information systems community to the economics and management strategy community or sociology of organizations community. Such a fragmented situation can also be explained by the fact that definitions usually have a functional purpose, specific to what the researchers are interested in (Shadish et al., 1963). When providing definitions, scientists are concerned with the prototypical features of the particular instances. In making a decision on which features are prototypical and which are peripheral, scientists choose the one that are more crucial for understanding a certain phenomenon. 3.2 Software platforms in SECOs From the analysis of SECO definitions, it emerged the fundamental role of what is commonly referred to as technological platform (Jansen et al., 2012; Manikas and Hansen, 2013) or software platform (Kilamo et al., 2012; Bosch and Bosch-Sijtsema, 2010a); depending on the author. Other authors use the term central software technology (Hanssen and Dybå, 2012), others digital product platform (Yoo et al., 2010). We prefer the term software platform (See Table 3.2). Within the topic of SECOs, the focus of this master’s thesis is on software platforms. In fact, at the center of our case study there is a particular software platform from F-secure. Manikas and Hansen explain that the software platform should be designed in such a fashion that enables all the actors to be involved and contribute (Manikas and Hansen, 2013). This means that the software platform needs to give the different actors the possibility to benefit from the ecosystem, where benefit does not only mean direct financial revenue; it can be understood as the possibility to market the applications or the possibility to achieve fame or gain knowledge, depending on the type of SECO. CHAPTER 3. SOFTWARE ECOSYSTEMS Term Software platform Technological platform Central software technology Digital product platform 25 Authors Jansen et al. (2012); Manikas and Hansen (2013) Kilamo et al. (2012); Bosch and Bosch-Sijtsema (2010a) Hanssen and Dybå (2012) Yoo et al. (2010) Table 3.1: A table indicating the different terms that are to express what we refer to as software platform in a SECO within this master’s thesis. In that same direction it is also stated, citing Alspaugh et al. from 2009, that the fundamental propriety of the technological platform is to be extensible beyond the organization that owns the platform (Hanssen, 2012). The software platform is one of the two elements that constitute the value shared by the different participant in the ecosystem; the other being the business context supported by the platform (Hanssen, 2012). Among the articles in Manikas and Hansen’s literature body, Hanssen’s article explicitly mentions application programming interface (API) and software development kit (SDK) when talking about ways in which to achieve extensibility. Manikas and Hansen (Manikas and Hansen, 2013) do not mention directly APIs and SDKs, even though Hansen’s article is included in their literature body. Although in our opinion APIs and SDKs could fit, at a general level, under the description of what “...allows the involvement and contribution of the different actors.” (Manikas and Hansen, 2013). However, it cannot be neglected that, when Manikas and Hansen explain further, it becomes clear that they interpret the possibility of contributing in the ecosystem differently. They interpret the possibility to contribute as providing applications developers with a delivery channel to reach end-users; like Apple Inc.’s “App store” (Manikas and Hansen, 2013). They do not mention directly any resource that would allow contribution by effectively giving the possibility to application developers to interact with the software platform; like APIs and SDKs. To sum up, APIs and SDKs and a digital market place are part of the resources the software platform provides (Ghazawneh and Henfridsson, 2010) to third party developers. These platform resources are fundamental when describing the software platform and in general when discussing SECOs. As an example, Ghazawneh’s doctoral thesis (Ghazawneh, 2012) concerns the central role of what he calls “platform boundary resources” in third- CHAPTER 3. SOFTWARE ECOSYSTEMS 26 party development for what he calls “platform ecosystems”. In his research work these resources are seen as the means through which the third-parties interact with the platform owner and vice-versa. The topic is covered more extensively in the next chapter. 3.3 A Theory of Software Ecosystems Towards the end of the previous Section, we introduced Hanssen’s view on the software platform around which a software ecosystem exists. Hannsen’s views are already condensed in a clearly framed theory of software ecosystems (Hanssen, 2012; Hanssen and Dybå, 2012). The author proposes a theory that aims at providing a generalization of SECOs and at being a reference for future empirical studies on the topic; given that the existing literature does not have a sufficient theoretical background (Hanssen, 2012). In order to achieve these objectives, Hansen’s theory of SECO is based upon the theory of “Organizational Ecology”. This theory can be found in the work of Emery and Trist (1965) and of Trist (1977), which is actually the natural evolution of the “Socio-Technical Theory” found in the work of Trist and Bamforth in 1951. The fundamental principle of the socio-technical theory is that organizations are composed of two mutually dependent parts: on one side there are people, their interactions and their knowledge; on the other side tools and techniques (Hanssen, 2012). This principle then reflects on the fact that any attempt to make a change, possibly an improvement, needs to consider both parts together. The theory evolved to have a more external focus and to be concerned with the relation between the organization and its external environment, evidencing the existing interdependency. Besides, of course the previously discussed interdependency between the social and technical part within the organization. The organizational environment is seen as an ecosystem (Hanssen, 2012); this implies that the environment is seen as an open system, the borders of the organizations are permeable and organizations have dynamic relations between each other. Hanssen presents three classes of organizational environments. In the Class 1 environments, called keystone-centric, the organizations in the environment or ecosystem refer to a central organization. However this key player has only partial control over the other organizations: this kind of relation is not a superior-subordinate relation as in hierarchical organizations, but it is defined as “interface relation” Hanssen (2012). As Cusumano puts it “The company that leads exerts control not over others’ specific choices but over the premises of choice. We call this ecological control, and presupposes CHAPTER 3. SOFTWARE ECOSYSTEMS 27 some degree of consensus, because leadership is possible only when others agree to follow” (Cusumano and Gawer, 2002). On the other hand in Class 2 environments, the central (or key) organization is created and controlled by the organizations in the system. Class 3 environments present no central organization. Hanssen reports that Trists describes these ecologically oriented systems as “lacking a formal structure” (Hanssen, 2012), “exist[ing] through the use of technology” (Hanssen, 2012)’ and based on shared values. Regarding this last characteristic Hanssen states that Trist makes a parallel with the youth culture of the 60’s having a clear set of political values but not a formal organization. A more business oriented parallel can be made with growth and profit being the shared values (Hanssen, 2012). The particular challenge is that organizational ecosystems are difficult to recognize, understand and describe due to their weak structuring; this is more difficult to achieve than for example smaller-scale systems like single organizations or larger-scale systems like societies (Hanssen, 2012). Software ecosystems belong to the intermediate level category; organizational ecosystems. Therefore software ecosystems can be described with the aid of Trist’s theory of organizational ecology, being this theory concerned with “...organizations operating in complex and unstable domains.” (Hanssen, 2012). Consequently, based on Trist’s organizational ecology, Hassen (Hanssen, 2012; Hanssen and Dybå, 2012) lists theoretical propositions regarding SECOs. Before presenting this theory, we have to report that the author is concerned with a particular type of organizational environment. Hanssen’s case study is concerned with a Class 1 organizational environment, according to Trist’s classification; named keystone-centric software ecosystem (Hanssen, 2012). The setting of the case study is a software company that has recently decided to open up its successful product line, and adopt a software ecosystem strategy. For the objectives and concerns of this master’s thesis this is satisfactory. However, it seems legit to argue whether this theory, and the characteristics of SECOs it lists, holds if applied to other kinds of software ecosystems. Further information on taxonomy regarding software ecosystems can be found in the following section. The theoretical propositions are: 1. The organizations in a software ecosystem refer to a central organization, and are linked to it by interface relations. As in the study presented by Hanssen, the study setting is such an organization, and according to Trist’s classification it belongs to Class 1. The central organization does not control the other organizations CHAPTER 3. SOFTWARE ECOSYSTEMS 28 but it controls the software platform which affects all the activities in the ecosystem. 2. “Software ecosystems promote self regulation” (Hanssen, 2012). In the specific case study it is noticed how the development of the software platform, previously a product line controlled in a centralized way, is now a collaborative approach where the central organization adapted to its central environment and vice versa. This can be seen as self-regulatory behavior. 3. “Software ecosystems have a networked character” (Hanssen, 2012). In this case study the network consists of customers and third party organizations. Also competitors might be considered part of the network, though the author acknowledges it is only an insight. 4. “Software ecosystems exist through the use of information and communication technology ” (Hanssen and Dybå, 2012). Technology concerns not only the software platform that constitutes the foundation of the software ecosystem, but also the of tools that enable collaboration among different actors. 5. The participants in a software ecosystem share values (Hanssen, 2012). In the specific case study the value is the software platform. This value translates into licensing and services for the keystone organization, the customer benefits for improved business operations while third-parties sell solutions on top of the product line that has become a software platform. The shared value provides the motivation to contribute in the software platform. After these initial five points Hanssens’s article (Hanssen, 2012) presents also: 1. “The shared value of a software ecosystem is both the software product and the business domain” (Hanssen, 2012). In this study Hanssen observes how the keystone organization is interested in the business served by the product line, besides obviously the product line. In the same way the customers become interested in the technology driving their business. This is a result of the proximity with the external environment and the increased permeability of the organization borders. CHAPTER 3. SOFTWARE ECOSYSTEMS 29 2. Software development is a shared responsibility between the keystone organization and the external actors. There is a shift of control toward third-parties and customers. This happens because the product line’s, now software platform, processes are opened to external actors, together with the visibility of plans and strategies. These are other motivators for collaboration and affect positively all the actors of the ecosystem. 3.4 Taxonomy of Software Ecosystems As we just pointed out, Hanssen’s theoretical framework bases its evidence on a keystone-centric software ecosystem. That is precisely what this master’s thesis is concerned with. However there are other possible typologies of SECOs. There are various ways in which to classify the different ecosystems. In this section we present three taxonomies we found in the literature. The first one presents a two dimensional taxonomy of software ecosystems (figure 3.1). The first dimension determines the abstraction level the ecosystem operates at, while the second dimension indicates the computing platform, and also the degree of evolution of the industry the ecosystem belongs to (Bosch, 2009). The dimension named “category” (Bosch, 2009)includes the operating systems, application, and end-user programming levels; while the three considered platform types are: desktop, web and mobile. The author of this taxonomy tries to put a stress on the fact that although SECOs have recently attracted increasing attention in the mobile and web 2.0 context, other types of software ecosystems already existed around desktop operating systems; Even videogame consoles are a valid example of SECOs. The same author provides also another categorization, this time based on the different examples provided by the articles in the special issue of the Journal of System and Software (Vol. 85) he introduces. As illustrated in figure 3.2, the examples range from ecosystems created around a product line opened-up for third-party development, to open-source platforms around which raises a community of actors having different classes of roles (Bosch, 2012). Bosch (Bosch, 2012) introduces the degree of freedom and control as an additional dimension for distinguishing software ecosystems. In this sense different ecosystems have different ways in which the platform and third-party development is driven. The last taxonomy stems from our understanding of Trist’s theory on organizational environments, as it is presented in Hanssen’s paper (Hanssen, 2012). Dividing the different SECOs into classes, we list: CHAPTER 3. SOFTWARE ECOSYSTEMS 30 Figure 3.1: The Figure illustrates a way of organizing SECOs in terms of category and platform domain. Source: Bosch (2009) Figure 3.2: The Figure is visualization of a two-dimensional space where a SECO could be placed according to its characteristics. The visualization is based upon Bosch (2012)’s description CHAPTER 3. SOFTWARE ECOSYSTEMS 31 • Class 1: is denominated Keystone-centric software ecosystem. There is a keystone organization that controls the software platform and the other organizations are linked to it by interface relations. To this class belong the almost all the famous commercial SECOs (eg. Android ecosystem, Apple ecosystem, Windows phone etc..). Many other companies are undergoing a transformation process, like the company studied in the longitudinal case study by Hansen (Hanssen, 2012). This transformation process typically happens in a way that a successful software product line is opened up, in the simplest way, providing APIs in order to pursue a SECO strategy. • Class 2: This class of SECO has a central organization that the other organizations refer to, however the central organization is “brought in to being by the member organizations rather than being one of the key constituents” (Hanssen, 2012). As an example that could fit in this category we could bring the SECO existing around the Eclipse foundation (Jansen et al., 2012). The Eclipse project is a collection of tools to support software developers in building software (libraries, compilers, IDE etc.), its first version was released as open source in 2001 by IBM, in the same year nine companies created a consortium that now is an ecosystem with tens of thousands of developers, strategic members and other categories of members such as enterprise and associate members. The foundation is non-profit and member-supported, and it has the function of providing governance services. Differently from opensource communities the Eclipse foundation has more or less the organizational structure of a company. Addtionally, developers need to go through a specific legal process when committing code (Manikas and Hansen, 2013). • Class 3: This class of ecosystem does not have a referent organization; it has its own particular structure. An example of this class of ecosystems can be the open source communities existing around the many distributions of the Linux operating system; for example the community around the Debian distribution of Linux. As a basis of these ecosystems there is a platform constituted by Free/libre/open Source Software (FLOSS) (Kilamo et al., 2012). Such open source communities are structured in a so called “Onion Model” (figure 3.3), where the members are layered according to the level of participation in the development and the level of influence they have on the project. In the middle of the onion there is the project leader and at the external layer we find the passive users. In addition to that Kilamo et al. specify that CHAPTER 3. SOFTWARE ECOSYSTEMS 32 Figure 3.3: The Onion Model for open source communities. Source: Kilamo et al. (2012). this onion model does not depict the entire ecosystem, but there are also industrial partners and other interest groups that are not present in this model. 3.5 Roles in Software Ecosystems Relations are a fundamental part in the description of SECOs, going back to the definitions presented at the beginning of the chapter, it is possible to observe how already in the first part of his definition Jansen emphasizes the importance of the relationships among the different actors in a SECO (Jansen et al., 2009b). In their literature review Manikas and Hansen remark upon the importance of the social aspect within SECOs, stating that the interactions between the different actors have an impact on the software architecture [21]. In fact, different concerns from proprietary platforms need to be taken into account: management processes; business models and IPR issues getting more complicated; the evolution of the system being a lot faster and potentially taking different directions. For example the definition by Bosh and Bosh-Sijtsema individuate three central roles: the software platform organization with his internal developers, the external developers and experts providing services and finally the community of users. Also Hanssen in his article individuates the same three types of roles, though using a slightly different terminology. Hanssen presents a list that includes first, what he refers to as the “keystone organization”; CHAPTER 3. SOFTWARE ECOSYSTEMS 33 this organization is the one responsible for the development and governance of the software platform (Hanssen, 2012). Regarding the keystone organization, Jansen makes an interesting parallel: borrowing the concept from biology, the keystone player is a species that plays a fundamental for the ecosystems health “without being a significant position of the ecosystem itself” (Jansen et al., 2009a); like for example the jaguar, whose hunting keeps the mammalian number in balance in the jungle ecosystem. The second role is the end-user of the software platform (and additional services) that need it for whatever task they need to accomplish; In the context of SECOs endusers have an active role and a selective approach (i.e. they are not passive consumers), as reported in Bosch’s and Bosch-Sijtsema’s definition “...compose...solutions...to satisfy their needs” (Bosch and Bosch-Sijtsema, 2010b) (Bosch and Bosch-Sijtsema, 2010a). The third role is played by the “thirdparty developers” that can belong to so called third-party organizations and use the resources offered by the software platform to produce additional solutions and services. These three roles that were just presented constitute the basic set. However other roles are suggested to be considered in the context of SECOs. For instance Hansen lists also competitors (i.e. competing SECOs), standardization organizations, resellers and telecom operators (Hanssen, 2012). These last ones are particularly relevant to the SECO under examination in this Mmster’s thesis, but are left out of the scope of this work. Yet another perspective is offered by Jansen et. al (Jansen et al., 2009b), according to whom at a “software vendor level” (Jansen et al., 2009b) actors are linked to each other forming a “software supply network (SSN)” (Jansen et al., 2009b) and categorized into: end-users, suppliers, and resellers. Manikas and Hanssen refer to those roles as, respectively: customers, producers and integrators using the terminology from Sacchi and Alspaugh (Scacchi and Alspaugh, 2012). Manikas and Hanssen in their review (Manikas and Hansen, 2013) collect and compare the different roles mentioned in the different articles constituting the literature body. These roles are grouped according to similarity, being that the different authors of the reviewed articles have used different denomination for the same function within SECO. Manikas and Hanssen provide a list that is summarized in the table 3.5. The Table presents the roles listed in the literature review (Manikas and Hansen, 2013), the ones we selected in the context of this master’s thesis, and a brief description of the roles. The table includes also the roles that we decided not to consider in this Master’s thesis. Additionally, we do not consider it interesting to map the roles and the articles they have been found in. We simply want to highlight that depending on the article a subset of this role is used; in fact the roles CHAPTER 3. SOFTWARE ECOSYSTEMS 34 presented in an article depend much on which is the research focus and what is the study setting (i.e. which kind of SECO). For example software ecosystems existing around open source communities have different roles and organization, as can be noticed the briefly introduced onion model in figure 3.3. In a simplified view of the topic, considering SECO as two-sided markets (Cusumano and Gawer, 2002), we have one side the end-users and on the other side the third-party developers that develop and market (depending on the type of ecosystem) solution for them. the relationship between endusers and third-party developers is somehow supervised and controlled by the keystone organization, being such a relation mediated by the software platform. Also the relation between the keystone organization and the thirdparty developers is mediated by the software platform; specifically by the platform’s resources that effectively allow the third-parties to develop additional solutions on top of the software platform. As it can be deduced by the introduction Chapter, this Master’s thesis focuses on the relation between the keystone organization and the third-party developers. CHAPTER 3. SOFTWARE ECOSYSTEMS 35 In this master’s thesis Keystone (organization, player) Literature Review Description Company or unit or department of an organization responsible for the development and governance of the software platform. - Orchestrator, keystone (player, organization), hub, shaper, management (unit) and platform owner Niche player, influencer or component developer/ builder/ team The actor that complements the role of the keystone player by developing additional functionalities to the software platform. It does not belong to the three basic roles presented in the beginning of this section. For simplicity, be assimilated with the keystone (player, organization). External actor, exter- The actor (can belong to thirdnal developer (team), party organizations) that uses third party developers, the resources offered by the softexternal parties/ part- ware platform to produce soluner/ entities, partici- tion and services upon it. pant Vendor, indepen- Company or business unit sells dent software vendor products to the end users of the (ISV), reseller or SECO. It does not belong to value-added reseller the three basic roles presented (VAR) in the beginning of this section. This software vendors can be assimilated to third-party organizations, and we regard them as the entities concerned with business models and IPR issues. They are scoped out of this Master’s thesis. Customer, end user Person or Entity that composes solutions for itself on top of the software platform. Third-party developer - End-user Table 3.2: Summary of the roles actors can assume in SECOs. In the first column there are terms used in this master’s thesis, in the second the different terms found in the literature review (Manikas and Hansen, 2013) Chapter 4 Third-Party Development in SECOs When companies, starting from a software platform, decide to enact a software ecosystem strategy and become platform leaders, they face business and technological challenges (Gawer and Cusumano, 2008). As remarked when defining the scope of this thesis, our focus is on technological challenges within a keystone-centric software ecosystem. The key technological challenge is designing the proper architecture for the software platform so that it enables third-parties to provide complementary assets(Gawer and Cusumano, 2008); ultimately, this is achieved by designing interfaces and connectors for complementary software applications. Keystone players have the role of industry enablers, they have to sacrifice some interests and invest in helping others innovate on the platform for a common good (Cusumano and Gawer, 2002). This means investing in many different ways to facilitate third-party development. After all, as we said in the previous chapter, there is a symbiotic relationship between the actors of a SECO and the SECO itself, a thriving ecosystem offers potential benefits to all; given that one is able to harness them. 4.1 Software Platforms There are many kinds of platforms, as we mentioned when discussing the background, from the industrial economics point of view they are generally seen as two-sided markets. Different platforms have different characteristics and different business contexts. Ghazawneh (2012) discusses the categorization offered by Gawer: “Internal Platforms” are found within product development inside a company, and consumer electronics offers various examples; 36 CHAPTER 4. THIRD-PARTY DEVELOPMENT IN SECOS 37 “supply chain platforms” expand the previous concept involving partners along the supply chain; finally, “industry platforms” or “external platform” serve as a base for other companies to build complementary assets in the form of services or technologies, and these assets are not part of the supply chain. Often industry platforms are found in the context of software development (Cusumano and Gawer, 2002; Ghazawneh, 2012). In general, platforms have modular architectures to achieve reuse and variety (Baldwin and Woodard, 2008). Meaning that the core has low variety, whereas the complementary components have high variety; conversely, the complements have low reusability while the core has high reusability. Among the advantages of using platforms there are: the realization of an economy of scale(Ghazawneh, 2012); addressing the different needs of an heterogeneous customer base, as we already described in the introduction to this master’s thesis. 4.1.1 Software Platforms Architecture Software systems, often have modular architectures. In modular architectures the different modules interact together through interfaces (Messerschmitt and Szyperski, 2003). Basically, these interfaces provide instructions to the other modules about how to use a specific module. Strictly speaking, the interfaces specify a series of actions; these actions expect some precise parameters as input and return some precisely formatted data as output once the action is invoked. Protocols are collections of actions (Messerschmitt and Szyperski, 2003) and accomplish more complex functionalities. Digital technology is also characterized by a layered architecture, and the most immediate example is the Internet (Yoo et al., 2010). Following an illustration provided by Yoo et.al (Yoo et al., 2010) based on the work of Benkler, and Farrell and Wiser we can individuate four main layers. These layers are, from the bottom, a device layer, a network layer, a service layer and, at the top of the stack, a content layer. These layers appear to be a simplified and more conceptual version of the open system interconnection model (OSI, ISO/IEC 7498-1). Anyhow, the underpinning idea is that those layers belong to different design hierarchies(Yoo et al., 2010). Thus, within a layer “...design decisions for components...can be made with minimum consideration of the other layers”(Yoo et al., 2010). A “...layered modular architecture is a hybrid between a modular architecture and a layered architecture...” (Yoo et al., 2010). A layered modular architecture is not tightly bound to the product(Yoo et al., 2010); thus in designing components only little product-specific knowledge is required, differently from a modular architecture. Layered modular architectures are CHAPTER 4. THIRD-PARTY DEVELOPMENT IN SECOS 38 defined as being product agnostic (Yoo et al., 2010). Layered modular architectures are typical in the case of the software platform within SECOs since they enable third party development. 4.1.2 Platform Boundary Resources and Third-party Development In the previous subsections we introduced interfaces as a means to glue together the modules in a modular architecture. Interfaces are also useful for developers that want to build additional modules, so they can for example invoke action on some third-party module and just use the results. Potentially, invoking an action could generate a chain of many calls, having the first invoke the second, and so on. This is called encapsulation (Messerschmitt and Szyperski, 2003). Through encapsulation two objectives are achieved. First, developers don’t need to know lower level details and their job is simplified. Second, the implementation details are not exposed, which is good for security concerns. Interfaces are regarded as open when they are: “available, well documented, and unencumbered by intellectual property restrictions” (Messerschmitt and Szyperski, 2003). There are different degrees of openness, depending on the type of licensing. More specifically, we use the term Application programming interface (API) when an open interface is extensible with other modules even after deployment (Messerschmitt and Szyperski, 2003). What has been just described for a modular architecture holds also for a layered modular architecture. Nevertheless there are some peculiar characteristics. Google Maps is offered as an example to illustrate the previously described characteristics of modular layer architecture (Yoo et al., 2010). Google Maps can be used as a standalone product giving contents, in the form of maps, and services, in the form of search, directions and commercial information. However, it also offers interfaces at the different service layers, so that Google maps services can be integrated with other software applications, developed by third-parties and/or internal developrs, hosted on various kinds of devices (Yoo et al., 2010). In the same way, Facebook can be used as an on-line social networking application (Kaplan and Haenlein, 2010) with all its related functionalities. At the same time, third-party developers can create applications hosted within Facebook’s web application or access Facebook’s services through external applications functioning on different devices. This particular nature of layered modular architecture makes the design of components different. The design process is an orchestration of components CHAPTER 4. THIRD-PARTY DEVELOPMENT IN SECOS 39 from different layers, thus belonging to different design hierarchies (Yoo et al., 2010). In this contexts, the designers of the components cannot completely predict how the component will be used (Yoo et al., 2010). So Facebook’s and Google’s designer cannot fully predict which kind of new software application can be created and in which new ways these applications can make use of the different components. Here lays the generativity: “a technology’s overall capacity to produce unprompted change driven by a large, varied, and uncoordinated audience” (Zittrain, 2006); thanks to which innovations can spring at any layer. In both the Facebook and Google examples, the extensibility beyond the standalone product is, ultimately, technically possible because of the APIs. The extensibility of the software platform in SECOs was already discussed in the previous chapter, but the APIs were not further described. As explained in the beginning of this Section, APIs are a particular kind of interface (Messerschmitt and Szyperski, 2003). Specifically APIs are composed of public classes, their methods and interfaces, often packaged in software libraries and provided with the related documentation (De Souza et al., 2004). The API itself is an interface and it is public, while its implementation is a specification of how to interact with a software component and is private (unless the source code it is available, like in FLOSS); in many cases the software component is part of a platform. The public interface is used by the API consumer (De Souza et al., 2004), that is the third-party developer in the context of SECOs. The implementation is developed published by the API producer, that is the key-stone player in the context of SECO. On an abstract level we can say that that an API is an interface between two worlds (De Souza et al., 2004). An important feature of APIs is stability. In fact the first role that De Souza et al. (2004) assign to the APIs is the role of a contract between the API producer and the consumer. Meaning that there is a trust-based relation between the API producer and consumer (Ghazawneh, 2012): The producer describes the functionalities of the API and ensures that the API works as promised; in that way the consumer trusts the producers and creates applications based on that functionality. In this way both parties can work asynchronously and minimize coordination efforts. The basic principle behind this, is that the API consumer’s code relies on the producer’s code and expects that code to not change often (De Souza et al., 2004); or at least that the changes don’t affect much the consumer’s code. This is what stability means and what is expected by the API producer. Conversely the API consumer has to find the right ways to interact with different software components (Ghazawneh, 2012). The second role is the organizational boundary (De Souza et al., 2004). CHAPTER 4. THIRD-PARTY DEVELOPMENT IN SECOS 40 An API is designed to provide access to a particular software component, so it is conceptually at the external boundary of that component. If the software component is part of a software platform then the API also defines one of the external boundaries of the platform. As a boundary, the API, allows to whom controls the platform, namely keystone player in a SECO, to define the limits of what the API consumers, need to know and can do. 4.2 Platform Boundary Resources APIs have been mentioned since the Introduction chapter. They were mentioned when talking about the resources of a software platform that are necessary to harness the benefits deriving from attracting third-party development and create a SECO. The benefits are the potential for generativity derived by heterogeneous actors creating heterogeneous and unexpected components (Yoo et al., 2010) that, ultimately, spark positive cross-side network effects. APIs, though, are not the only resources that are provided to thirdparties. According to Ghazawneh (Ghazawneh, 2012) those resources are referred to as platform boundary resources and organized in two classes: Technical boundary resources. In order to enable third-party developers to build complementary software applications on top of software platforms, keystone players provide software development kits(SDKs). The most streamlined version of an SDK can be constituted by a series of APIs and related documentation. In other cases third-party developers can be provided with fully integrated development environments (IDE) like Visual Studio1 for the different software platforms offered by Microsoft Corporation2 or extensions for already existing IDE, like Android extensions for Eclipse3 . Someone might indicate with the term SDK, the whole package of resources that is given to third-party developers; what we actually describe as platform boundary resources. We see the SDK as the resources given to the third parties that provide technical feasibility to the development of complementary application. Social boundary resources. Proprieties that make software successful are often a result of understanding the needs of the end-users, and realizing in an “...efficient, natural and even enjoyable way.” (Messerschmitt and Szyperski, 2003). In fact, creating good software requires “...strong 1 http://www.microsoft.com/visualstudio/eng http://www.microsoft.com/ 3 http://developer.android.com/tools/sdk/eclipse-adt.html 2 CHAPTER 4. THIRD-PARTY DEVELOPMENT IN SECOS 41 connection with all the stakeholders...not only users but managers, administrators ...and others” (Messerschmitt and Szyperski, 2003); So “creating software is ultimately a highly social activity”(Messerschmitt and Szyperski, 2003). We already mentioned that, one of the purposes of the platform resources is to minimize the coordination effort needed for the collaboration between the third-parties, that develop complementary applications, and the keystone player. So, since the platform resources need to be an interface between these two worlds, a particular set of platform resources are meant to transfer the knowledge of these social aspects of creating software. These resources include incentives, intellectual propriety rights (IPR), platform guidelines and documentation (Ghazawneh, 2012). Technical documentation about the APIs maybe considered part of the APIs itself. In our opinion Social boundary resources also include: All the training material that the keystone player may produce to facilitate and speed up the learning process of the third-party developers; particular events that may be organized to promote a particular SECOs among third-party developers and closer contact and support is offered by the keystone player; or other means of interactions like online community forums. At the beginning of this section we listed the purpose; now we want to present some ideas behind the use of platform boundary resources. The generativity within a SECO is enabled by its layered modular architecture. However, the generativity to be completely accomplished needs a new organizational logic, given that heterogeneous actors have their own innovation strategies (Yoo et al., 2010). According to Yoo et al. (Yoo et al., 2010) this new organizing logic is doubly distributed. In the first place, it is distributed because “...the primary source of value creation is the generativity that comes from the unbounded mix-and-match capabilities of heterogeneous resources across layers” (Yoo et al., 2010). Secondly, it is doubly distributed because control (Hanssen, 2012) and knowledge (Ghazawneh, 2012) are distributed and span beyond the borders of a single organization (Yoo et al., 2010); because organizations are more permeable (Hanssen, 2012). As already mentioned in the Motivation Section, the keystone player faces a compromise. In order to harness the benefits deriving from such a doubly distributed organization logic, the keystone player shifts design capabilities to the third-parties, but this also means shifting part of the control (Hanssen, 2012) and sharing knowledge with the third parties. This generates a constant tension in the relationship between the keystone player and the third parties(Bosch, 2009; Ghazawneh, 2012). These dynamics do not happen exclusively around software platforms CHAPTER 4. THIRD-PARTY DEVELOPMENT IN SECOS 42 within SECOs. For example Von Hippel and Katz (von Hippel and Katz, 2002) brings examples within product development ranging from semiconductor manufacturers offering custom chip development to a food company offering a Mexican sauce. In those cases the companies decided to shift design capabilities to the end-users through design toolkits, ranging from computer aided design (CAD) software to a set of ready-to-use ingredients, so that the end-users can develop custom products. The idea behind it is that this spares the manufacturer from understanding the user needs in detail. At a conceptual level these toolkits resemble the platform boundary resources described in this section. Given that in any context is fundamental to understanding customers’ needs. In the case of SECOs, as we see it, the keystone player delegates the understanding of specific needs of heterogeneous end-users to heterogeneous third-party developers. So we can make a parallel between toolkits and platform boundary resources; meaning that at a general level what holds for toolkits can hold for platform boundary resources. As we expressed before for platform boundary resources, toolkits are interfaces between two worlds and a basic function is to share knowledge across these two worlds. In the case of product development, the manufacturer holds information related to the solution potential and production process while the users have needs and context related knowledge (von Hippel and Katz, 2002). In the case of software ecosystems, the situation is a bit more complicated because we have an additional category of player. Nevertheless, we can say that it is more probable that heterogeneous software developers are at least closer to, and thus can understand better, heterogeneous end-users than the keystone player. Meaning that a particular third-party developer or organization is closer to a certain segment of end-users than the keystone player can ever be to all the end-user segments. To sum up, we can say that in the context of SECOs platform boundary resources as a whole have the following roles: They ensure technical feasibility of developing additional applications on top a software platform; they can facilitate third-party developers in the software development processes; they minimize the effort for coordination between the processes of the keystone player and the third-party developers 4.3 Boundary Objects in Design Previously, we expressed the conceptual similarity of Toolkits in product development and platform boundary resources in SECOs. Additionally these two objects could be abstracted to a higher level concept. As Ghazawneh (Ghazawneh, 2012) suggested, the resources exposed by a software platform CHAPTER 4. THIRD-PARTY DEVELOPMENT IN SECOS 43 in the context of a SECO can be seen as boundary objects, and consequentially can be referred to as platform boundary resources. According to Ghazawneh (Ghazawneh, 2012) understanding boundary objects provides a theoretical basis to understand the role of platform boundary resources in SECOs. The understanding starts from the theoretical propositions on SECOs (Hanssen and Dybå, 2012), from which we know that software development is a shared responsibility between the keystone player and the third-party developers. A boundary object is defined as an artifact or object with enough structure to support activities within separate social worlds, and enough elasticity to cut across multiple social worlds(Bergman and Mark, 2007) In a more compact form, boundary objects (Bergman and Mark, 2007): • Are present in several social worlds, • Are compliant with the institutional requirements of each social world, • Are weakly structured in common use, • Are strongly structured in local use. Boundary objects and their proprieties have been studied as different kind of artifacts from museums to engineering drawings to medical patient records (Bergman and Mark, 2007). Boundary objects have been studied in relation to how they coordinate activities across social worlds: For example configuration management systems to maintain the flow in software development (Bergman and Mark, 2007); in the case of design artifacts, they have been studied as design boundary objects(DBO). More specifically, if thought of as DBO, boundary objects assume the role of bridging the gaps in design knowledge and agreements (Bergman and Mark, 2007). Meaning that, these design boundary objects are artifacts that transfer knowledge about a particular designed system across two worlds, and also align the interests of the different stakeholders present in those social worlds (Bergman and Mark, 2007). There are four important features of design boundary objects (Bergman and Mark, 2007). First, they promote shared representation: functional representations like data, architectures, prototypes and specification; also political representations like agreements and contracts. Second, placing a design boundary object between a provider and a recipient mobilizes and CHAPTER 4. THIRD-PARTY DEVELOPMENT IN SECOS 44 invites action. Third, the shared representation is refined as something more specific as it moves from idea to solution. Fourth, the design boundary object legitimates that the content of the knowledge being transferred aligns with the interest of the stakeholders, so that the recipient can rely upon it. At a general level, these properties align quite easily with what has been said about platform boundary resources. To provide a few examples: Thinking of APIs as an interface between two worlds a contract between two parties (De Souza et al., 2004); the platform resources allow the third-party developers to take actions; and the fact that there is a trust relation between the keystone player and the third-parties, and they rely upon that to create complement applications for the software platform. Chapter 5 Third-Party Developer Experience In the previous chapters we first hinted and then evidenced how crucial, in the context of software ecosystems, third-party development is. As it emerges from our research questions, we are interested in understanding how the keystone player enables third-party development through a particular design of the platform boundary resources, and also how this is perceived. However, it appeared quite challenging to find and define criteria in relation to how third-party developers perceive the software platform and the platform boundary resources; when using the boundary resources to develop software applications. In our opinion, the challenge resides in the fact that software platforms are also software products, but besides the possibility of being used as standalone products, they offer third-parties with the possibility of developing complementary software applications on top of the platform. So in a sense, software platforms may still be evaluated using the traditional and standardized criteria for evaluating software, usability and user experience; on the other hand those criteria may not fit or may not fit completely the purpose Additionally, it has been quite hard to find specific reference to the topic from the existing literature. One of the issues encountered while searching was also related to terminology issues; for example the term developer experience can be mistaken with how experienced the developers are. Nevertheless, we had to use some references as a starting point. So, under the guidance of an expert in the domain of usability and user experience, we decided to use some standards on which to base our understanding. We adopted the approach of picking the elements of those standards that seemed to be adequate in our research focus. We selected ISO/IEC 9126-1 on software quality, and the ISO 9241 on ergonomics of human-system interaction. 45 CHAPTER 5. THIRD-PARTY DEVELOPER EXPERIENCE 46 The ISO 9241 was considered in its part 11 on usability and part 210 on human-centred design for interactive systems, usually known for the definition user experience. We also used some concepts from part 110 (replacing part 10) on dialogue principles, because all the previously cited standards contain references to it. Following the expert opinion, we assumed that the standards are sufficiently abstract to fit the purpose. In fact, in all the standards is stated that all mentioned criteria, that we can call heuristics, are to be considered in relation to specific users and specific context of use. Thus, the additional step required is to reconsider the heuristics in relation to particular users and context: In this case third-party developers in a keystone-centric SECO. 5.1 Quality Characteristics and Quality in Use (ISO/IEC 9126-1) The standard ISO/IEC 9126, as introduced before, is concerned with the evaluation of software quality. In its Part 1 it provides a model for assessing software quality in terms of internal and external quality and quality in use. The standard first presents a list of characteristics and subcharcteristics that can be measured by internal and external measures; which in turn determine internal and external quality. After that quality in used is described. 5.1.1 Relation to Third-Party Developer Experience Internal quality gives an internal view of software quality. As it is presented in the standard, it does not seem that internal quality can describe the perception of the system of third-party developers. Issues related to the internal quality do certainly have an impact on third-party developer experience, but those issues are mainly related to internal quality requirements. External quality, on the other hand, is measured through testing in simulated environments and using simulated data. In this case, the issue would be the applicability to platform boundary resources; maybe the approach could work with UI elements of IDEs and to only some extent with APIs. How we see the problem is that, tests are usually targeted at a specific set of use cases. However, as we explained in the previous chapter, software platforms typically have a layered modular architecture, and the designers of some module cannot fully predict which new software application will be crated on top of the platform; or in which way these applications will interact with external services. CHAPTER 5. THIRD-PARTY DEVELOPER EXPERIENCE 47 Further more, also the standard ISO 9241-11 raises similar issues. The standard, in its Annex D, argues against ISO/EIC 9126-1 that usability issues cannot be tested in isolation; because usability is not an inherent characteristic of the software, it is a capability of use in a particular context by a particular user. It must be acknowledged though, that ISO/EIC 9126-1 (Section 6.3.3) specifies in Note 3 to its section on operability that “For a system which is operated by a user” quality in use can be used as a measure of external quality for a “combination of functionality, reliability, usability and efficiency”. Where quality in use has a definition very close to the definition of usability in ISO 9241-11. Regardless of how they are being measured and the considered point of view, some of the heuristics presented in this standard, meaning the characteristics and subcharacteristics of internal and external quality, seem interesting criteria within our research focus; except for the fact that they always refer to a “software product”. The heuristics we selected, excluding the one regarding basic functionality, are: Usability in ISO/IEC 9126 concerns mainly the possibility for the software to be understood, learned, used and be attractive to the user, under certain conditions. Understandability is about the capability for the user to determine how the software can be used to fulfill some tasks in certain condition. So, to determine how much does the software help in achieving certain goals. Perhaps a third-party developer, being different form an average user of software, would be more concerned with the “analysability” of the software. The meaning of the term in ISO/IEC 9126 will be explained later. Learnability is expressed simply as the capability to learn the application of a software product. On this point ISO/IEC 9126 borrows ISO 9241 part 10 (now replaced with part 110) on dialogue principles. In this sense, learnability corresponds to “suitability for learning” On this account ISO 9241-110, among other recommendations, suggests that the user should be able to access rules and underlying concepts; so that the user can use its own reasoning to memorize activities, and, we add, understand functionalities. 9241-110 also remarks upon the importance of feedback in building an understanding of the system. Moreover, the feedback should be not only about the final result of an activity but also about intermediary steps. Operability expresses concepts related to capability of the software to let the user operate and control it. This concept is linked with controllabil- CHAPTER 5. THIRD-PARTY DEVELOPER EXPERIENCE 48 ity, error tollerance and conformity with user expectations as described in ISO 9241-110. The controllability principle goes into details that are very “interactive dialogue”-specific, but at a general level it is about controlling the direction of the interaction up to the point at which the goal is achieved. On error tolerance the most remarkable point is that explanations should be provided to the user to facilitate correction. Besides assisting in avoiding errors, the standard calls for actual means to prevent the user from committing errors and causing unwanted effects. Conformity with expectations is said to be the alignment of predictable contextual needs of the user and accepted conventions. The interactive system should use the vocabulary which is familiar to the user in the performance of the task, or one which is based on the users’ existing knowledge. Also data structures and forms of organization should be thought in terms of what feels natural for the user. Efficiency is about the resulting performances in relation to the resources used, in certain conditions. Besides software and hardware resources, we suggest that for third-party developers, resources could mean cognitive effort, amount of prerequisite knowledge required, and also time invested for learning or understanding how to accomplish a certain task. Maintainability describes how modifiable a software product is. We regarded it as interesting for its subcharacterisitcs. Analysability in ISO/IEC 9126 is described in a way that does not fit, in our opinion, with third-party development experience. However the term itself seems quite interesting as an extension of the subcharacteristc “understandability”. In our view analysability is: the capability of the platform boundary resources to be analyzed in order to assess the capability of the software platform in terms of achieving the developer’s vision and achieve specific tasks. We feel that the term understandability would be too superficial for a third-party developer that uses the platform boundary resources as a working tool. Stability in APIs and other platform boundary resources is an important characteristic. In fact platform boundary resources constitute, as said for APIs, an agreement between the keystone player and the third-party developers; and the trust relationship is based upon this agreement. In the case of platform boundary resources, the key is that despite internal modifications, what is exposed to third-party developers remains as stable as possible. CHAPTER 5. THIRD-PARTY DEVELOPER EXPERIENCE Characteristic Usability Efficiency Maintainability 49 Subcharacteristic Understandability Learnability Operability Analysability Stability Table 5.1: A synthesis of the characteristics and cubcharacteristics of the software quality model (ISO/IEC 9126-1) that we deemed most relevant for third-party developer experience in a SECO. The last part of the quality model in ISO/IEC 9126 Part 1 concerns quality in use. Quality in use is described in a very similar way to usability in ISO 9241 part 11. Therefore the discussion on the topic is postponed to the discussion of ISO 9241-11. In relation to usability as described ISO/IEC 9126-1, quality in use has a broader meaning. in fact it can be affected by all the characteristics that affect internal and external quality; also the ones we have not introduced like functionality, reliability, and portability. However it is stated that in this case the focus, as opposed to external and internal quality, is on the result of the use of the software in a certain environment rather than properties of the software. Quality in use is divided in four characteristics, and the ones we selected are : “effectiveness”, “productivity”, and “satisfaction”. Those are mapping the same criteria found in usability (ISO 9241-11) the only difference being that productivity is indicated as “efficiency” in ISO 9241-11. 5.1.2 Metrics from Software Quality Regarding metrics of the software quality, we already discussed some issues related to internal and external quality at the beginning of the section. Concerning quality in use, ISO/IEC 9126-1 states that the measure is about meeting the needs of specified users in achieving specified goals in a specified context. The measure is expressed in terms of effectiveness, productivity and satisfaction (we decided to omit safety). The measure is not concerned with the properties of the software but with the result of using the software. However, it is said that those results are influenced by internal and external quality; and internal and external quality are expressed in terms of properties of the software, namely characteristics and subcharacteristics. Depending on the type of user, the relationship between quality in use and CHAPTER 5. THIRD-PARTY DEVELOPER EXPERIENCE 50 software quality characteristics varies. In this sense, the standard (ISO/IEC 9126-1) states that for end-users quality in use is mainly influenced by functionality, reliability, usability and efficiency, while for a person maintaining the software quality in use is affected by maintainability. So quality in use for third-party developers in a keystone-centric ecosystem could be affected by the heuristics that we presented. Specifically the characteristics and subcharacteristics of the quality model described in ISO/IEC 9126-1 that we highlighted in the first part of this Section. Additionally, when discussing third-party software developer experience there is, in our opinion, another issue to be considered. Third-party developers use and analyze the platform resources and the software platform itself at a much deeper level than a normal software product user would do. So in our opinion, it is hard to establish whether or not quality in use, for third-party developers in a key-stone centric ecosystem, is only about achieving goals with effectiveness, productivity and satisfaction. Or, since they have to use the platform resources and the software platform as a tool and as part of their own software applications, they are also concerned about the properties of the software; meaning some of the quality characteristics and subcharacteristics expressed in the beginning of the section. Thus, there is a possibility that their experience is also directly affected by those characteristics. Finally, The ISO/IEC 9126-1 standard also reports that quality in use is to be evaluated in specific user-task scenarios. This, as we argued in a similar way for external quality, may not be sufficient. In fact in the context of SECOs, it is difficult to predict which new software application will be created and in which way the application will interact with the different components of the software platform and external services. 5.2 Usability (ISO 9241-11) The standard ISO 9241-11 defines usability and explains concepts related to it which are necessary to take into account when specifying and evaluating usability. 5.2.1 Relation to Third-Party Developer Experience The standard states that its definitions concern visual display terminals, but the definitions and explanations provided appear abstract enough to be considered within our research objective. That means considering third-party developers as users, and platform boundary resources of a keystone-centric SECO instead of visual display terminals. Usability is defined as: CHAPTER 5. THIRD-PARTY DEVELOPER EXPERIENCE 51 “The extent to which a product (a system or a service, as added in ISO 9241-210) can be used by specified users to achieve specified goals with effectiveness, efficiency and satisfaction” and the components of usability are also defined: Effectiveness as accuracy and completeness with which users achieve specified goals. Efficiency as resources expended in relation to the accuracy and completeness with which users achieve goals. Satisfaction as freedom from discomfort and positive attitude towards the use of the product (a system or a service, as added in ISO 9241-210) After the definition the standard puts an accent on specifying details usability. The standard (ISO 9241-11) reports that there should be a clear description of goals, which may be decomposed into subgoals. Accurate descriptions should also be provided for the context of use; this translates into description of relevant characteristics of users, of tasks necessary to achieve a goal, of equipment and environment. Regarding tasks, often a set of key tasks is selected to represent the overall task necessary to reach a goal. 5.2.2 Metrics from Usability The standard ISO 9241-11 states that it is necessary to provide at least one measure for each of the aspects of usability: effectiveness, efficiency, satisfaction. However it does not provide any rule about choosing the measure or the level of detail of the measure. The standard gives only suggestions. For example effectiveness could be measured in terms of mistakes in achieving a task. Effectiveness is related to expenditure of resources, and the resources can be measured in terms of mental effort, time or financial cost. Satisfaction can be measured by defining scales for subjective measures like discomfort experienced or the extent to which an objective has been met or simply the number of positive and negative comments. These are just examples, and as said before there is no general rule. To this end, satisfaction could be inferred by objective measures of user reaction or behavior and efficiency and effectiveness can be estimated from the subjective opinions of the users. The Annex B of ISO 9241-11 explores further the topic of measures. Usability measures in terms of effectiveness, efficiency and satisfaction can target the overall goal in using a software or, more practically, specific goals within the use of the software. Additionally, the measures can also target CHAPTER 5. THIRD-PARTY DEVELOPER EXPERIENCE Usability Objective Overall usability Effectiveness measure Percentage of goals achieved ... ... Meet the needs Percentage of to walk up and tasks completed use successfully on first attempt ... ... Learnability Percentage of users who learned the criterion ... ... 52 Efficiency measure Time to complete a task ... Time taken on the first attempt Satisfaction measure Frequency of complaints ... Rate of voluntary use ... Time to learn the criterion (related to specified efficiency level) ... ... Rating scale for ease of learning ... Table 5.2: An example of usability objectives and possible measures for effectiveness, efficiency and satisfaction (source: Annex B, ISO 9241-11). desired properties of the product that contribute to usability; and the desired properties of the software can become usability objectives. To clarify these statements it is better to provide an example coming from a table presented in the Annex B, where there are examples of usability objectives and possible measures in terms of effectiveness, efficiency and satisfaction. See Table 5.2.2 Going further into the relation between usability and the properties of the software we can take learnability as an example. Learnability in ISO/IEC 9126-1 corresponds to suitability for learning in ISO 9241-110, which in turn refers to the attributes of a product which facilitate learning. Actual learnability, as expressed in ISO 9241-11, in a specific “context can be measured by comparing the usability of a product for one user over time”, like one of the measures in Table 5.2.2, or “comparing the usability of a product for an experienced and inexperienced user”. As stated for quality in use in standard ISO/IEC 9126-1 the measure is about the result of using the software in a specific context by specific users not about some intrinsic attribute of the software. In the end the measure depends on the objectives of those who performs the measure, who have the task of choosing the measures and the level of CHAPTER 5. THIRD-PARTY DEVELOPER EXPERIENCE 53 details. The validity of the data gathered will depend on how the user and context of the measurement are representative of the real situation. 5.3 User Experience (ISO 9241-210) The standard ISO 9241-210 is concerned with providing requirements and recommendations for computer-based interactive systems using the principles of human-centred design. Ultimately the standard is interested in the ways different components of interactive systems can enhance human-system interaction. 5.3.1 Relation to Third-Party Developer Experience The standard is particularly interesting, because of the concept and definition of User Experience. It appears to us that this concept is quite general and does not need to be modified in order to fit third-party developer experience. User experience is defined as: “Person’s perceptions and responses resulting from use and/or anticipated use of a product, system or service” The Note 1 to the definition clarifies that, besides perceptions and physical and psychological responses, user experience includes all the user emotions, before during and after use. For example satisfaction is heavily related to emotions and physical and psychological responses; as described in ISO 9241-11. Satisfaction is also dependent on expectations; actually the expression “anticipated use” from the definition is commonly interpreted as the expectation the user has of a product, system or service. A related concept is conformity to expectations from ISO 9241-110 that is included in operability from ISO/IEC 9126-1 which is mainly about consistency throughout the experience and using accepted conventions. Additionally the Note 3 to the definition expresses that usability criteria can be used to assess aspects of user experience. Meaning that usability, when concerned with the users’ goals, includes the emotional aspects that are part of user experience. In fact, as expressed in the previous section, the choice of usability measures is flexible, as well as the choice of usability objectives. Again, one may think that the aspects that emotional aspects and physical and psychological responses pertain only to the satisfaction element of usability. However it very much depends on the usability objectives one decides to measure and, as reported in ISO 9241-11, also efficiency and effectiveness can be estimated from subjective opinions of the users. CHAPTER 5. THIRD-PARTY DEVELOPER EXPERIENCE 54 The standard (ISO 9241-210), after providing definitions, describes principles and best practices of human-centred design. Within this description the standard states that the designing activity addresses the whole user experience. Thus the design process needs to consider organizational impacts, user documentation, support and maintenance in term of touch-points, training and long term use. Also aspects such as branding and advertising should be considered. These guidelines may translate in different ways when designing for the user experience of third-party software developer in keystone-centric SECOs. Some may be straight forward, like documentation; although the way documentation is structured and presented differs from the one targeting end-users of typical computer-based systems. Other aspects, like brand and advertising, may translate into the offering proposed by the keystone player in terms of market share, business models and IPR; or actually how are those perceived by third-party developers. Equally important thinking of the whole experience, aspects of discovery, walk up and use, training, support and maintenance may have different meanings and associated expectations than for end-users of typical computer-based systems. So, despite conceptually fulfilling the same function, those aspects may translate in different implementations to address the needs of third-party developers. During the design process, design decisions draw a line between activities that are to be accomplished by the user and the ones that are accomplished by the system. In this sense the standard (ISO 9241-210) suggests that design decisions should be influenced by the knowledge of the user’s strength, limitations, preferences and expectations. When relating this to the context of SECOs, the line represents the division between the responsibilities of the third-party developers and the ones of the keystone players. Such a division of responsibilities is also a division between two social worlds and the platform boundary resources function as bridge. In the case of keystone-centric SECOs, when designing the platform boundary resources, design decisions are heavily influenced by the degree of freedom the keystone player wants to give to third-party developers; in addition to the other aspects suggested by the standard (ISO 9241-210). This is a consequence of the already mentioned compromise between shifting capability and retaining control, and strategic decisions (Ghazawneh and Henfridsson, 2011) that the keystone player has to face. 5.3.2 Metrics from User Experience Evaluation is given little space in ISO 9241-210 compared to the other topics. However, evaluation is important from the earliest phases, due to the itera- CHAPTER 5. THIRD-PARTY DEVELOPER EXPERIENCE 55 tive nature of human-centred design, and should be integrated in the design process. The evaluation is used to obtain new information on user needs, to assess that user requirements are met, to collect feedback on the current design, or to make comparisons with other designs. In this sense we do not see how the purpose of evaluation would differ in evaluating a software platform, particularly in its platform boundary resources, based on third-party developer’s perspective. Regarding the method of conducting the evaluation, ISO 9241-210 individuates two approaches: User-based testing and inspection-based evaluation. We see user-based testing as more appropriate to evaluate third-party developer experience. This is based on the same rationale that was already used when discussing external quality as presented in ISO/IEC 9126-1. In, fact inspection-based evaluation relies on expert judgment, and may target expected use-cases. However inspection-based evaluation could be used, as suggested in the standard (ISO 9241-210), to complement user-based testing. In fact inspectionbased evaluation is quicker and simpler to fulfill. Finally, the standard (ISO 9241-210) introduces long-term evaluation. This means to collect feedback from the users over time, once the system is deployed, to see if usability goals considering the whole experience are constantly met. We deem that continuous follow-ups are particularly needed in the context of keystone-centric SECOs. As mentioned when discussing platform boundary resources and in this chapter, it is difficult to predict all the possible ways in which third-party developers may use the platform resources and interact with external services. At the same time, as the standard (ISO 9241-210) reports, external factors may change. Within SECOs, that translates to: those external services used by third-party developers may undergo some changes, new legislation issues may raise, and some business models may not be sustainable anymore. In our opinion the platform boundary resources should provide means to support assessment and collection of new requirements in terms of the third-party developer experience. 5.4 The Standards and Third-party Developer Experience The purpose of this chapter was to discuss how the selected standards can provide basis for discussion in terms of third-party developer experience in a keystone-centric SECO. The different standards we considered have different objectives; though CHAPTER 5. THIRD-PARTY DEVELOPER EXPERIENCE Usability Ob- Effectiveness jective measure Understandability some selected measure Learnability ... Operability ... Analysability ... Stability ... 56 Efficiency Satisfaction measure measure some selected some selected measure measure ... ... ... ... ... ... ... ... Table 5.3: An example of the heuristics we selected from the software quality model (ISO/IEC 9126-1) used as usability objectives. The Table is modeled after the Table from ISO 9241-11 that we presented in the Usability section ISO 9241-11 and ISO 9241-210 are closer to each other in their approach than to ISO/IEC 9126-1. However, those standards refer to each other and concepts that appear in different standards are interrelated. A possible approach is to select one of the standards and try to translate its guidelines into the specific context of third-party development in a keystone-centric SECO. Alternatively, another approach is to combine the elements of the different standards that seem to better fit the context of our research work. We decided to explore further the latter approach. The standard ISO 9241-11 states that desired product properties can be used as usability objectives. So an approach could be to use the heuristics we selected from the quality characteristics of the quality model as usability objectives; and then determine some measures in terms of effectiveness efficiency and satisfaction. A rationale is that ISO/IEC 9126-1 also associates its quality in use with usability as expressed in ISO 9241-11 and states that quality in use is eventually affected by the quality characteristics; if we exclude efficiency, that is one of the dimensions of usability. An exemplification of what we just described is provided by Table 5.4. Relating this to User Experience, the standard ISO 9241-210 expresses in more than one occasion that usability has a much broader meaning than what is commonly believed. ISO 9241-210 adds that usability measures can be used to assess the whole user experience when the usability objectives are concerned with the user’s goals. In this sense the main addition of ISO 9241-210 is a shift of perspective, where the usability objectives are explicitly the user goals and those objectives are set for the whole experience. CHAPTER 5. THIRD-PARTY DEVELOPER EXPERIENCE 57 There are different ways to estimate the user’s goals and select usability objectives accordingly. In this case, one way could be using the heuristics we selected according to the assumptions we made on the software quality model, especially if the study has an explorative nature like this master’s thesis. The process can be iterated to select better heuristics or more detailed ones; the details can be specified according to specific SECOs or type of third-party developers. After all, iterativity is a central concept in human-centred design as described in ISO 9241-210. Regarding evaluation and metrics, we have pointed out, across the discussion of the three standards, that user-based types of evaluations would fit best in the case of third-party developers as users in the context of a keystone-centric SECO. Especially regarding ISO 9241-11 and ISO 9241210, it is clear that the measurements are about the results of using a certain software product, system or service. However we argued that, because of the specificity of third-party development activity, third-party developers may view the software platforms and its resources in a different way. Thus they may also be interested in some of the quality characteristics; as pointed out when discussing ISO/IEC 9126-1. Chapter 6 Results of the Case Study This master’s thesis is not only concerned with third-party development in SECOs at a general level; we also study the problem in light of the practical challenge that F-secure has to face. F-Secure1 is a company that offers various security products, especially antivirus software. More recently F-Secure has expanded its interests to backing up, securing and managing, content from end-users. A result of this new direction is Content Anywhere(CAN). CAN is a new born cloud service offered mainly to telecom operators and their customers; a visual representation is offered by Figure 6.1. 6.1 CAN Ecosystem While the basic infrastructure of CAN had already been developed, originating from an internal tool, F-secure has more recently decided to enact a software ecosystem strategy. This is done with the goal of proposing additional value to their customers (typically telecom operators) and end-users, by means of additional content-centric services; meaning specific applications. These applications are developed for various devices using device specific software and in the cloud using various kinds of web technologies. For doing so, F-Secure offers a set of interfaces to the third-parties. To summarize, CAN can be used as a standalone product, but it also provides interfaces that allow integration to its services and other software components. Therefore it can be assimilated to the examples provided when discussing SECOs’ software platforms, and presents a layered modular architecture (Yoo et al., 2010). The idea behind CAN Ecosystem is to offer a content-centric ecosystem as a service. CAN Ecosystem is, in fact, a software platform designed in 1 www.f-secure.com 58 CHAPTER 6. RESULTS OF THE CASE STUDY 59 such a fashion that allows third-parties to build complementary applications on top of it. In other words CAN is extensible beyond the borders of the organization that operates it; using the definition from the previous chapters. These third-parties developing applications can be the telecom operators themselves, other companies or independent individuals. Each and every instance of CAN Ecosystem is a software ecosystem of its own. These CAN Ecosystem instances are similar and often share the same physical resources, but each is controlled by a different telecom operator or another entity, which has room for additional customization. This means that each operator has a logical piece of the CAN software with separate authentication and access. The basic idea behind CAN is that an end-user can store his or her data in cloud storage. The security and privacy of the data is ensured by F-secure. Then the data can be shared and accessed in a secure way by other devices; as shown in Figure6.1. The supported devices include mobile phones, computers, cameras and smart TVs and so on. That means, technically any device able to install and run CAN’s client software. According to the first taxonomy from Bosch (Bosch, 2009), presented when discussing SECOs, any instance F-Secure’s CAN Ecosystem can be placed in three slots of Figure 3.1. Regarding the category, a instance CAN Ecosystem belongs to application level SECOs, whereas in terms of computing platform it covers all three possibilities. In fact, the end-user is provided with a PC client, a mobile application and also a web interface; as you can see from the top layer of the architecture picture (6.2). Considering the taxonomy we created upon Hanssen (2012)’s classification, CAN Ecosystem belongs to a Class 1 software ecosystem and F-Secure’s role in this particular SECO is the keystone player. Indeed F-secure has a dominant position over the software ecosystem. To be exact it has control over many software ecosystems; we can consider each instance of CAN Ecosystem as a separate ecosystem and the different operators as the various platform owners. So in this specific context we have a keystone player (F-secure) and different platform owners (one for every instance of CAN Ecosystem) that share control over CAN Ecosystem’s instances. As opposed to what found in the literature and reported when describing roles in SECOs, in this case the two denominations (keystone player, platform owner) cannot be considered synonyms. In its role, F-Secure faces the challenge of shaping CAN Ecosystem, in such a way that can potentially result in a vibrant software ecosystem that attracts third-party development, operators and end-users. This research work focuses on the challenge of attracting third-party developers. In this context, as explained when discussing the scope of this study, business and legal issues a left out of scope and we concentrate on the software development CHAPTER 6. RESULTS OF THE CASE STUDY 60 Figure 6.1: A visualization of CAN. It depicts the main functionalities of CAN as a product. Source: F-Secure experience using the resources offered by CAN Ecosystem. 6.1.1 Software Platform Architecture As introduced before, CAN is a platform whose core functionality is to provide data in the cloud. Meanwhile it must ensure reliability, scalability and security. Additionally, it needs to be possible to build complementary content-centric services upon it. All these characteristics are reflected in the architecture; a high level representation of these concepts is given in Figure 6.2. The architecture clearly reflects CAN’s primary role. A significant part of the system is concerned with storing and retrieving the content in cloud, the other significant part is managing the files. So, besides storing related modules there are modules for synchronization and notification, sharing, and securing. In order to aid the task of managing the files there are modules for enhancing them by adding metadata and tags in “Workflow Management & Workers”; this is fundamental for the functioning of the search module. Metadata and tags can also be added to the content by end-users and applications, that can then perform searching or filtering operations based CHAPTER 6. RESULTS OF THE CASE STUDY 61 Figure 6.2: A high level representation of CAN’s architecture. It illustrates the levels and the main conceptual modules. Source: F-Secure. on those. Another module that can add Metadata and tags is “Custom Worker”; although during the interviews has been referred to as “External Workers”. This “External Workers” module has actually a more important role, than just adding metadata. This module offers a means for the operator, or platform owner in general, to extend the platform from the backend. For example, once the files are uploaded to the storage component through the content portal or other applications, some backend application can be notified about that, do some additional processing on the file and upload it again to the storage component. As we can see from Picture 6.2 they are on a conceptually higher level than “Custom Worker”/“External Worker” and are mainly concerned with customizable elements at a client level. As explained at the beginning of this chapter, each operator has a logical piece of the CAN’s software, which we can call environments, and these logical pieces have a separate authentication and access. F-secure develops CAN independently from the authentication method of the operator. The focus of the platform is also on the nature of the content. The content of the end-users will be mainly multimedia files, therefore there are already supported functionalities like streaming or creation of thumbnails to provide some examples. Besides being content-centric, CAN is also deeply user-centric. CAN is built in such a user-centred way that the only way of handling requests using the APIs is by including a user key in the requests. There is a basic assumption that mainly user action invoke these requests. CHAPTER 6. RESULTS OF THE CASE STUDY 62 Figure 6.3: A representation of Content Anywhere Ecosystem: The software platform, interfaces and complementary applications. Another aspect that is not visible in this architecture picture, but it emerged by interviewing the developers, is that CAN Ecosystem is actually composed by three backends. These backends are: Part A, that is the actual storage component; Part B is a service enabler backend, that accomplishes licensing functions and contains information about user software assets; Part C is a single sign-on authentication service. All these backends are reflected in the software libraries that are part of the SDK provided to third-party developers, and are also meant to be abstracted to a single backend. Meaning that the libraries include specifications, of e.g. object classes and protocols, that enable the interaction with the backends. 6.1.2 Platform Boundary Resources This section provides an account of the resources that Content Anywhere provides to third-party developers. According to what explained in the chapter CHAPTER 6. RESULTS OF THE CASE STUDY 63 on third-party development in SECOs, we refer to these resources as platform boundary resources and group them distinguishing technical and social ones. 6.1.3 Technical Platform Boundary Resources SDK As explained earlier in this thesis, SDK stand for software development kit. In the case of CAN the SDK is mainly a collection of APIs. These APIs are software libraries that allow the third-party software developers to interface their application with CAN’s services. These libraries are available for different languages (C, C++, Python and Javascript), and offer equal functionalities in the way that is proper to the specific language. Conceptually these APIs have two levels: The low level APIs are concerned with accessing the functionalities offered by the three backends mentioned previously, meaning one API for each of the backends (Part A, B, C). Whereas the higher level API, that is referred to as CAN API is meant to bridge together the low level APIs providing a software library that is easy to use. The purpose of these libraries is, indeed, to hide as much as possible the details of dealing with the different functionalities of the different backends. A representation of how the third-party components relate to Content Anywhere is provided in Figure 6.3. REST API The REST API (in Figure 6.3) presents the description of the services exposed by the CAN Ecosystem platform. In other words it is a description of the calls the platform exposes. To relate it with the previously described SDK, the software libraries composing the SDK implement the functionalities that are needed to access the REST API. External worker It is essentially a backend API with its own libraries. Thus, it represents another way to extend the CAN Ecosystem platform, from the backend instead of the client side. It is meant for the platform owner, typically operators, in order to further customize the platform in a more efficient and “cleaner” way then they could do from the client side. This API accesses CAN Ecosystem on a really low level, so it is critical to decide to whom access is granted access. 6.1.4 Social Platform Boundary Resources Developer portal The developer portal is the main reference for the thirdparty developers. Through the developer portal third-party developers can download the necessary tools, namely CAN’s SDK, and access the documentation. The developer portal offers the main touch-point between F-Secure CHAPTER 6. RESULTS OF THE CASE STUDY 64 and the third-party developers; in addition there are means of interactions with other developers. Conceptually the developer portal is divided into three areas. Besides the possibility of signing up and logging in, The first area deals with documentation: From the fully blown documentation to less extended parts aimed at getting a first impression and quick start development. The second area is concerned with providing the technical boundary resources: Namely the SDKs of the different supported programming languages. Finally, the third area is meant for interaction with other third-party developers in the form of a forum. Registration As explained in the beginning of this chapter each instance of CAN has a separate authentication and access. In order to abstract the schema an operator might choose, it was decided to use Facebook authentication. Having a Facebook account, the developer needs to make a request and wait a for a confirmation e-mail. After that the developer can register to the developer portal. Once the developer gains access to the developer portal, he or she also gets an ID for the application and two API keys. All these will then be included in the applications being developed to perform requests on the can platform. In this way it is possible to control how third-party applications access the platform. Other companies use similar schemes e.g. Google and Facebook. Documentation The documentation can be considered part of the kit the third-party developers get (SDK). However, it conceptually belongs to the social platform boundary resources. CAN Ecosystem’s documentation essentially describes how the APIs work and provides an account of different parts of the platform. The documentation also includes chunks of code that provide exemplifications, as well as “hello world!” examples. The documentation is divided in a part where there is an extensive description of the different APIs (in the different programming languages) and another part with a more bootstrap-oriented approach. Support The developer portal offers some basic means of interaction with other third-party developers and the platform owner. These means are e-mail contacts and a forum-like type of interaction. Content portal It is a web application accessible through a web browser where, after logging-in, an end-user can access and manage his or her content on CAN. Besides guaranteeing a browser-based access for a end-user to his or her contents, it was also a valuable debugging tool for the developers during CHAPTER 6. RESULTS OF THE CASE STUDY 65 the hackathon. Through the content portal the developers could see the tangible effects of their operations on some test content. These operations range from basic ones like uploading, to more advanced ones involving metadata and tags. 6.2 Evaluation After analyzing the data from the hackathon and the interviews we were able to understand more about the CAN Ecosystem. We were also able to report how the developers experienced the process of creating applications using CAN Ecosystem’s platform boundary resources. In this section we report our findings also providing some exemplifications. It can be denied that the hackathon event also helped reporting some technical bugs. However, the most relevant findings concerned high-level design decisions and the overall developer experience. Perhaps the most general evaluation of CAN Ecosystem is that it appeared to be targeting to a too limited set of use cases; this limited or anyways hindered other possibilities. As reported when describing CAN Ecosystem’s architecture, the platform is conceived in a very user-centred way; and its basic interactions being a user storing and accessing personal data, by means of conventional devices. So for example the platform had difficulties supporting interactions with devices independent of humans or with devices having limited means interaction. Providing some example: the authentication procedure of independent devices (e.g. a security camera) required workarounds, or the interaction with a device without a keyboard (e.g. a TV remote controller) was hindered. This limited set of use cases follows the fact that CAN Ecosystem has been designed from a very technical viewpoint. Hence, the basic functionalities of the platform were accomplished, but this happened at the expenses of usability. In other words, the platform was technically adequate but the hackathon revealed some issues regarding the experience of developing application using the platform boundary resources that needed improvement. 6.2.1 Understanding the Platform Architecture At a general level it was reported by the developers that the overall picture of the third-party API was somewhat difficult to grasp. While the basic infrastructure of CAN Ecosystem and its operations were easy to understand, it was more challenging to determine how the different parts of the platform were supposed to work together. Particularly, it was not clear how the differ- CHAPTER 6. RESULTS OF THE CASE STUDY 66 ent backends, that we discussed in the architecture section, had to interact together. This problem was also a consequence of the fact that the thirdparty APIs did not hide completely or at least sufficiently the interaction between the backends. This hiding function should have been accomplished by the CAN API mentioned in architecture section. More specifically, the steps required to make the backends interact were regarded as too many; additionally also the order of the steps was unclear. Regarding these issues, some developers explicitly suggested a more advanced visualization of the architecture for it to be understood. Though, another developer added that if the SDK hid more, the deep understanding would not have been required. This is a problem of the “abstraction level” the third-party developer has to deal with. To conclude, also this aspect highlighted a slightly too technical view point in designing the platform resources that eventually hindered usability, therefore it affected the overall developer experience. 6.2.2 Learnability One of the main issues that affected developer experience regarded learnability. It emerged that the platform resources did not facilitate learning. A major example is that the third-party APIs, because of their structure, did not aid the learning process. As a general approach developers would have preferred that the APIs were structured in such a way that is straight-forward to perform basic operations. The more advanced options of those operations could have been learned and used over time. Instead, it was easy to end up using advanced options or operations, even deprecated ones, already at the beginning. Documentation is an important element of platform boundary resources; specifically it belongs the social boundary resources (Ghazawneh, 2012). The documentation has a very important role regarding learnability. It emerged that that different developers have different approaches to learning: Some need to go straight in to the source code and see working examples, while others need to start from an overview and introductory concepts. Anyhow, the documentation should have addressed those different learning patterns. For example it was reported that the documentation for the Python APIs was scarce; the developers had to look through the source code to gain understanding. The same approach had to be adopted for the REST API. Anyhow, CAN Ecosystem’s standard documentation does provides code snippets. Their limit is that they target specific use cases, or as a developer described it: it is “code that always works”. A different approach to standard documentation was completed by a member of the support team during CHAPTER 6. RESULTS OF THE CASE STUDY 67 hackathon. This was done in the form of a tool that could show directly the result of some API calls. This kind of possibility was highly appreciated by developers because they could play with the different calls and their attributes, thus gaining an immediate understanding. Unfortunately such a tool was available only toward the end of the hackathon event. Error messages are also an issue that affected learnability. Previously, we reported that the SDK has essentially two levels. A lower level concerned with the specific backends and a higher level (CAN API) that is meant to bridge together the lower level APIs. It was reported that the higher level (CAN API) was not catching the errors of the lower level APIs like the storage-related one, but only its own; this made debugging quite difficult. Some error messages were not very informative or difficult to understand. For example the error messages regarding a notification channel from the backend (Universal Event Broker) were affected by this problem. 6.2.3 Developer Portal and Registration Process The developer had a general introduction to CAN Ecosystem in the initial meeting we mentioned when describing the hackathon. In that meeting the developers were given some instruction on how access the portal to download the tools, and some information about the APIs structure and the authentication procedure. However, the experience with the Developer Portal, particularly with the process of registering as a developer, was regarded as unpleasant by some developers. One of the developers explicitly reported that he assumed the process to be complete once he gained access to the portal. Instead he was given some application IDs whose function was not totally clear. He also complained about the absence, in that circumstance, of a simple application to test the usage of those IDs. That experience was described as frustrating. The developer identified up to 4 steps necessary to have a complete developer account, while in his opinion the developer should have sufficient information to start using the APIs after only one step. 6.2.4 Support As introduced when listing CAN Ecosystem’s social boundary resources, the means of interaction between developers and the support team were based on direct personal contact; ranging from face-to-face meetings to the the chat group that was mainly used during the hackathon. During the hackathon, the chat was been really important, and covered many functions. Primarily, in case of any difficulties of using the APIs the developers could simply ask in the CHAPTER 6. RESULTS OF THE CASE STUDY 68 chat and receive immediate response and help from a member of the support team. Additionally it was used to notify developer of issues and or solutions discovered by other participants. Through the chat, the support team also gave, upon request, links to chunks of code in the common repository that were used for testing and resulted successful; so that some developers could understand better how to accomplish some specific tasks. Finally it also had the function of bug reporting; meaning that if the support team did not find a solution in a short time or a bug was discovered, these were added to a backlog for future fixes. 6.2.5 Using the APIs The usage of the APIs was reportedly easy, except for some specific issues. The two main issues of the third-party API implementation can be described collectively as a problem of ambiguity. To be more specific, one issue was that there was some ambiguity in the use of the terminology (eg. the name of some classes or methods) or which data type was expected as input for some methods. A consistency issue was that there were too many possible ways to reach the same outcome. For example it was discovered that there were ten different calls for filtering or finding files. Whereas the developer suggested that a cleaner implementation could be obtained by conceptually structuring the APIs on two levels: basic operations and advanced usage options. As reported before, this aspect also affects learnability. In the beginning of the evaluation we claimed that the platform resources were technically adequate. The developers acknowledged that it is straightforward to access the content and “search” and “timeline” were regarded as the most important and inherent functionalities of the system. With respect to these basic functionalities the developers reported that it was “simple to get things done” and it is just a matter of “presenting stuff in a good way”. 6.2.6 Authentication and Ticketing It was already discussed, at the beginning of this Section, that device-based authentication was a problem and it has been a major concern across the teams. A developer also reported that this issue may constitute a problem also for automated testing. In addition to that, the authentication schema was not particularly appreciated. Specifically, there was an issue with the fact that the developers had deal with exchanging tickets in order to make the three backends communicate. These tickets are a package that is given to an authenticated user, and can be used as a proof of being the correct account holder. It was noted CHAPTER 6. RESULTS OF THE CASE STUDY 69 that typically developers do not want to deal with these aspects, thus the APIs should hide more. This offers a specific example of the “abstraction level” problem presented in the Architecture Subsection. In the interviews, both the terms tickets and tokens were used interchangeably; this comes from the legacy of the different developers working on different parts of the CAN Ecosystem stack. These terms interchanging is another example of the ambiguity problem noted in the previous section. 6.2.7 Tagging issue During the hackathon the main issue with the API that we noticed, was with tagging; during an informal conversation with the participant that was mainly consulted by the others regarding this issue. In this conversation he explained that the API probably comes from a legacy system, and that tagging works a bit like a file path. It was explicitly said that in a future version of the API it should not be done that way. 6.2.8 Javascript Javascripit (js) had been the “weapon of choice” for two of the teams. Inevitably, it was then mentioned quite a few times when reporting issues. Some troubles were caused by some version-related issues with jQuery, an external Javascript library. We regard this as an example reminding that, especially in the context of software ecosystem, one needs to account for external dependencies. Other troubles were related to the authentication; but it is difficult to distinguish if the problem was the authentication schema in general or how it was implemented in the javascript API. However, we have to acknowledge that it had been recently completed, and it also required a overnight fix by the support team during the hackathon. In addition to that, during an interview, one participant explicitly reported that once the authentication issues were resolved, the Javascript API actually “made life easier”. 6.2.9 External Workers Only one team decided to work with this part of the CAN Ecosystem. Being a really low level component it present a lot of concerns, at a general level of security and reliability. Hence that team had to interact with the equivalent of CAN Ecosystem but in a different environment. As explained in the previous Section, CAN Ecosystem is a result of the storage component in a specific environment. This one team had to hack at such a low CHAPTER 6. RESULTS OF THE CASE STUDY 70 level that it was considered safer for them not to use the standard version of CAN Ecosystem, which is hosted in a production environment. The other teams, instead, were working on a level where interacting with the production environment was safe. What emerged from the hackathon is that the external worker module is simply not ready to be included in the platform resources exposed to external developers. Specifically, security models have to be defined and performance testing needs still to be carried out. In other words this module needs to be developed further in order for it to be open to third-parties; even if there was a mechanism for having selected third-parties to work with it. 6.3 Summary The findings from the hackathon experience, reported in the evaluation section, revealed the main issues concerning to which extent Content Anywhere enables third-party development. However, regarding some other aspects that went smoothly during the hacakthon may raise concerns, when considering, the CAN Ecosystem during normal operation. Meaning, when the APIs are deployed in production environment and they are used by “real” third-party developers. In the production environment the authentication will be managed by the telecom operator that administers the platform or whoever the platform owner is. It must be ensured that even though there will be an addtional layer depending on another entity, the procedure of registering and getting started with the development is as smooth and quick as possible. Another concern is that since there are different instances of CAN Ecosystem that can be customized in different ways, the developers’ possibilities of reuse will be maximized. Meaning that there should be consistency in the APIs so that third-party developers can participate and contribute in the multiple instances of CAN Ecosystem. Alternatively the different platform owners of CAN Ecosystem instances should offer additional support for the particular features of their platform. This would be similar to what happens with Nokia’s Windows Phones. In Nokia’s developer portal they offer additional support to the Windows phone SDK targeting the use of those features that differentiate Nokia’s phone from the competitors inside the windows phone market. This is clearly enabling those additional features and encouraging third-parties to develop applications only available on Nokia’s Windows phones. Another concern, that emerges when considering CAN Ecosystems’s boundary resources in a production setting, is about the scalability of the interaction between F-secure and the third-party developers. It is clear that the CHAPTER 6. RESULTS OF THE CASE STUDY 71 processes in place during the hackathon are unscalable, and therefore unrealistic, in a real setting. For example, the developers participating in the hackathon had a session where they were briefed on CAN Ecosystem and they were given instructions on how to proceed with the authentication and other practicalities for setting up the tool; additionally they could directly contact, when needed, the developers of the APIs. It is still to be decided how to achieve the same informative purposes in a scalable way. The same applies to the support offered to developers at the various stages of the development of the application. As it emerged before, it is arguable how can this be scaled and how can the functions, covered by the chat group, can be realized when there will be “real” external developers. To our knowledge, there was, at the time of the hackathon, only an e-mail address available to third-party developers and some basic forums. The interaction with the third-party developers is extremely valuable. As it emerged during the hackathon, developing application means exploring the APIs at very low level of details and mashing them with other digital services services. It is different from other testing practices, beacuse those target specific use cases. This not only offers the possibility of finding bugs and incompatibility issues, but also can offer insights about how to roadmap the future development of the platform. During the hackathon, reporting and suggestion functions were achieved through the chat group and direct interactions. The question is, how obtain, in a scalable way, the same benefits coming form close cooperation with the third-party developers. Chapter 7 Discussion In this chapter we discuss the main findings of our study in relation to the research questions we presented in the introductory chapter. After answering the research questions, we discuss our findings with related work, and finally we make further observations. 7.1 Answering the First Research Question The first research question we presented was: How does F-secure enable third-party development through platform boundary resources? This research question concerns the current status of CAN Ecosystem in terms of the platform boundary resources exposed to third-party developers. Summarizing the results of the case study, in relation to this first research question we can say that: The CAN Ecosystem is technically adequate; meaning that, for third-party developers it is effectively possible to develop software applications using the provided platform boundary resources, without major hiccups. For example, it is reportedly staight-forward to access the main functionality CAN was created. CAN Ecosystem presents all the elements that are generally recognized as platform boundary resources: A resource for the first contact with the ecosystem, and whence to access the other resources (i.e. the developer portal; an SDK composed of a number of APIs supporting different programming languages, not including an IDE since it depends on the programming language; Documentation, composed of introductory material and a repository with code samples; basic means of support and interaction with the keystone player. 72 CHAPTER 7. DISCUSSION 73 However, the CAN Ecosystem needs improvement regarding other aspects that affect the overall experience. As a high level issue, it appears that the design targets a too limited set of use cases, thus limiting some possibilities. This is a problem because third-party developers typically create something that the keystone player cannot fully predict. As pointed out earlier in this thesis the case of platform boundary resources, particularly APIs, the design process is more of an orchestration of components belonging to different layers. Thus, the designers of the boundary resources cannot fully predict how, or for which aim, they will be used. The challenge, for the designers, is that boundary resources need to be weakly structured for general use, and then become strongly structured for specific use; as for boundary objects in general. It appeared that the initial design did not address this issue successfully. in this sense, the hackathon event, comprising application with diverse objectives and targeting different devices, helped emphasize the issue. Finally, many aspects that impact learnability could be addressed better, together with other issues like “abstraction level problem” or “ambiguity” that do not facilitate third-party development. In our view enablement is not a boolean value. Instead, as we realized from our study, there are different degrees of facilitation, or minimization of effort; and therefore different degrees of enablement. Nevertheless, we deem that the minimum requirement, in order to talk about enablement of third-party development, is ensuring technical feasibility. We were not able to find, nor we were able to define, agreed and systematically defined degrees of enablement. For instance, we are not able to define a maximum degree, or specific steps. However, from the knowledge accumulated from the literature, we are able to recognize platform boundary resources within the CAN Ecosystem; as reported in the beginning of this section. We were also able to describe some of their features that raise the degree of enablement; at least in the context of CAN Ecosystem. In fact, from our findings, CAN Ecosystems has also elements that place it above mere technical feasibility. As one example of these elements, we can cite an online tool that allows seeing the result of single API calls and was welcomed with satisfaction; unfortunately the tool was completed by the support team during the hackathon, and was not ready for the hackathon-based testing. Some other elements like support and long term relationship could not be realistically tested in the hackathon; and we raised some concerns in that sense when we summarized the results of the case study. As a final example of what can qualify as a platform boundary resource and thus enable third-party development, we propose hackathons or similar coding events. If organized in a similar way as our hackathon event, they can CHAPTER 7. DISCUSSION 74 be a means that enables a closer cooperation between the keystone player and third-party developers. In fact thinking in terms of boundary objects, platform boundary resources are an artifact that minimizes the effort for coordination within the collaboration of entities belonging to different social words. 7.1.1 Comparison with Related Work We based our concept of platform boundary resources on the work of Ghazawneh (Ghazawneh, 2012). It follows that what we regarded as platform boundary resources in CAN Ecosystem is compliant with Ghazawneh’s definition and distinction between technical and social boundary resources. Ghazanaweh provides general level examples of platform boundary resources, while we also provide examples of platform boundary resources that are specific to the CAN Ecosystem. In fact, understanding platform boundary resources as boundary objects gives more of a foundation to identify an artifact as a platform boundary resource. An example of that is proposing a certain kind of hackathon as a platform boundary resource. APIs are definitely an important element of platform boundary resources and certainly the most easy to identify as a boundary resource (Ghazawneh, 2012). We found a number of studies on APIs, but there is no point comparing them with our findings, as we did not provide any contribution in the definition and description of APIs. 7.2 Answering the Second Research Question The second research question we presented in introductory chapter was: What does third-party developer experience consist of in Fsecure’s software ecosystem? First of all, in relation to the first research question, it appeared that third-party developer experience is concerned with the degree of enablement perceived. We can say with a fair amount of certainty that third-party developer experience is affected negatively when the enablement is poor. One example could be the drastic happiness level drops corresponding to major difficulties encountered. Many of these difficulties can be linked to the platform boundary resources. When we started discussing developer experience, we stated that the general definition of user experience can still hold for third-party developer experience. The definition mentions that the perceptions of the user are also CHAPTER 7. DISCUSSION 75 affected by the “...anticipated use...”(ISO 9241-210). The anticipated use can be intended as the expectations of the user; in this case the third-party developer. When talking about issues, the developers often expressed it in terms of how something should be; in other words how they expected it to be, based on their assumptions. For example the way in which tokens are handled, or what is the level of abstraction exposed to third-party developers, or even what kind of data structure is expected as input for a method. We see this kind of unmet expectation as a product of the difference between the mental model of the platform (and its parts) that the developer creates, and the mental model of the designers of platform boundary resources. We think this is the highest level factor that composes thirdparty developer experience, for what we found in this context of the CAN Ecosystem. We also identified other factors that compose third-party developer experience. We have not exactly defined a hierarchy, however we believe that learnability (which was introduced in the previous research question) is an important factor. We used learnability to contain many issues, that could be grouped in more specific categories. Consistency, of how different part of the platform have to be used, is an interesting factor, as we discovered it being related to expectations about previously used parts of the CAN Ecosystem. This is because the CAN Ecosystem is discovered and used progressively and in different iterations. Consistency could be considered a factor composing learnability. We propose that we could talk about usability factors when they are closer to the level of detailed issues; like the presence of two functions to accomplish a similar task, or an additional step. Whereas we can refer to experience factors when they concern overall feelings. Usability factors contribute to building these overall feelings and thus the experience. 7.2.1 Comparison with Related Work Regarding what we refer to as third-party developer experience, the closest related articles we were able to find are mostly concerned with API usability. One study concerns the usability of APIs in Enterprise Service-Oriented Architecture, and bases its criteria on learning barriers that are associated with programming in general (Beaton et al., 2008). The barriers are classified in terms of errors that caused them. Despite giving that are quite technologyspecific(i.e. SOAP), we can relate to some of their barriers with quite specific findings: An example of what they call “naming Error” appears when we discuss the usage of CAN APIs; Also what they refer to as “consistency CHAPTER 7. DISCUSSION 76 Error” relates to our consistency problem we expressed in the same section; though we still referred to it as ambiguity. The most relevant commonality, though, is that the authors report violated expectations as a key issue. The authors add that this leads the developer to question every assumption they made about the API, and consequently to commit more errors. In addition to this first article, there is a series of articles (Clarke, 2005, 2004; Stylos et al., 2008; Farooq and Zirkler, 2010) that are related to the use of an adapted version of “cognitive dimensions” (Green and Petre, 1996). These cognitive dimensions are a measure of what the third-party developer can afford to do, and they are to be compared with the expectations the developers have of the API. Within the set of 12 adapted cognitive dimensions (Clarke, 2004) some relate to our findings: “Abstraction level” issues can be found in the the problem of different backends and the ticketing problem we reported in twice in the evaluation of CAN Ecosystem; addressing different “learning styles” emerged when discussing learnability; “penetrability” is a good description of the analysability criteria we selected from ISO/IEC 91261 ; “consistency”, that has already been discussed; “role expressiveness” represents the concept of relating the different part of the API with each other, as described in the section discussing the understendability of CAN Ecosystem’s architecture; “domain correspondence” concerns how straightforward is to achieve a certain desired functionality, and is discussed within the CAN APIs usage. Finally, an article about Apple Computer’s HyperCard visual programming system (Nielsen et al., 1991) is entirely concerned with learnability issues. In our evaluation we also grouped some issues under this category. However the article of Nielsen et al. investigates in detail: learning time; learning strategy; and learning curve. To conclude, we can say that most of the articles cited in this Section provide very detailed examples, down to the level of how some classes or methods are defined. We based our evaluation on the judgment of F-secure’s developers, and aimed at having a higher level of abstraction and provide more general level examples and principles; with the goal of being independent from implementation details. It is also important to remark that those articles are concerned specifically with API usability. Even though some of their findings can relate to ours, APIs are not the only platform boundary resources. In our view, API usability (or usability of other specific platform boundary resources) relates to third-party developer experience, like the usability of buttons, scroll bars, menus and other means of interaction relates to the whole user experience. CHAPTER 7. DISCUSSION 7.3 77 Further Observations In this section we want to highlight some aspects of our study on which we have been speculating for some time. Yet, on these issues we have not reached a final judgment. However we deemed important to introduce them in order to engage a potential discussion. 7.3.1 Third-party Developer Segmentation The subjects involved in our study were all F-Secure’s employees that volunteered for the hackathon event. We regarded the developer as a measure of the third-party developers that will participate in CAN Ecosystem, and we considered them as a homogenous group sharing common characteristics. However other articles, that are concerned with issues related to our problem domain, segment third-party developers into different profiles. One study investigates an open source SECO (Kabbedijk and Jansen, 2011) and based on their activity of pushing to the repository, divides the third-party developers into: “Lone wolf”; “Networker”; “One day fly”. This segmentation seems useful to provide a descriptive account of the dynamics of the ecosystem, however it does not bring insights into the different needs and preferences of the developer groups. The previously cited articles related to the cognitive dimension framework (Clarke, 2005, 2004; Stylos et al., 2008; Farooq and Zirkler, 2010) also share the use of developer personae or profiles. These profiles originate from different working styles and characteristics of developers using Microsoft Visual Studio to develop software applications for Microsoft’s software ecosystem (Clarke, 2005, 2004). The profiles are: Opportunistic, Pragmatic and Systematic. These profiles are not supposed to vary over time (i.e. no person fitting a profile evolves into another after acquiring experience). Unfortunately Among all the articles we mentioned only one article (Clarke, 2004) matches some usability goals for the APIs to a specific developer profile, but they are at a general level and it does not provide more detailed examples. So it is hard to see a relationship between how the segmentation shapes the usability criteria. Another article instead provides roles that change over time (Kline et al., 2002). Meaning that in their study, Kline et al. divided the subjects of the study into two groups: expert software developers and inexperienced ones. It is interesting to note that the two groups exhibited areas of agreement regarding some learnability and visibility of information issues (Kline et al., 2002). So, in this case the segmentation did not provide different results CHAPTER 7. DISCUSSION 78 in the experience; other than a higher general satisfaction level for expert developers. Regarding our findings, we can only add that it was suggested by a few interviewees to offer two possible modes of operation of the APIs: An advanced mode for developers familiar with the platform and abasic mode for inexperienced ones. This proposed segmentation potentially varies over time, as opposed to what was suggested by Clark (Clarke, 2004). In fact thirdparty developers acquire more expertise as they continue developing using certain platform boundary resources. Additionally, we reported that developers might have different learning styles. However, we do not have means to determine whether those who shared a certain learning style share other similar characteristics. Thus, justifying the segmentation study subjects into categories To conclude, since most of the articles do not provide clear examples, it is hard to understand whether they achieved positive results in usability and developer experience by segmenting developers. Besides that, one of the studies (Kline et al., 2002) proved that some developer experience issues are independent from the level of expertise of the developer. 7.3.2 Method In our study, we used a hackathon event to collect empirical data. Borrowing the terminology from ISO 9241-210, this can be considered a user-based evaluation. Also, the studies presented in the previous section have been applying user-based evaluation. One study (Kline et al., 2002) has applied two methods: A heuristic evaluation, that appears to be an inspection-based evaluation; and a psychometric evaluation, that is a standard user-based evaluation. Even though we described our method as user-based evaluation, because F-Secure developer simulated the activity of third-party developers, in a sense our study could also be considered an inspection-based evaluation. In fact, our users qualify as experts since they have many years of experience in software development and have been using different third-party APIs and SDKs in their career. Moreover we have held semi-structured interviews, in which F-secure’s developer were explicitly asked for their expert judgment concerning broad issues. Whereas psychometric evaluations are based on questionnaires that are analogous to structured interviews. Questionnaires and structured interviews are more common in user-based evaluations. Especially regarding heuristic evaluation, Kline et al. Kline et al. (2002) presented the experienced developers with a table having predefined heuristics. It must be specified, that the study of Kline et al. is concerned with CHAPTER 7. DISCUSSION 79 an IDE. We think it easier, in this case to use conventional user experience for traditional computed-based (visual) interactive systems. On the other hand, in our case we simply made some assumptions to define the points that aided the semi-structured interviews; as we were not sure about what third-party developer experience meant. Therefore we did not create any specific heuristic in advance. Because of this explorative nature of our study, despite having already made some assumptions, we categorized the results as the issues emerged from the data; instead of creating a predefined heuristic upfront. The way we collected evidence around certain categories is explained in more detail in the section related to data analysis. Similarly, in the article of Beaton et al. (2008) the categories are created after the study. However, in the other articles (Clarke, 2005, 2004; Stylos et al., 2008; Farooq and Zirkler, 2010) a framework based on cognitive dimensions was already selected at the beginning, so that the issues found were described in term of the cognitive dimensions. We are not sure if analysing in terms of cognitive dimensions, the issues we observed from the CAN Ecosystem evaluation would have achieved better results; though we already stated that those studies were only concerned with API usability. Nonetheless, we think that the creation of a framework that proposes criteria to assess third-party developer experience would be highly beneficial. It could be used as a tool for the evaluation of software platforms, especially before exposing the platform boundary resources to the public. Additionally it would provide a common terminology to discuss third-party developer experience issues. Chapter 8 Validity Discussion In this chapter we present some points for discussing validity issues related to our study. We based our knowledge of the validity concept on the work of Shadish et al. (Shadish et al., 1963). The work of Shadish et al. is mostly concerned with experiments, and particularly with dispensing treatments in controlled experiments. Despite our careful planning the hackathon event does not qualify as an experiment in a strict sense; for instance we did not have a control group. The hackathon event has been an experiment only in the common meaning of the term; i.e. a first time experience associated with not exactly predictable results. So it would be more appropriate to refer to it as the setting. Yet, borrowing the word from chemistry, we could think of it as a catalyst. Nevertheless we believe we have elements to discuss our study in terms of internal validity then construct validity and finally external validty. 8.1 Internal validity Internal validity in concerned with the causal relationship between variables. It is quite challenging for us to define exact variables; and even if we attempted, we would have more variables than data points. Continuing the discussion concerning the first research question, a really high-level variable would be the “degree of enablement”. As we explained this high-level variable is composed of many factors. It is hard to define them as variables because we were not able to observe variations in some variables corresponding to variation of a treatment. Partially because we did not have treatment, partially because we were not able to define exactly in which ways the variables can vary. 80 CHAPTER 8. VALIDITY DISCUSSION 81 In this sense it is hard to stick with the concept of causal relationship offered by Shadish et al. (Shadish et al., 1963). In any case, we can suggest some issues that may have posed a threat to internal validity. For example, since we relied on our subjects’ (F-secure developers’) judgment, they could have not been conscious of some factors; they might have had different views; or some subjects might have identified different factors than the one identified by other subjects, however they might have been referring to the same factors. Finally we have to admit that these last issues may be closer to problems of construct validity. 8.2 Construct validity In the end of the previous section we said that some of the concerns we raised could belong to construct validity problems. In fact construct validity is essentially concerned with definitions (Shadish et al., 1963). Another issue that we deem relevant to argue about the subject of our study. A key question is: To what extent do F-Secure’s developers that volunteered for the hackathon event constitute a representation of the various third-party developers that will interact with the CAN Ecosystem? This leads to the question question: do developers of third-party applications have relevant prototypical features that can be compared to F-Secure developers or can they be aggregated into a broader group of individuals named software developers? Additionally, is the construct identified at a too general or too specific level? These questions are relevant when investigating the possibility to generalize to population characteristics. Considering the setting: The hackathon event was a convenient arrangement to collect data, is it a reasonable approximation of third-party software development organization? Are there comparable dynamics? All these examples we provided deal with the risk of inadequate explication of the construct; this can lead to construct confounding. 8.3 External validity Concerns regarding external validity, in our opinion, depend on the kind of contribution a study is aiming at. This study is very much focused on a specific setting. However we may evaluate some possibilities of generalization. As an example of same level generalization (Shadish et al., 1963): Given that we could define some prototypical feature for the subjects of the study, would inferences on what constitutes third-party developer experience still CHAPTER 8. VALIDITY DISCUSSION 82 hold for a variation in the prototypical feature? A difference in the prototypical feature could be a different approach to learning; maybe due to the level of education or cultural differences. As an example of broad to narrow generalization we could question whether a part of the platform boundary resources would be experienced in the same way in a different setting? For instance, the support component considered in another setting then the CAN Ecosystem, or another Software Ecosystem. Chapter 9 Conclusions Actively attracting third-party developers is a fundamental concern in a software ecosystem, especially in a keystone-centric one; given the fundamental role that third-party developers have in the success of a software ecosystem. In this direction, we deemed of particular interest to create additional knowledge around the question of what makes third-party developers join and develop software applications for a particular software ecosystem. We already acknowledged that it is a complex problem, for there is a complex interplay of different aspects. We decided to focus on the aspect related to minimizing third-party developers effort. As this is understood to be one of the important aspects. We introduced the concept of platform boundary resources, and their role in the enablement of third-party development. As we said, we understand minimizing third-party developers effort as enabling third-party development. We also highlighted that, ultimately, it is the third-party developer who perceives the effort and benefits of enablement. Consequently we also introduced the concept of third-party developer experience. We decided to investigate these issues within a specific software ecosystem; namely the Content Anywhere Ecosystem. Additionally, we used the expedient of a hackathon event to collect empirical data. The data was thereafter analysed to gain more knowledge from empirical evidence, and answer our research questions. In this sense, we investigated the phase when third-party developers start familiarizing and making their first steps within the software ecosystem. However some factors can impact also the long term relationship, because of the iterative nature of how third-party developers learn and use the platform boundary resources. As we learned, enablement can happen at different degrees; the bare minimum is set at ensuring technical feasibility. There are a series of fac83 CHAPTER 9. CONCLUSIONS 84 tors related to platform boundary resources that help raise the degree of enablement. And consequentially, we believe, this helps to raise the degree of attractiveness of the software ecosystem, for the third-party developers. At the same time, we learned that the third-party developer experience is build on different levels. The lowest level concerns aspects that are closer to the concept of usability. This lower level contributes to building overall feelings, which in turn determine third-party developer experience. At any level the experience is affected by met or unmet expectations. We understand expectations as related to the mental model that the third-party developer creates. As we said, the third-party development experience is concerned with the degree of enablement perceived. So this helps in understanding, at least partially, what are the elements of attractiveness in a software ecosystem for third-party developers. 9.1 Future Work We think that there are many possible directions that could be taken to explore further the issues we presented in this master’s thesis. One approach could be to extend the area of our study; for example changing the scope of our study, or concentrating on another phase of the interaction between the third-party developer and software ecosystem. Regarding the first example, an area for future studies could be analysing the economic reasoning of third-party developers, or better, of third-party development organizations; this could be called business experience. Similarly one could investigate how keystone players harness open innovation, and discuss it in terms of intellectual-propriety-rights experience. As for the second example, the study can be extended to the growth of Content Anywhere Ecosystem. Maybe it could be a longitudinal study composed of multiple case studies depicting various stages of the SECO’s growth. In this case, it could be interesting to observe how the relationship between the keystone player and the third-party developer evolves. So the focus could be on sustaining the relationship and collaboration. A different approach, would be to do a longitudinal study comprising studies that analyse issues in other software ecosystems and compare the results; that would potentially give more grounds for generalization. On the other hand, some issues that we discussed in this master’s thesis could be explored in depth. In this sense, we can list some proposals. For example, learnability aspects could be investigated further. In this sense, platform boundary resources could be analysed in terms of learning CHAPTER 9. CONCLUSIONS 85 time, learning strategy and learning curve. This could also provide the possibility of introducing quantitative measurements. Another direction, could be to analyse in depth the relation between the different elements that compose third-party developer experience. Or, within the same topic, how the third-party developers build their mental model of the different parts of the software platform and how platform boundary resources work; consequently, also how to help them in building the mental model. Additionally, a study could focus on defining more systematically the degrees of enablement, and explicitly identify elements that make a SECO qualify to possess a certain degree of enablement. Finally, continuing with the parallel between third-party developer experience and user experience, it could be studied whether there are elements of pleasurability in third-party developer experience, as there are in user experience. Or whether pleasurability is one of the criteria to achieve the maximum degree of enablement. Bibliography AaltoES. Aaltoes build it - 3d printing with add lab, 2013. URL http://www. aalto.fi/en/current/events/built_it_3d_printing/. Accessed 2013-0402. C. Baldwin and J. Woodard. The architecture of platforms: A unified view. Harvard Business School Finance Working Paper, (09-034), 2008. J. Beaton, S. Y. Jeong, Y. Xie, J. Stylos, and B. A. Myers. Usability challenges for enterprise service-oriented architecture apis. In Visual Languages and Human-Centric Computing. IEEE Symposium on, pages 193– 196. IEEE, 2008. M. Bergman and G. Mark. Boundary objects in design: an ecological view of design artifacts. Journal of the AIS, 8(1):34, 2007. J. Bosch. From software product lines to software ecosystems. In Proceedings of the 13th International Software Product Line Conference, pages 111– 119. Carnegie Mellon University, 2009. J. Bosch. Software ecosystems: Taking software development beyond the boundaries of the organization. Journal of Systems and Software, 85(7): 1453–1454, 2012. J. Bosch and P. Bosch-Sijtsema. From integration to composition: On the impact of software product lines, global development and ecosystems. Journal of Systems and Software, 83(1):67 – 76, 2010a. J. Bosch and P. Bosch-Sijtsema. Softwares product lines, global development and ecosystems: Collaboration in software engineering. In Collaborative Software Engineering, pages 77–92. Springer Berlin Heidelberg, 2010b. K. Burnham. Inside facebook’s hackathons: 5 tips for hosting your own, 2012. URL http://www.pcadvisor.co.uk/news/internet/3377232/ 86 BIBLIOGRAPHY 87 inside-facebooks-hackathons-5-tips-for-hosting-your-own. Accessed 2013-02-06. C. C. Centre. Cern summer student webfest, 2012. URL http://www. citizencyberscience.net/cern-webfest/. Accessed 2012-10-25. S. Clarke. Measuring api usability. Doctor Dobbs Journal, 29(5):S1–S5, 2004. S. Clarke. Describing and measuring api usability with the cognitive dimensions. In Cognitive Dimensions of Notations 10th Anniversary Workshop: In Conjunction with the IEEE Symposium on Visual Languages and Human-Centric Computing. IEEE, 2005. K. Crowston, J. Howison, C. Masango, and U. Eseryel. The role of face-toface meetings in technology-supported self-organizing distributed teams. Professional Communication, IEEE Transactions on, 50(3):185–203, 2007. M. A. Cusumano and A. Gawer. The elements of platform leadership. MIT Sloan Management Review, 43(3):51 – 58, 2002. C. R. De Souza, D. Redmiles, L.-T. Cheng, D. Millen, and J. Patterson. How a good software practice thwarts collaboration: the multiple roles of apis in software development. In ACM SIGSOFT Software Engineering Notes, pages 221–230. ACM, 2004. T. Eisenmann, G. Parker, and M. W. V. Alstyne. Strategies for two-sided markets. Harvard Business Review, 84(10):92 – 101, 2006. U. Farooq and D. Zirkler. Api peer reviews: a method for evaluating usability of application programming interfaces. In Proceedings of the 2010 ACM conference on Computer supported cooperative work, pages 207–210. ACM, 2010. A. Gawer and M. A. Cusumano. How companies become platform leaders. MIT Sloan management review, 49(2):28–35, 2008. A. Ghazawneh. Towards a Boundary Resources Theory of Software Platforms. PhD thesis, Jönköping University, JIBS, Business Informatics, 2012. A. Ghazawneh and O. Henfridsson. Governing third-party development through platform boundary resources. In ICIS 2010 Proceedings, pages 1–18. AIS Electronic Library (AISeL), 2010. BIBLIOGRAPHY 88 A. Ghazawneh and O. Henfridsson. Micro-strategizing in platform ecosystems : A multiple case study. In Proceedings of the International Conference on Information Systems, ICIS 2011, Shanghai, China, December 4-7, 2011. Association for Information Systems 2011, pages 1–19. AIS, 2011. A. Ghazawneh and O. Henfridsson. Balancing platform control and external contribution in third-party development: the boundary resources model. Information Systems Journal, 23(2):173–192, 2012. T. R. G. Green and M. Petre. Usability analysis of visual programming environments: a ‘cognitive dimensions’ framework. Journal of Visual Languages & Computing, 7(2):131–174, 1996. G. K. Hanssen. A longitudinal case study of an emerging software ecosystem: Implications for practice and theory. Journal of Systems and Software, 85 (7):1455–1466, 2012. G. K. Hanssen and T. Dybå. Theoretical foundations of software ecosystems. In Proceedings of IWSECO, page 6. INFORMSCEUR Workshop Proceedings, 2012. P. Huang, M. Ceccagnoli, C. Forman, and D. Wu. When do isvs join a platform ecosystem? evidence from the enterprise software industry. In Proceedings of the 30th International Conference on Information Systems, pages 15–18. AIS, 2009. S. Jansen, S. Brinkkemper, and A. Finkelstein. Business network management as a survival strategy: A tale of two software ecosystems. In First Workshop on Software Ecosystems, pages 34–48. CEUR-WS, 2009a. S. Jansen, A. Finkelstein, and S. Brinkkemper. A sense of community: A research agenda for software ecosystems. In Software Engineering - Companion Volume, 2009. ICSE-Companion 2009. 31st International Conference on, pages 187–190. IEEE, 2009b. S. Jansen, S. Brinkkemper, J. Souer, and L. Luinenburg. Shades of gray: Opening up a software producing organization with the open software enterprise model. Journal of Systems and Software, 85(7):1495 – 1510, 2012. J. Kabbedijk and S. Jansen. Steering insight: An exploration of the ruby software ecosystem. In Software Business, pages 44–55. Springer, 2011. A. M. Kaplan and M. Haenlein. Users of the world, unite! the challenges and opportunities of social media. Business horizons, 53(1):59–68, 2010. BIBLIOGRAPHY 89 T. Kilamo, I. Hammouda, T. Mikkonen, and T. Aaltonen. From proprietary to open source–growing an open source ecosystem. Journal of Systems and Software, 85(7):1467 – 1478, 2012. R. Kline, A. Seffah, H. Javahery, M. Donayee, and J. Rilling. Quantifying developer experiences via heuristic and psychometric evaluation. In Human Centric Computing Languages and Environments, 2002. Proceedings. IEEE 2002 Symposia on, pages 34–36. IEEE, 2002. H. Lapp, S. Bala, J. P. Balhoff, A. Bouck, N. Goto, M. Holder, R. Holland, A. Holloway, T. Katayama, P. O. Lewis, et al. The 2006 nescent phyloinformatics hackathon: a field report. Evolutionary Bioinformatics Online, 3:287, 2007. S. Leckart. The hackathon is on: Pitching and programming the next killer app. Wired, 2012. URL http://www.wired.com/magazine/2012/02/ff_ hackathons/all/. K. Manikas and K. M. Hansen. Software ecosystems-a systematic literature review. Journal of Systems and Software, 86(5):1294–1306, 2013. D. G. Messerschmitt and C. Szyperski. Software ecosystem: understanding an indispensable technology and industry. The MIT press, 1st edition, 2003. ISBN 0262134322. M. D. Myers. Qualitative research in business & management. SAGE Publications Limited, 1st edition, 2008. ISBN 9781412921657. J. Nielsen, I. Frehr, and H. O. NYMAND. The learnability of hypercard as an object-oriented programming system. Behaviour & Information Technology, 10(2):111–120, 1991. M. B. Osvald and C. W. Robert. An inside view of ibm’s ’innovation jam’. MIT Sloan Management Review, 50(1):32–40, 2008. M. Raatikainen, M. Komssi, V. Dal Bianco, K. Kindström, and J. Järvinen. Industrial experiences of organizing a hackathon to assess a device-centric cloud ecosystem. In Proceedings of the 37th Annual International Computer Software & Applications Conference, 2013. W. Scacchi and T. A. Alspaugh. Understanding the role of licenses and evolution in open architecture software ecosystems. J. Syst. Softw., 85(7): 1479–1494, 2012. BIBLIOGRAPHY 90 W. R. Shadish, T. D. .Cook, and D. T. Campbell. Experimental and Quasiexperimental Designs for Generalized Causal Inference. Houghton Mifflin Company, 1st edition, 1963. ISBN 0395307872. J. Stylos, B. Graf, D. K. Busse, C. Ziegler, R. Ehret, and J. Karstens. A case study of api redesign for improved usability. In Visual Languages and Human-Centric Computing, 2008. VL/HCC 2008. IEEE Symposium on, pages 189–192. IEEE, 2008. E. von Hippel and R. Katz. Shifting innovation to users via toolkits. Management Science, 48(7):pp. 821–833, 2002. R. K. Yin. Case study research: Design and methods. SAGE Publications, Incorporated, 3rd edition, 2002. ISBN 0761925538. Y. Yoo, O. Henfridsson, and K. Lyytinen. Research commentary—the new organizing logic of digital innovation: An agenda for information systems research. Information Systems Research, 21(4):724–735, 2010. J. L. Zittrain. The generative internet. Harvard Law Review, 119(7):1974– 2040, 2006.
© Copyright 2026 Paperzz