free and open source development practices in the game...

8
focus 0740-7459/04/$20.00 © 2004 IEEE Published by the IEEE Computer Society IEEE SOFTWARE 59 only a small—but growing—number of sys- tematic empirical studies exist that explain how these communities produce software. 3–5 Similarly, little is known about how commu- nity participants coordinate software develop- ment across different settings, or about what software processes, work practices, and orga- nizational contexts they need for success. Academic communities, commercial enter- prises, and government agencies that want to benefit from FOSS development will need grounded models of its processes and practices to effectively invest their limited resources. My team at the UC Institute for Software Research investigated the software development prac- tices, social processes, technical system config- urations, organizational contexts, and interre- lationships that give rise to FOSS systems in different communities. In particular, we looked at the FOSS computer game commu- nity to provide examples of common develop- ment processes and practices. Understanding FOSS development practices No prior model or globally accepted frame- work exists that defines how FOSS is devel- oped in practice. The starting point is to inves- tigate FOSS practices in different communities. Researchers are investigating at least four diverse FOSS communities through empirical Free and Open Source Development Practices in the Game Community T he free and open source software (FOSS) approach lets commu- nities of like-minded participants develop software systems and related artifacts that are shared freely instead of offered as closed-source commercial products. Free (as in freedom) soft- ware and open source software are closely related but slightly different ap- proaches and licensing schemes for developing publicly shared software. Al- though the amount of popular literature that attests to FOSS is growing, 1,2 developing with open source software Walt Scacchi, University of California, Irvine Empirical studies of four distinct free and open source software development communities find at least five common types of development processes. These communities, particularly the computer game community, provide examples of common practices.

Upload: others

Post on 13-Oct-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Free and open source development practices in the game …wscacchi/Papers/New/FOSS-DevelopmentP… · The free and open source software (FOSS) approach lets commu-nities of like-minded

focus

0 7 4 0 - 7 4 5 9 / 0 4 / $ 2 0 . 0 0 © 2 0 0 4 I E E E P u b l i s h e d b y t h e I E E E C o m p u t e r S o c i e t y I E E E S O F T W A R E 5 9

only a small—but growing—number of sys-tematic empirical studies exist that explainhow these communities produce software.3–5

Similarly, little is known about how commu-nity participants coordinate software develop-ment across different settings, or about whatsoftware processes, work practices, and orga-nizational contexts they need for success.

Academic communities, commercial enter-prises, and government agencies that want tobenefit from FOSS development will needgrounded models of its processes and practices

to effectively invest their limited resources. Myteam at the UC Institute for Software Researchinvestigated the software development prac-tices, social processes, technical system config-urations, organizational contexts, and interre-lationships that give rise to FOSS systems indifferent communities. In particular, welooked at the FOSS computer game commu-nity to provide examples of common develop-ment processes and practices.

Understanding FOSS development practices

No prior model or globally accepted frame-work exists that defines how FOSS is devel-oped in practice. The starting point is to inves-tigate FOSS practices in different communities.

Researchers are investigating at least fourdiverse FOSS communities through empirical

Free and Open SourceDevelopment Practices inthe Game Community

The free and open source software (FOSS) approach lets commu-nities of like-minded participants develop software systems andrelated artifacts that are shared freely instead of offered asclosed-source commercial products. Free (as in freedom) soft-

ware and open source software are closely related but slightly different ap-proaches and licensing schemes for developing publicly shared software. Al-though the amount of popular literature that attests to FOSS is growing,1,2

developing with open source software

Walt Scacchi, University of California, Irvine

Empirical studies of four distinct free and open source softwaredevelopment communities find at least five common types ofdevelopment processes. These communities, particularly thecomputer game community, provide examples of common practices.

Page 2: Free and open source development practices in the game …wscacchi/Papers/New/FOSS-DevelopmentP… · The free and open source software (FOSS) approach lets commu-nities of like-minded

studies.3,4,6,7 These communities center onsoftware development for Web and Internetinfrastructure, computer games, software en-gineering design systems, and X-ray and deep-space astronomy.

