Recently, Open-Source Software (OSS) has significant changed our understanding of software development. Since the 1980s, OSS has continued to grow in both quality and quantity (more than 64,000,000 projects are hosted in GitHub alone), and has become a source of software for numerous organizations. OSS development is different from traditional development in several aspects: projects are open to all the developers, teams are decentralized, resources are rapidly shared, new versions are frequently released, and online communities of developers have formed [1][2]. These characteristics enable users from all over the world, regardless of their prior training or experience, to create software in a distributed and collaborative manner. Thus, software development is greatly facilitated through this openness and massive participation, i.e., software development will profit from an efficient ecosystem powered by crowd wisdom [3][4]. However, development based on crowd wisdom also has several limitations, such as guaranteeing the progress and quality of production process. Crowd wisdom is essentially elusive and unpredictable. Without central control, OSS development can hardly guarantee quality or trustworthiness of software systems, which is intolerable for most commercial products. For the above reasons, we do not advocate that the crowd wisdom method should replace the engineering method. Instead, we propose that these two paradigms should be combined. Based on this idea we design and implement TRUSTIE which balance the crowd wisdom and software trustworthiness in a well-controlled way. TRUSTIE enables crowd-oriented collaboration among internal development teams and the external crowds by combining the software creation and software manufacturing. Ecosystem-based software development In the world of open source, software is being developed based on ecosystem. Everything that is involved in the development and evolution of a software project belongs to its ecosystem. Figure 1 gives an abstract illustration of the ecosystem of Rails, where red kernel node represents the Rails core project and other nodes represent the satellite projects in Rails ecosystem. All of those satellite projects have technical relationships with the Rails core project, i.e., their runtime or development environment depends on Rails. Compared to the single project, the development of ecosystem-based projects brings us new opportunities as well as new challenges. Contributors: The openness of open source ecosystem leads to the diversity of the contributors. Every developer who is interested in a specific project can contribute to its ecosystem. Besides the project leader and manager, a great number of peripheral contributors volunteer to act as issue reporter, bug fixer, patch reviewer, code tester and other characters that are crucial to the well development of an open source project. In some scenarios, even the end users can participate in the discussion of a specific topic and provide their feedbacks. The aggregated performance of the active crowd will often outperform any single elite or small teams of elites.
[1]
Jeff Howe,et al.
Crowdsourcing: Why the Power of the Crowd Is Driving the Future of Business
,
2008,
Human Resource Management International Digest.
[2]
Premkumar T. Devanbu,et al.
Quality and productivity outcomes relating to continuous integration in GitHub
,
2015,
ESEC/SIGSOFT FSE.
[3]
Brian A Vander Schee.
Crowdsourcing: Why the Power of the Crowd Is Driving the Future of Business
,
2009
.
[4]
Gang Yin,et al.
Research on network-based large-scale collaborative development and evolution of trustworthy software
,
2014
.
[5]
Don Tapscott,et al.
Wikinomics: How Mass Collaboration Changes Everything
,
2006
.
[6]
Walt Scacchi,et al.
Understanding the requirements for developing open source software systems
,
2002,
IEE Proc. Softw..
[7]
Gang Yin,et al.
Mining and recommending software features across multiple web repositories
,
2013,
Internetware.
[8]
Gang Yin,et al.
Social media in GitHub: the role of @-mention in assisting software development
,
2015,
Science China Information Sciences.
[9]
Jan Bosch,et al.
Social Networking Meets Software Development: Perspectives from GitHub, MSDN, Stack Exchange, and TopCoder
,
2013,
IEEE Software.
[10]
Tao Xie,et al.
User-Perceived Service Availability: A Metric and an Estimation Approach
,
2009,
2009 IEEE International Conference on Web Services.
[11]
Gang Yin,et al.
Reviewer recommendation for pull-requests in GitHub: What can we learn from code review and bug assignment?
,
2016,
Inf. Softw. Technol..
[12]
Tao Xie,et al.
Internetware: A Software Paradigm for Internet Computing
,
2012,
Computer.
[13]
Wei Li,et al.
Crowd intelligence in AI 2.0 era
,
2017,
Frontiers of Information Technology & Electronic Engineering.
[14]
Premkumar T. Devanbu,et al.
Wait for It: Determinants of Pull Request Evaluation Latency on GitHub
,
2015,
2015 IEEE/ACM 12th Working Conference on Mining Software Repositories.
[15]
John Noll.
Requirements Acquisition in Open Source Development: Firefox 2.0
,
2008,
OSS.
[16]
Gang Yin,et al.
Mining Software Profile across Multiple Repositories for Hierarchical Categorization
,
2013,
2013 IEEE International Conference on Software Maintenance.
[17]
Audris Mockus,et al.
Developer fluency: achieving true mastery in software projects
,
2010,
FSE '10.