<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>The Role of Software Licenses in Open Architecture Ecosystems</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Thomas A. Alspaugh</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Hazeline U. Asuncion</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Walt Scacchi</string-name>
          <email>wscacchig@ics.uci.edu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Institute for Software Research University of California</institution>
          ,
          <addr-line>Irvine Irvine, CA 92697-3455</addr-line>
          <country country="US">USA</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2009</year>
      </pub-date>
      <fpage>4</fpage>
      <lpage>18</lpage>
      <abstract>
        <p>The role of software ecosystems in the development and evolution of open architecture systems has received insu cient consideration. Such systems are composed of heterogeneously-licensed components, open source or proprietary or both, in an architecture in which evolution can occur by evolving existing components or by replacing them. The software licenses of the components both facilitate and constrain the system's ecosystem, and the rights and duties of the licenses are crucial in producing an acceptable system. We discuss software ecosystems of open architecture systems from the perspective of an architect or an acquisition organization, and outline how our automated tool and environment help address their challenges, support reuse, and assist in managing coevolution and component interdependence.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p> 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 </p>
    </sec>
    <sec id="sec-2">
      <title>Introduction</title>
      <p>
        A substantial number of development organizations are adopting a strategy in
which a software-intensive system (one in which software plays a crucial role) is
developed with an open architecture (OA) [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], whose components may be open
source software (OSS) or proprietary with open application programming
interfaces (APIs). Such systems evolve not only through the evolution of their
individual components, but also through replacement of one component by another,
possibly from a di erent producer or under a di erent license. With this
approach, the organization becomes an integrator of components largely produced
elsewhere, connected with shims as necessary to achieve the desired result. An
OA development process results in an ecosystem in which the integrator is
inuenced from one direction by the goals, interfaces, license choices, and release
cycles of the component producers, and in another direction by the needs of its
consumers. As a result the software components are reused more widely, and the
resulting OA systems can achieve reuse bene ts such as reduced costs, increased
reliability, and potentially increased agility in evolving to meet changing needs.
An emerging challenge is to realize the bene ts of this approach when the
individual components are heterogeneously licensed, each potentially with a di erent
license, rather than a single OSS license as in uniformly-licensed OSS projects
or a single proprietary license as in proprietary development.
      </p>
      <p>This challenge is inevitably entwined with the software ecosystems that arise