Rather than examining FOSS developmentpractices for a single system (for example,GNU/Linux)—which might be interesting butis unrepresentative—or related systems fromthe same community (such as Internet infra-structure), my team’s focus was to identifygeneral FOSS practices both in and acrossthese diverse communities. These practiceswere empirically observed in different projectsfrom these communities using ethnographicmethods detailed elsewhere.6,7 Further, dataexhibits in the form of screenshots from proj-ects in the computer game community exem-plify the practices. (On the SourceForge Webportal, computer games are the fourth mostpopular category of FOSS projects, with morethan 8,000 out of the 70,000 total registeredprojects.) Comparable data from the othercommunities could serve equally well.

FOSS community participants often playdifferent roles, such as core developer, moduleowner, code contributor, code repository ad-ministrator, reviewer, or end user. They con-tribute software content (programs, artifacts,execution scripts, code reviews, comments,and so on) to Web sites in each community andcommunicate their content updates via onlinediscussion forums, threaded email messages,and newsgroup postings. Screenshots, how-toguides, and frequently asked questions alsohelp convey system-use scenarios. Softwarebug reports appearing in newsgroup messages,on bug-reporting Web pages, or in bug data-bases describe what isn’t working as expected.Administrators of these sites serve as gatekeep-ers by choosing what information to post,when and where on the site to post it, andwhether to create a site map that constitutes ataxonomic information architecture for typesof site- and project-specific content.

Software extension mechanisms and FOSSsoftware copyright licenses that ensure free-dom and openness are central to FOSS devel-opment. Extension mechanisms let peoplemodify the software system’s functionality orarchitecture via intra- or interapplicationscripting or external module plug-in architec-tures. Copyright licenses, most often derivedfrom the GNU General Public License, are at-

tached to any project-developed software sothat it can be further accessed, examined, de-bated, modified, and redistributed without fu-ture loss of these rights. These public softwarelicenses contrast with the restricted access ofclosed-source software systems and licenses.

In each of these four communities, partici-pants occasionally publish online manuals,technical articles, or scholarly research papersabout their software development efforts,1,3,8–10

which are then available for offline examina-tion and review.

Each type content is publicly available datathat can be collected, analyzed, and repre-sented in narrative ethnographies, quantitativestudies, or computational models of FOSS de-velopment processes. Significant examples ofeach kind of data have been collected, ana-lyzed, and modeled.3–5

FOSS development processes Unlike the software engineering world,

FOSS development communities don’t seem toreadily adopt modern software engineeringprocesses. FOSS communities develop soft-ware that’s extremely valuable, generally reli-able, globally distributed, made available foracquisition at little or no cost, and readilyused in its associated community. So, what de-velopment processes are they routinely usingand practicing?

From studies to date, they are employing atleast five types of FOSS development processes.I’ll briefly describe each process in turn, butdon’t construe any one as being independentor more important than the others. Further-more, it appears that these processes occurconcurrently, rather than strictly ordered as ina traditional life-cycle model or partially or-dered as in a spiral process model.

Requirements analysis and specificationSoftware requirements analysis helps iden-

tify the problems a software system should ad-dress and the form solutions might take. Re-quirements specification identifies an initialmapping of problems to system-based solu-tions. In FOSS development, how does re-quirements analysis occur, and where and howare requirements specifications described?

Studies to date have yet to find records offormal requirements elicitation, capture, analy-sis, and validation—the kind suggested bymodern software engineering textbooks—in

FOSSdevelopmentcommunitiesdon’t seem toreadily adopt

modernsoftware

engineeringprocesses.

6 0 I E E E S O F T W A R E w w w. c o m p u t e r. o r g / s o f t w a r e

Page 3: Free and open source development practices in the game …wscacchi/Papers/New/FOSS-DevelopmentP… · The free and open source software (FOSS) approach lets commu-nities of like-minded

any of the four communities.4 In general, youcan’t find them on FOSS Web sites or in “re-quirements specification” documents. Whatstudies have found and observed is different.

FOSS requirements take the form ofthreaded messages or discussions on Web sitesthat are available for open review, elaboration,refutation, or refinement. Requirements analy-sis and specification are implied activities.They routinely emerge as a by-product of com-munity discourse about what its softwareshould or shouldn’t do and who’ll take respon-sibility for contributing new or modified sys-tem functionality. The requirements appear asafter-the-fact assertions in private and publicemail discussion threads, ad hoc software arti-facts (such as source code fragments includedin a message), and site content updates thatcontinually emerge.4,11 More conventionally,requirements analysis, specification, and vali-dation aren’t performed as a necessary taskthat produces a mandated requirements deliv-erable. Instead, you find widespread practicesthat imply reading and sense-making of onlinecontent. You find interlinked discourse “webs”that effectively trace, condense, and solidifyinto retrospective software requirements. Allthe while, the project is globally accessible toexisting, new, or former FOSS project partici-pants. Figure 1 shows an example of a retro-spective requirements specification.

In short, requirements take these forms be-cause FOSS developers implement their sys-tems and then assert that certain features arenecessary. They don’t result from the explicitlystated needs of user representatives, focusgroups, or product marketing strategists.

Coordinated version control, system build,and staged incremental release-review

Software version control tools such as theConcurrent Versions System—a FOSS systemand document base10—are widely used inFOSS communities. Figure 2 shows one suchFOSS repository on the Web.

Tools such as CVS serve as both a central-ized mechanism for coordinating FOSS devel-opment and a venue for mediating controlover which software enhancements, exten-sions, or upgrades will be checked in to thearchive. If checked in, these updates will beavailable to the community as part of the al-pha, beta, candidate, or official released ver-sions, as well as the daily-build release.

Software version control, as part of a soft-ware configuration management activity, is re-current. It requires coordination but lets youstabilize and synchronize dispersed, somewhatinvisible development. This coordination isnecessary because decentralized code contribu-tors and reviewers might independently con-tribute software updates or reviews that over-lap, conflict, or generate unwanted side effects.

Each project team or CVS repository ad-ministrator must decide what can be checkedin and who can and can’t check in new or mod-ified software source code content. Some proj-ects make these policies explicit through a vot-ing scheme,9 and in other projects they remaininformal, implicit, and subject to negotiationwith the designated module or version owner.In either case, the team must coordinate ver-sion updates for a new system build and releaseto take place. Subsequently, developers whowant to submit updates to the community’sshared repository rely primarily on online dis-cussions in lean media form, such as threadedemail messages posted on a site,5 rather thanhaving to deal with onerous system configura-tion control committees or seemingly arbitraryproduct delivery schedules. So, joint use of ver-

J a n u a r y / F e b r u a r y 2 0 0 4 I E E E S O F T W A R E 6 1

Figure 1. Computer-game software requirements specifiedas retrospectively asserted features. (figure courtesy of www.bnetd.org, July 2002)

Page 4: Free and open source development practices in the game …wscacchi/Papers/New/FOSS-DevelopmentP… · The free and open source software (FOSS) approach lets commu-nities of like-minded

sioning, system building, online communica-tion, and file-browsing and file-transfer toolsmediates the process of coordinated versioncontrol, system build, release, and review.

Maintenance as evolutionary redevelopment,reinvention, and revitalization

Software maintenance—adding and sub-tracting system functionality, debugging, re-structuring, tuning, conversion (for example,internationalization), and migration acrossplatforms—is a widespread, recurring processin FOSS development communities. Perhapsthis is no surprise, considering maintenance isgenerally viewed as the major activity associ-ated with a software system across its life cy-cle. However, the traditional label of softwaremaintenance doesn’t quite fit what you see oc-curring in different FOSS communities. In-stead, it might be better to characterize theoverall evolutionary dynamic of FOSS as rein-vention. Reinvention occurs through sharing,examining, modifying, and redistributing con-cepts and techniques that have appeared inclosed-source systems, research and textbookpublications, conferences, and developer-userdiscourse across multiple FOSS projects. Thus,

reinvention is a continually emerging source ofadaptation, learning, and improvement inFOSS functionality and quality.