for OA systems. We nd that an OA software ecosystem involves organizations
and individuals producing and consuming components, and supply paths from
producer to consumer; but also
{ the OA of the system(s) in question,
{ the open interfaces met by the components,
{ the degree of coupling in the evolution of related components, and
{ the rights and obligations resulting from the software licenses under which
various components are released, that propagate from producers to
consumers.</p>
      <p>Producers</p>
      <p>Mozilla
Foundation</p>
      <p>Gnome
Foundation</p>
      <p>AbiSource
Community</p>
      <p>Corel
Components</p>
      <p>Thunderbird
license</p>
      <p>Firefox
license</p>
      <p>Gnome
license</p>
      <p>AbiWord</p>
      <p>WordPerfect
license
license
Integrators
OA Systems</p>
      <p>System
Consumers</p>
      <p>Independent</p>
      <p>Software
Vendors</p>
      <p>Government</p>
      <p>Contractors
sys. rights,
obligations
sys. rights,
obligations
sys. rights,
obligations
In order to most e ectively use an OA approach in developing and evolving
a system, it is essential to consider this OA ecosystem. An OA system draws
on components from proprietary vendors and open source projects. Its
architecture is made possible by the existing general ecosystem of producers, from
which the initial components are chosen. The choice of a speci c OA begins
a specialized software ecosystem involving components that meet (or can be
shimmed to meet) the open interfaces used in the architecture. We do not claim
this is the best or the only way to reuse components or produce systems, but
it is an ever more widespread way. In this paper we build on previous work on
heterogeneously-licensed systems [2{4] by examining how OA development
affects and is a ected by software ecosystems, and the role of component licenses
in OA software ecosystems.</p>
      <p>
        A motivating example of this approach is the Unity game development tool,
produced by Unity Technologies [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Its license agreement, from which we quote
below, lists eleven distinct licenses and indicates the tool is produced, apparently
using an OA approach, using at least 18 externally produced components or
groups of components:
      </p>
      <p>An OA system can evolve by a number of distinct mechanisms, some of which
are common to all systems but others of which are a result of heterogeneous
component licenses in a single system.</p>
      <p>By component evolution | One or more components can evolve, altering the
overall system's characteristics.</p>
      <p>By component replacement | One or more components may be replaced
by others with di erent behaviours but the same interface, or with a di erent
interface and the addition of shim code to make it match.</p>
      <p>By architecture evolution | The OA can evolve, using the same components
but in a di erent con guration, altering the system's characteristics. For
example, as discussed in Section 4, changing the con guration in which a component
is connected can change how its license a ects the rights and obligations for the
overall system.</p>
      <p>By component license evolution | The license under which a component
is available may change, as for example when the license for the Mozilla core
components was changed from the Mozilla Public License (MPL) to the current
Mozilla Disjunctive Tri-License; or the component may be made available under
a new version of the same license, as for example when the GNU General Public
License (GPL) version 3 was released.</p>
      <p>By a change to the desired rights or acceptable obligations | The OA
system's integrator or consumers may desire additional license rights (for
example the right to sublicense in addition to the right to distribute), or no longer
desire speci c rights; or the set of license obligations they nd acceptable may
change. In either case the OA system evolves, whether by changing components,
evolving the architecture, or other means, to provide the desired rights within
the scope of the acceptable obligations. For example, they may no longer be
willing or able to provide the source code for components within the reciprocality
scope of a GPL-licensed module.</p>
      <p>
        The interdependence of integrators and producers results in a co-evolution
of software within an OA ecosystem. Closely-coupled components from di erent
producers must evolve in parallel in order for each to provide its services, as
evolution in one will typically require a matching evolution in the other.
Producers may manage their evolution with a loose coordination among releases,
for example as between the Gnome and Mozilla organizations. Each release of a
producer component create a tension through the ecosystem relationships with
consumers and their releases of OA systems using those components, as
integrators accomodate the choices of available, supported components with their own
goals and needs. As discussed in our previous work [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], license rights and
obligations are manifested at each component's interface, then mediated through the
system's OA to entail the rights and corresponding obligations for the system
as a whole. As a result, integrators must frequently re-evaluate an OA system's
rights and obligations. In contrast to homogeneously-licensed systems, license
change across versions is a characteristic of OA ecosystems, and architects of
OA systems require tool support for managing the ongoing licensing changes.
      </p>
      <p>
        We propose that such support must have several characteristics.
{ It must rest on a license structure of rights and obligations (Section 5),
focusing on obligations that are enactable and testable. For example, many
OSS licenses include an obligation to make a component's modi ed code
public, and whether a speci c version of the code is public at a speci ed
Web address is both enactable (it can be put into practice) and testable. In
contrast, the GPL v.3 provision \No covered work shall be deemed part of an
e ective technological measure under any applicable law ful lling obligations
under article 11 of the WIPO copyright treaty" is not enactable in any
obvious way, nor is it testable | how can one verify what others deem?
{ It must take account of the distinctions between the design-time,
buildtime, and distribution-time architectures (Sections 4, 5, 6) and the rights
and obligations that come into play for each of them.
{ It must distinguish the architectural constructs signi cant for software
licenses, and embody their e ects on rights and obligations (Section 4).
{ It must de ne license architectures (Section 6).
{ It must provide an automated environment for creating and managing
license architectures. We are developing a prototype that manages a license
architecture as a view of its system architecture [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
{ Finally, it must automate calculations on system rights and obligations so
that they may be done easily and frequently, whenever any of the factors
a ecting rights and obligations may have changed (Section 7).
      </p>
      <p>In the remainder of this paper, we survey some related work (Section 2),
provide an overview of OSS licenses and projects (Section 3), de ne and discuss
characteristics of open architectures (Section 4), introduce a structure for licenses
(Section 5), outline license architectures (Section 6), sketch our approach for
license analysis (Section 7), and conclude (Section 8).
2</p>
    </sec>
    <sec id="sec-3">
      <title>Related Work</title>
      <p>
        Jansen et al. discuss the perspective of software vendors on software ecosystems
[
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. Scacchi examines how free/open source software projects become part of a
multi-project ecosystem, interdependent in the context of evolution and reuse
[
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. The present work examines the point of view of organizations that develop
or acquire OA systems.
      </p>
      <p>
        Brown and Booch discuss issues that arise in the reuse of OSS components,
such as that interdependence causes changes to propagate, and versions of the
components evolve asynchronously giving rise to co-evolution of interrelated code
in the OA [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. If the components evolve, the OA system itself is evolving. The
evolution can also include changes to the licenses, and the licenses can change
from version to version.
      </p>
      <p>
        Ven and Mannaert discuss the challenges independent software vendors face
in combining OSS and proprietary components, with emphasis on how OSS
components evolve and are maintained in this context [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ].
      </p>
      <p>
        Scacchi and Alspaugh examine the features of software architecture and OSS
licenses that a ect the success of an OA strategy [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>
        There are a number of discussions of OSS licenses, such as Rosen [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] and
Fontana et al. [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
3
      </p>
    </sec>
    <sec id="sec-4">
      <title>Open-Source Software (OSS)</title>
      <p>Traditional proprietary licenses allow a company to retain control of software it
produces, and restrict the access and rights that outsiders can have. OSS licenses,
on the other hand, are designed to encourage sharing and reuse of software,
and grant access and as many rights as possible. OSS licenses are classi ed as
academic or reciprocal. Academic OSS licenses such as the Berkeley Software
Distribution (BSD) license, the Massachusetts Institute of Technology license,
the Apache Software License, and the Artistic License, grant nearly all rights
to components and their source code, and impose few obligations. Anyone can
use the software, create derivative works from it, or include it in proprietary
projects. Typical academic obligations are simply to not remove the copyright
and license notices.</p>
      <p>Reciprocal OSS licenses take a more active stance towards sharing and reusing
software by imposing the obligation that reciprocally-licensed software not be
combined (for various de nitions of \combined") with any software that is not
in turn also released under the reciprocal license. The goals are to increase the
domain of OSS by encouraging developers to bring more components under its
aegis, and to prevent improvements to OSS components from vanishing behind
proprietary licenses. Example reciprocal licenses are GPL, the Mozilla Public
License (MPL), and the Common Public License.</p>
      <p>Both proprietary and OSS licenses typically disclaim liability, assert no
warranty is implied, and obligate licensees to not use the licensor's name or
trademarks. Newer licenses often cover patent issues as well, either giving a restricted
patent license or explicitly excluding patent rights.</p>
      <p>The Mozilla Disjunctive Tri-License licenses the core Mozilla components
under any one of three licenses (MPL, GPL, or the GNU Lesser General Public
License LGPL); OSS developers can choose the one that best suits their needs
for a particular project and component.</p>
      <p>
        The Open Source Initiative (OSI) maintains a widely-respected de nition of
\open source" and gives its approval to licenses that meet it [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. OSI maintains
and publishes a repository of approximately 70 approved OSS licenses.
      </p>
      <p>Common practice has been for an OSS project to choose a single license
under which all its products are released, and to require developers to contribute
their work only under conditions compatible with that license. For example, the
Apache Contributor License Agreement grants enough of each author's rights
to the Apache Software Foundation for the foundation to license the resulting
systems under the Apache Software License. This sort of rights regime, in which
the rights to a system's components are homogenously granted and the system
has a single well-de ned OSS license, was the norm in the early days of OSS and
continues to be practiced.
4</p>
    </sec>
    <sec id="sec-5">
      <title>Open Architecture (OA)</title>
      <p>
        Open architecture (OA) software is a customization technique introduced by
Oreizy [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] that enables third parties to modify a software system through its
exposed architecture, evolving the system by replacing its components.
Increasingly more software-intensive systems are developed using an OA strategy, not
only with OSS components but also proprietary components with open APIs
(e.g. [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]). Using this approach can lower development costs and increase
reliability and function [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Composing a system with heterogeneously-licensed
components, however, increases the likelihood of con icts, liabilities, and no-rights
stemming from incompatible licenses. Thus, in our work we de ne an OA
system as a software system consisting of components that are either open source
or proprietary with open API, whose overall system rights at a minimum allow
its use and redistribution, in full or in part.
      </p>
      <p>
        It may appear that using a system architecture that incorporate OSS
components and uses open APIs will result in an OA system. But not all such
architectures will produce an OA, since the (possibly empty) set of available
license rights for an OA system depends on: (a) how and why OSS and open
APIs are located within the system architecture, (b) how OSS and open APIs
are implemented, embedded, or interconnected, and (c) the degree to which the
licenses of di erent OSS components encumber all or part of a software system's
architecture into which they are integrated [
        <xref ref-type="bibr" rid="ref13 ref3">3, 13</xref>
        ].
      </p>
      <p>
        The following kinds of software elements appearing in common software
architectures can a ect whether the resulting systems are open or closed [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ].
      </p>
      <p>
        Software source code components|These can be either (a) standalone
programs, (b) libraries, frameworks, or middleware, (c) inter-application script
code such as C shell scripts, or (d) intra-application script code, as for creating
Rich Internet Applications using domain-speci c languages such as XUL for the
Firefox Web browser [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] or \mashups" [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. Their source code is available and
they can be rebuilt. Each may have its own distinct license.
      </p>
      <p>
        Executable components|These components are in binary form, and the
source code may not be open for access, review, modi cation, or possible
redistribution [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. If proprietary, they often cannot be redistributed, and so such
components will be present in the design- and run-time architectures but not in
the distribution-time architecture.
      </p>
      <p>Software services|An appropriate software service can replace a source
code or executable component.</p>
      <p>
        Application programming interfaces/APIs|Availability of externally
visible and accessible APIs is the minimum requirement for an \open system"
[
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. APIs are not and cannot be licensed, and can limit the propagation of
license obligations.
      </p>
      <p>
        Software connectors|Software whose intended purpose is to provide a
standard or reusable way of communication through common interfaces, e.g.
High Level Architecture [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ], CORBA, MS .NET, Enterprise Java Beans, and
GNU Lesser General Public License (LGPL) libraries. Connectors can also limit
the propagation of license obligations.
      </p>
      <p>Methods of connection|These include linking as part of a con gured
subsystem, dynamic linking, and client-server connections. Methods of connection
a ect license obligation propagation, with di erent methods a ecting di erent
licenses.</p>
      <p>Con gured system or subsystem architectures|These are software
systems that are used as atomic components of a larger system, and whose
internal architecture may comprise components with di erent licenses, a ecting
the overall system license. To minimize license interaction, a con gured
system or sub-architecture may be surrounded by what we term a license rewall,
namely a layer of dynamic links, client-server connections, license shims, or other
connectors that block the propagation of reciprocal obligations.</p>
      <p>Figure 2 shows a high-level view of a reference architecture that includes
all the kinds of software elements listed above. This reference architecture has</p>
      <p>Web Browser
User Interface
been instantiated in a number of con gured systems that combine OSS and
closed source components. One such system handles time sheets and payroll
at our university; another implements the web portal for a university research
lab (http://proxy.arts.uci.edu/gamelab/). The con gured systems consist
of software components such as a Mozilla Web browser, Gnome Evolution email
client, and WordPerfect word processor, all running on a Linux operating system
accessing le, print, and other remote networked servers such as an Apache Web
server. Components are interconnected through a set of software connectors that
bridge the interfaces of components and combine the provided functionality into
the system's services.
5</p>
    </sec>
    <sec id="sec-6">
      <title>Software Licenses</title>
      <p>Copyright law is the common basis for software licenses, and gives the original
author of a work certain exclusive rights: the rights to use, copy, modify, merge,
publish, distribute, sub-license, and sell copies. The author may license these
rights, individually or in groups, to others; the license may give a right either
exclusively or non-exclusively. After a period of years, copyright rights enter the
public domain. Until then copyright may only be obtained through licensing.</p>
      <p>Licenses typically impose obligations that must be met in order for the
licensee to realize the assigned rights. Common obligations include the obligation
to publish at no cost any source code you modify (MPL) or the reciprocal
obligation to publish all source code included at build-time or statically linked (GPL).
The obligations may con ict, as when a GPL'd component's reciprocal obligation
to publish source code of other components is combined with a proprietary
component's license prohibition of publishing its source code. In this case, no rights
may be available for the system as a whole, not even the right of use, because
the two obligations cannot simultaneously be met and thus neither component
can be used as part of the system.</p>
      <p>
        The basic relationship between software license rights and obligations can be
summarized as follows: if the speci ed obligations are met, then the
corresponding rights are granted. For example, if you publish your modi ed source code
and sub-licensed derived works under MPL, then you get all the MPL rights for
both the original and the modi ed code. However, license details are complex,
subtle, and di cult to comprehend and track|it is easy to become confused or
make mistakes. The challenge is multiplied when dealing with con gured system
architectures that compose a large number of components with heterogeneous
licenses, so that the need for legal counsel begins to seem inevitable [
        <xref ref-type="bibr" rid="ref10 ref11">10, 11</xref>
        ].
      </p>
      <p>We have developed an approach for expressing software licenses that is more
formal and less ambiguous than natural language, and that allows us to
calculate and identify con icts arising from the rights and obligations of two or
more component's licenses. Our approach is based on Hohfeld's classic group of</p>
      <p>
        Web Browser
User Interface
eight fundamental jural relations [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ], of which we use right, duty, no-right, and
privilege. We start with a tuple &lt;actor, operation, action, object&gt; for expressing
a right or obligation. The actor is the \licensee" for all the licenses we have
examined. The operation is one of the following: \may", \must", \must not",
or \need not", with \may" and \need not" expressing rights and \must" and
\must not" expressing obligations. Because copyright rights are only available to
entities who have been granted a sublicense, only the listed rights are available,
and the absence of a right means that it is not available. The action is a verb or
verb phrase describing what may, must, must not, or need not be done, with the
object completing the description. A license may be expressed as a set of rights,
with each right associated with zero or more obligations that must be ful lled
in order to enjoy that right. Figure 5 displays the tuples and associations for
two of the rights and their associated obligations for the academic BSD software
license. Note that the rst right is granted without corresponding obligations.
      </p>
      <p>Heterogeneously-licensed system designers have developed a number
heuristics to guide architectural design while avoiding some license con icts. First, it is
possible to use a reciprocally-licenced component through a license rewall that
limits the scope of reciprocal obligations. Rather than connecting con icting
components directly through static or other build-time links, the connection is
made through a dynamic link, client-server protocol, license shim (such as a
Limited General Public License connector), or run-time plug-ins. A second approach
&lt;Licensee, may, use, the binary form of COMPONENT&gt;
&lt;Licensee, may, redistribute, derived or collective works in binary form of COMPONENT&gt;
&lt;Licensee, must, retain, copyright notices in the binary form of COMPONENT&gt;
&lt;Licensee, must, retain, the BSD conditions in the binary form of COMPONENT&gt;
used by a number of large organizations is simply to avoid using any
reciprocallylicensed components. A third approach is to meet the license obligations (if that
is possible) by for example retaining copyright and license notices in the source
and publishing the source code. However, even using design heuristics such as
these (and there are many), keeping track of license rights and obligations across
components that are interconnected in complex OAs quickly becomes too
cumbersome. Thus, automated support is needed to manage the multi-component,
multi-license complexity.
6</p>
    </sec>
    <sec id="sec-7">
      <title>License Architectures</title>
      <p>Our license model forms a basis for e ective reasoning about licenses in the
context of actual systems, and calculating the resulting rights and obligations. In
order to do so, we need a certain amount of information about the system's
conguration at design-, build-, distribution-, and run-time. The needed information
comprises the license architecture, an abstraction of the system architecture:
1. the set of components of the system;
2. the relation mapping each component to its license;
3. the relation mapping each component to its set of sources; and
4. the relation from each component to the set of components in the same
license scope, for each license for which \scope" is de ned (e.g. GPL), and
from each source to the set of sources of components in the scope of its
component.</p>
      <p>With this information and de nitions of the licenses involved, we can
calculate rights and obligations for individual components or for the entire system,
and guide heterogeneously-licensed system design.
7</p>
    </sec>
    <sec id="sec-8">
      <title>License Analysis</title>
      <p>Given a speci cation of a software system's architecture, we can associate
software license attributes with the system's components, connectors, and
subsystem architectures, resulting in a license architecture for the system, and
calculate the copyright rights and obligations for the system's con guration. Due</p>
      <p>Components</p>
      <p>Sources</p>
      <p>Licenses</p>
      <p>Scopes
(sets of components
and sources, each with</p>
      <p>
        a defining license)
to the complexity of license architecture analysis, and the need to re-analyze
every time a component evolves, a component's license changes, a component
is substituted, or the system architecture changes, OA integrators really need
an automated license architecture analysis environment. We are developing a
prototype of such an environment [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
      </p>
      <p>
        We use an architectural description language speci ed in xADL [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] to
describe OAs that can be designed and analyzed with a software architecture design
environment [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ], such as ArchStudio4 [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ]. We have built the Software
Architecture License Analysis module on top of ArchStudio's Traceability View [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ].
This allows for the speci cation of licenses as a list of attributes (license tuples)
using a form-based user interface in ArchStudio4 [
        <xref ref-type="bibr" rid="ref21 ref22">21, 22</xref>
        ].
      </p>
      <p>
        We analyze rights and obligations as described below [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
7.1
      </p>
      <p>Propagation of reciprocal obligations
We follow the widely-accepted interpretation that build-time static linkage
propagate the reciprocal obligations, but appropriate license rewalls do not. Analysis
begins, therefore, by propagating these obligations along all connectors that are
not license rewalls.
An obligation can con ict with another obligation, or with the set of available
rights, by requiring a copyright right that has not been granted. For instance, a
proprietary license may require that a licensee must not redistribute source code,
but GPL states that a licensee must redistribute source code. Thus, the con ict
appears in the modality of the two otherwise identical obligations, \must not"
in the proprietary license and \must" in GPL.
The rights available for the entire system (use, copy, modify, etc.) are
calculated as the intersection of the sets of rights available for each component of the
system. If a con ict is found involving the obligations and rights of linked
components, it is possible for the system architect to consider an alternative linking
scheme, e.g. using one or more connectors along the paths between the
components that act as a license rewall. This means that the architecture and the
automated environment together can determine what OA design best meets the
problem at hand with available software components. Components with con
icting licenses do not need to be arbitrarily excluded, but instead may expand the
range of possible architectural alternatives if the architect seeks such exibility
and choice.
8</p>
    </sec>
    <sec id="sec-9">
      <title>Conclusion</title>
      <p>This paper discusses the role of ecosystems in the development and evolution
of OA systems. License rights and obligations play a key role in how and why
an OA system evolves in its ecosystem. We note that license changes across
versions of components is a characteristic of OA systems and ecosystems. A
structure for modeling software licenses and the license architecture of a system
and automated support for calculating its rights and obligations are needed in
order to manage a system's evolution in the context of its ecosystem. We have
outlined an approach for achieving these and sketched how they further the goal
of reusing components in developing software-intensive systems. Much more work
remains to be done, but we believe this approach turns a vexing problem into
one for which workable solutions can be obtained.</p>
    </sec>
    <sec id="sec-10">
      <title>Acknowledgments</title>
      <p>This research is supported by grants #0534771 and #0808783 from the U.S.
National Science Foundation, and the Acquisition Research Program at the Naval
Postgraduate School. No endorsement implied.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Oreizy</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Open Architecture Software: A Flexible Approach to Decentralized Software Evolution</article-title>
          .
          <source>PhD thesis</source>
          , University of California, Irvine (
          <year>2000</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>German</surname>
            ,
            <given-names>D.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hassan</surname>
            ,
            <given-names>A.E.</given-names>
          </string-name>
          :
          <article-title>License integration patterns: Dealing with licenses mismatches in component-based development</article-title>
          .
          <source>In: 28th International Conference on Software Engineering (ICSE '09)</source>
          . (May
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Scacchi</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Alspaugh</surname>
            ,
            <given-names>T.A.</given-names>
          </string-name>
          :
          <article-title>Emerging issues in the acquisition of open source software within the U.S. Department of Defense</article-title>
          .
          <source>In: 5th Annual Acquisition Research Symposium</source>
          . (May
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Alspaugh</surname>
            ,
            <given-names>T.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Asuncion</surname>
            ,
            <given-names>H.U.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Scacchi</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          :
          <article-title>Analyzing software licenses in open architecture software systems</article-title>
          .
          <source>In: 2nd International Workshop on Emerging Trends in FLOSS Research and Development (FLOSS)</source>
          .
          <source>(May</source>
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>Unity</given-names>
            <surname>Technologies: End User License Agreement</surname>
          </string-name>
          (
          <year>December 2008</year>
          ) http:// unity3d.com/unity/unity
          <article-title>-end-user-license-2</article-title>
          .x.html.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Jansen</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Finkelstein</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Brinkkemper</surname>
            ,
            <given-names>S.:</given-names>
          </string-name>
          <article-title>A sense of community: A research agenda for software ecosystems</article-title>
          .
          <source>In: ICSE Companion '09: Companion of the 31st International Conference on Software Engineering</source>
          . (May
          <year>2009</year>
          )
          <volume>187</volume>
          190
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Scacchi</surname>
          </string-name>
          , W.:
          <article-title>Free/open source software development</article-title>
          .
          <source>In: ESEC/FSE 2007: 6th Joint European Software Engineering Conference and ACM SIGSOFT Symposium on the Foundations of Software Engineering</source>
          . (
          <year>September 2007</year>
          )
          <volume>459</volume>
          {
          <fpage>468</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Brown</surname>
            ,
            <given-names>A.W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Booch</surname>
          </string-name>
          , G.:
          <article-title>Reusing open-source software and practices: The impact of open-source on commercial vendors</article-title>
          .
          <source>In: Software Reuse: Methods, Techniques, and Tools (ICSR-7)</source>
          .
          <source>(April</source>
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Ven</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mannaert</surname>
          </string-name>
          , H.:
          <article-title>Challenges and strategies in the use of open source software by independent software vendors</article-title>
          .
          <source>Information and Software Technology</source>
          <volume>50</volume>
          (
          <issue>9</issue>
          -
          <fpage>10</fpage>
          ) (
          <year>2008</year>
          )
          <volume>991</volume>
          {
          <fpage>1002</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Rosen</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>Open Source Licensing: Software Freedom and Intellectual Property Law</article-title>
          . Prentice
          <string-name>
            <surname>Hall</surname>
          </string-name>
          (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Fontana</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kuhn</surname>
            ,
            <given-names>B.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Moglen</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Norwood</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ravicher</surname>
            ,
            <given-names>D.B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sandler</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vasile</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Williamson</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>A Legal Issues Primer for Open Source and Free Software Projects</article-title>
          .
          <source>Software Freedom Law Center</source>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12. Open Source Initiative: Open Source De nition (
          <year>2008</year>
          ) http://www.opensource. org/.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Alspaugh</surname>
            ,
            <given-names>T.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Anton</surname>
            ,
            <given-names>A.I.</given-names>
          </string-name>
          :
          <article-title>Scenario support for e ective requirements</article-title>
          .
          <source>Information and Software Technology</source>
          <volume>50</volume>
          (
          <issue>3</issue>
          ) (
          <year>February 2008</year>
          )
          <volume>198</volume>
          {
          <fpage>220</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Bass</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Clements</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kazman</surname>
          </string-name>
          , R.:
          <source>Software Architecture in Practice. AddisonWesley Longman</source>
          Publishing Co., Inc., Boston, MA, USA (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Feldt</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          :
          <article-title>Programming Firefox: Building Rich Internet Applications with XUL</article-title>
          .
          <string-name>
            <surname>O'Reilly Media</surname>
          </string-name>
          , Inc. (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Nelson</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Churchill</surname>
            ,
            <given-names>E.F.</given-names>
          </string-name>
          :
          <article-title>Repurposing: Techniques for reuse and integration of interactive systems</article-title>
          .
          <source>In: International Conference on Information Reuse and Integration (IRI-08)</source>
          . (
          <year>2006</year>
          )
          <fpage>490</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Meyers</surname>
            ,
            <given-names>B.C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Oberndorf</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <source>Managing Software Acquisition: Open Systems and COTS Products</source>
          .
          <string-name>
            <surname>Addison-Wesley Professional</surname>
          </string-name>
          (
          <year>2001</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Kuhl</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Weatherly</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dahmann</surname>
          </string-name>
          , J.:
          <article-title>Creating computer simulation systems: an introduction to the high level architecture</article-title>
          .
          <source>Prentice Hall</source>
          (
          <year>1999</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Hohfeld</surname>
            ,
            <given-names>W.N.:</given-names>
          </string-name>
          <article-title>Some fundamental legal conceptions as applied in judicial reasoning</article-title>
          .
          <source>Yale Law Journal</source>
          <volume>23</volume>
          (
          <issue>1</issue>
          ) (
          <year>November 1913</year>
          )
          <volume>16</volume>
          {
          <fpage>59</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <source>Institute for Software Research: xADL 2.0. Technical report</source>
          , University of California, Irvine (
          <year>2009</year>
          ) http://www.isr.uci.edu/projects/xarchuci/.
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Medvidovic</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rosenblum</surname>
            ,
            <given-names>D.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Taylor</surname>
          </string-name>
          , R.N.:
          <article-title>A language and environment for architecture-based software development and evolution</article-title>
          .
          <source>In: ICSE '99: Proceedings of the 21st international Conference on Software Engineering</source>
          . (
          <year>1999</year>
          )
          <volume>44</volume>
          {
          <fpage>53</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <article-title>Institute for Software Research: ArchStudio 4</article-title>
          .
          <source>Technical report</source>
          , University of California, Irvine (
          <year>2006</year>
          ) http://www.isr.uci.edu/projects/archstudio/.
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Asuncion</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Taylor</surname>
          </string-name>
          , R.N.:
          <article-title>Capturing custom link semantics among heterogeneous artifacts and tools</article-title>
          .
          <source>In: 5th International Workshop on Traceability in Emerging Forms of Software Engineering (TEFSE)</source>
          .
          <source>(May</source>
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>