FOSS systems seem to evolve through mi-nor improvements or mutations that are ex-pressed, recombined, and redistributed acrossmany releases with short life cycles. FOSS endusers who act as developers or maintainerscontinually produce these mutations. They ap-pear initially in daily system builds. The mod-ifications or updates are then expressed as ten-tative alpha, beta, or release versions thatmight survive redistribution and review. Then,they might be recombined and reexpressedwith other mutations in producing a new, sta-ble release version. As a result, these muta-tions articulate and adapt a FOSS system towhat its user-developers want it to do whilereinventing the system.

FOSS systems coevolve with their develop-ment communities; one’s evolution dependson the other’s. In other words, a project withfew developers (most typically one) won’t pro-duce and sustain a viable system unless or un-til the team reaches a critical mass of betweenfive and 15 core developers. If this happens,the system might be able to grow in size andcomplexity at a sustained exponential rate, de-fying the laws of software evolution that haveheld for decades.12

Closed-source software systems thought tobe dead or beyond their useful product life ormaintenance period may be revitalized throughredistributing and opening their source code.However, this might only succeed in applica-tion domains with devoted, enthusiastic user-developers who are willing to invest time andskill to keep their cultural heritage alive. TheMultiple Arcade Machine Emulator site (www.mame.net) for vintage arcade games shows thatthousands of computer arcade games from the1980s and 1990s are being revitalized throughmigration to FOSS-system support.

Project management and career developmentFOSS development teams can take the or-

ganizational form of interlinked layered meri-tocracies operating as a dynamically organ-ized but loosely coupled virtual enterprise.13

A layered meritocracy9 is a hierarchical orga-nizational form that centralizes and concen-trates certain kinds of authority, trust, and re-spect for experience and accomplishmentwithin the team. However, it doesn’t imply a

6 2 I E E E S O F T W A R E w w w. c o m p u t e r. o r g / s o f t w a r e

Figure 2. A view into aWeb-accessible CVS(Concurrent VersionsSystem) configurationarchive of softwaresource code files for thegame Quake. (figurecourtesy of the Quake-Forge Project)

Page 5: Free and open source development practices in the game …wscacchi/Papers/New/FOSS-DevelopmentP… · The free and open source software (FOSS) approach lets commu-nities of like-minded

single authority, because decision-making canbe shared among core developers who act aspeers at the top echelon. Instead, meritocra-cies tend to embrace incremental innovations,such as evolutionary mutations to an existingsoftware code base, over radical ones. Radicalchange involves exploring or adopting untriedor sufficiently different system functionality,architecture, or development methods. A mi-nority of code contributors who challenge thecore developers’ status quo might advocateradical changes. However, their success usu-ally implies creating and maintaining a sepa-rate version of the system and potentially los-ing a critical mass of other FOSS developers.So incremental mutations tend to win outover time.

Figure 3 illustrates the form of a meritoc-racy common to many FOSS projects.4 In thisform, software development work appears tobe logically centralized while physically dis-tributed in an autonomous and decentralizedmanner.13 However, it’s neither simply a“cathedral” nor a “bazaar.”1 Instead, whenlayered meritocracy operates as a virtual en-terprise, it relies on virtual project manage-ment to mobilize, coordinate, control, build,and assure the quality of FOSS developmentactivities. It could invite or encourage systemcontributors to come forward and take ashared, individual responsibility that’ll serveto benefit the FOSS collective of user-develop-ers. VPM requires several people to act asteam leader, subsystem manager, or systemmodule owner in either a short- or long-termmanner. People take roles on the basis of theirskill, accomplishments, availability, and beliefin community development. Figure 4 shows anexample of VPM.

Project participants higher up in the meri-tocracy have greater perceived authority thanthose lower down. But these relationships areonly effective if everyone agrees on theirmakeup and legitimacy. Administrative or co-ordination conflicts that can’t be resolved canend up either splitting or forking a new systemversion. Then the conflicting participants musttake responsibility for maintaining that versionby reducing their stake in the ongoing projector by simply conceding the position in conflict.

VPM exists in FOSS communities to enableeffective control via community decision-making and Web site and CVS repository admin-istration. Similarly, it exists to mobilize and sus-

tain the use of privately owned resources thatthe community can use (for example, Webservers, network access, site administrator la-bor, skill, and effort). Finally, some preliminaryevidence suggests that, compared to projectswith traditional software project management,

J a n u a r y / F e b r u a r y 2 0 0 4 I E E E S O F T W A R E 6 3

Elder Elder

Leader

Regular

Novice

Visitor

Leader

Regular

Staff

VolunteersContractors

Enthusiasts

Figure 3. A layered meritocracy and role hierarchy.

Figure 4. A description of how a FOSS computer game developmentproject organizes and manages itself. This statement serves as an organizational surrogate to denote administrative authority, and includes an invitation to those who seek such project authority. (figure courtesy of PlaneShift)

Page 6: Free and open source development practices in the game …wscacchi/Papers/New/FOSS-DevelopmentP… · The free and open source software (FOSS) approach lets commu-nities of like-minded

FOSS projects can produce higher quality sys-tems,3 perhaps owing to VPM.

Traditional software project managementstresses planning and control. Lawrence Lessigobserves that source code intentionally or un-intentionally achieves a mode of social controlover those who use it.15 So, in the case ofFOSS development, Lessig’s observation sug-gests that source code controls or constrainsuser–system interaction, while the code insoftware development tools, Web sites, andproject assets controls, constrains, or facili-tates developer interaction with the evolvingFOSS system code. CVS enables some form ofsocial control. However, the fact that thesesystems’ source codes are freely availablemeans that user-developers can examine, re-vise, and redistribute patterns of social controland interaction, thus favoring one form ofproject organization and user–system interac-tion over others. Thus, this dimension of VPMis open to manipulation by core developers.They can encourage certain patterns of devel-opment and social control and discourageones that might not advance the collectiveneeds of project participants.

FOSS developers have complex motives forbeing willing to allocate their time, skill, andeffort to their systems’ ongoing evolution.They might simply think the work is fun, per-sonally rewarding, or a means to exercise andimprove their technical competence in a waythat they can’t in their formal jobs or fields.6

In FOSS computer game communities, “peo-ple even get hired for doing these things,” asFigure 5 shows. Some FOSS developers createcomputer game modifications (game mods)that widely circulate and generate substantialsales revenue for the game’s proprietary ven-dor, and they sometimes share in the profits.8

Furthermore, being a central node in a net-work of software developers who intercon-nect multiple FOSS projects doesn’t onlybring social capital and recognition frompeers. It also lets independent FOSS systemsmerge into larger ones that gain the criticalmass of developers to grow even more and at-tract even larger user-developer communities.So, it might be surprising that more than 60percent of the FOSS developers surveyed in arecent study6 reported participating in two to 10 FOSS projects. This effectively intercon-nects not only independent system projectsinto a larger system architectures, but also in-terlinks their meritocracies, VPM practices,and social control. This enables the collectivesystem and community to grow more robusttogether.

Software technology transfer and licensingSoftware technology transfer is an impor-

tant and often neglected process in the aca-demic software engineering community. How-ever, the diffusion, adoption, installation, androutine use of FOSS software systems andtheir Web-based assets are central to the sys-tems’ ongoing evolution. Transferring FOSStechnology from existing Web sites to organi-zational practice is a community and projectteam-building process.14 FOSS developerspublicize and share their project assets byadopting and using FOSS project Web sites—a communitywide practice. You can buildthese Web sites using FOSS content manage-ment systems (such as PhP-Nuke) and servethem using FOSS Web servers (Apache), data-base systems (MySQL), or application servers(JBoss). User-developers are increasingly ac-cessing these sites via FOSS Web browsers(Mozilla). Furthermore, ongoing FOSS proj-

6 4 I E E E S O F T W A R E w w w. c o m p u t e r. o r g / s o f t w a r e

Figure 5. This page highlights career development opportunities for would-be computergame developers viaopen source gamemods. (figure courtesyof Epic Games)

Page 7: Free and open source development practices in the game …wscacchi/Papers/New/FOSS-DevelopmentP… · The free and open source software (FOSS) approach lets commu-nities of like-minded

ects might use dozens of FOSS developmenttools as stand-alone systems (CVS), integrateddevelopment environments (NetBeans orEclipse), or their own application’s subsystemcomponents. These projects similarly employasynchronous project communications sys-tems that are persistent, searchable, traceable,public, and globally accessible.

FOSS technology transfer isn’t an engineer-ing process—at least not yet. It’s instead a so-ciotechnical process that entails the develop-ment of constructive social relationships;informally negotiated social agreements; and aroutine willingness to search, browse, down-load, and try out FOSS assets. It’s also a com-mitment to continually participate in public,Web-based discourse and shared representa-tions about FOSS systems, much like the otherprocesses identified earlier. Community build-ing and sustained participation are essential,recurring activities that let FOSS persist with-out centrally planned and managed corporatesoftware development centers.

FOSS systems, development assets, tools,and project Web sites serve as a venue for so-cializing, building relationships and trust,sharing, and learning with others. Some opensource software projects have made develop-ing such social relationships their primaryproject goal. Figure 6 shows such a system, inwhich developers took an existing networkedgame system and created an open source gamemod that transformed it into a venue for socialactivity. Many contemporary visual artists arealso creating game mods as the basis for new artworks (see examples at www.selectparks.net).

An overall, essential part of what enablesthe transfer and practice of FOSS development,and what distinguishes it from traditional soft-ware engineering, is the use and reiteration ofFOSS public licenses. More than half of the60,000 FOSS projects registered at Source-Forge use the GNU General Public License.The GPL preserves and reiterates the beliefsand practices of sharing, examining, modify-ing, and redistributing FOSS systems and as-sets as property rights for collective freedom.Open source software projects that comingleassets that weren’t created as free propertyhave instead adopted variants that relax orstrengthen the rights and conditions the GPLlays out. Visit www.opensource.org or www.creativecommons.org for general informationon how to create these licenses.

F ree and open source software develop-ment practices give rise to a new viewof how complex software systems can

be constructed, deployed, and evolved. FOSSprojects don’t adhere to traditional softwareengineering life-cycle principles from moderntextbooks. They rely on lean electronic com-munication media, virtual project manage-ment, and version management mechanismsto coordinate globally dispersed developmentefforts. They coevolve with their developmentcommunities, which reinvent and transfersoftware technologies as part of their team-building process. Practices to propagate FOSStechnology and culture are intertwined andmutually situated to benefit motivated partici-pants and contributors.

So, software engineering managers and de-velopers working in traditional proprietary,closed-source, centrally managed, and colo-cated software development centers might rec-ognize that viable alternatives exist to the prac-tices and principles they’ve been following.These FOSS processes offer new directions fordeveloping complex software systems.

J a n u a r y / F e b r u a r y 2 0 0 4 I E E E S O F T W A R E 6 5

Figure 6. A first-personshooter game (UnrealTournament) that’sbeen modified andtransformed into a 3Dvirtual environment forsocializing and virtualdancing with in-gameavatars. (figure cour-tesy of Martin C. Martin)

Page 8: Free and open source development practices in the game …wscacchi/Papers/New/FOSS-DevelopmentP… · The free and open source software (FOSS) approach lets commu-nities of like-minded

AcknowledgmentsGrants IIS-0083075, ITR-0205679, ITR-0205724,

and ITR-0350754 from the US National Science Foun-dation supported this research. Andrew Henderson andJames Neighbors commented on an earlier draft.

References1. C. DiBona, S. Ockman, and M. Stone, Open Sources:

Voices from the Open Source Revolution, O’Reilly andAssociates, 1999.

2. S. Williams, Free as in Freedom: Richard Stallman’s Cru-sade for Free Software, O’Reilly and Associates, 2002.

3. A. Mockus, R.T. Fielding, and J. Herbsleb, “Two CaseStudies of Open Source Software Development: Apacheand Mozilla,” ACM Trans. Software Eng. and Method-ology, vol. 11, no. 3, July 2002, pp. 309–346.

4. W. Scacchi, “Understanding the Requirements for De-veloping Open Source Software Systems,” IEE Proc.—Software, vol. 149, no. 1, Feb. 2002, pp. 24–39.

5. Y. Yamauchi et al., “Collaboration with Lean Media:How Open-Source Software Succeeds,” Proc. ComputerSupported Cooperative Work Conf. (CSCW 00), ACMPress, pp. 329–338.

6. A. Hars and S. Ou, “Working for Free? Motivations for

Participating in Open-Source Software Projects,” Int’l J.Electronic Commerce, vol. 6, no. 3, Spring 2002, pp.25–39.

7. S. Viller and I. Sommerville, “Ethnographically In-formed Analysis for Software Engineers,” Int’l. J.Human–Computer Studies, vol. 53, no. 1, July 2000,pp. 169–196.

8. C. Cleveland, “The Past, Present, and Future of PCMod Development,” Game Developer, vol. 8, no. 2,Feb. 2001, pp. 46–49.

9. R.T. Fielding, “Shared Leadership in the Apache Project,”Comm. ACM, vol. 42, no. 4, Apr. 1999, pp. 42–43.

10. K. Fogel, Open Source Development with CVS, Corio-lis Press, 1999.

11. D. Truex, R. Baskerville, and H. Klein, “Growing Sys-tems in an Emergent Organization,” Comm. ACM, vol.42, no. 8, Aug. 1999, pp. 117–123.

12. M.M. Lehman, “Programs, Life Cycles, and Laws ofSoftware Evolution,” Proc. IEEE, vol. 68, no. 9, Sept.1980, pp. 1060–1078.

13. J. Noll and W. Scacchi, “Supporting Software Develop-ment in Virtual Enterprises,” J. Digital Information, vol.1, no. 4, Jan. 1999, http://jodi.ecs.soton.ac.uk/Articles/v01/i04/Noll.

14. A.J. Kim, Community-Building on the Web: SecretStrategies for Successful Online Communities, PeachpitPress, 2000.

15. L. Lessig, CODE and Other Laws of Cyberspace, BasicBooks, 1999.

For more information on this or any other computing topic, please visit ourDigital Library at http://computer.org/publications/dlib.

6 6 I E E E S O F T W A R E w w w. c o m p u t e r. o r g / s o f t w a r e

About the Author

Walt Scacchi is a senior research computer scientist and research faculty member at theInstitute for Software Research and director of research for the Laboratory for Game Cultureand Technology, both at the University of California, Irvine. His research interests include opensource software development, software process engineering, computer game culture and tech-nology, and organizational studies of system development. He received his PhD in informationand computer science from UC Irvine. He is a member of the AAAI, ACM, and IEEE. Contacthim at the Institute for Software Research, Univ. of California, Irvine, Irvine, CA 92697-3425;[email protected]; www.isr.uci.edu/open-source-research.html.

HAVE YOU EVER HAD AN EXPERIENCEin constructing software that gave you un-expected insights into the larger problemof software engineering and developmentof high-quality software? If so, IEEE Soft-ware encourages you to submit your ex-periences, insights, and observations sothat others can also benefit from them.

We are looking for articles that en-courage a better understanding of thecommonality between programming inthe small and programming in the large,and especially ones that explore thelarger implications of hands-on softwareconstruction experiences.

Submissions are accepted at any time.

C A L L

F O R

A R T I C L E S Software ConstructionPOSSIBLE TOPICS INCLUDE BUT ARE NOTLIMITED TO THE FOLLOWING:

• Coding for high-availability applications

• Coding for compatibility and extensibility

• Coding for network interoperability

• Effective use of standards by programmers

• Lessons learned from game programming

• Techniques for writing virus-proof software

• Agents: When, where, and how to use them

• PDAs and the future of “wearable” software

• Is “agile” programming fragile programming?

• Prestructuring versus restructuring of code

• Integration of testing and construction

• Aspect-oriented programming

• Impacts of language choice on applicationcost, stability, and durability