<!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>
      <journal-title-group>
        <journal-title>Feb</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Code Sharing on the Web - Two Approaches</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Kyle Buza</string-name>
          <email>buza@alum.mit.edu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Author Keywords</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>ACM Classification Keywords</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Takashi Okamoto</string-name>
          <email>mud@media.mit.edu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>BuzaMoto, MIT Media Lab</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Education</institution>
          ,
          <addr-line>Data Sharing, Programming</addr-line>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>H.3.5 Online Information Services: [Data sharing]</institution>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2009</year>
      </pub-date>
      <volume>8</volume>
      <issue>2009</issue>
      <abstract>
        <p>We present two approaches to the general task of leveraging the social aspects of the World Wide Web (WWW) to facilitate knowledge transfer among site participants. In particular, we have built two independent communities for the purpose of streamlining access to and immediate sharing and execution of computer programs for the generation of computational art. The first site, OpenCode, allows visitors to compile and execute Java Applets submitted by members of the community, providing a social context for executing and sharing code on the Web. Based on feedback from site members, we developed a second site, E15:Web, which serves as a repository for images and programs for a new desktopbased programming environment called E15. In E15, user programs are scripts that are executed in read-eval-print loop (REPL) mode, not requiring compilation. This programming model allows users to develop programs iteratively, emphasizing visual results over development process. This approach relaxes notions of completeness that OpenCode site members felt were inherent within a more formal submission model. Thus, E15:Web serves as a community for works in progress, in an attempt to encourage participation through the absence of finality inherent within traditional submission models.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>INTRODUCTION
As we enter a new era of widespread collaboration and
sharing made possible by the WWW, one question that remains
is how to build appropriate communication channels to and
from this new medium with respect to the tools used for
digitally mediated creative expression.
Here, we consider two approaches to code sharing made
possible by the web. In OpenCode, users are presented with an
in-browser program development environment to simplify
the experimentation process through shared program
collections. In E15:Web, a desktop application is employed for
program development, but with the emphasis placed on the
visual output over program source code. That is, as opposed
to existing online repositories like Sourceforge
(http://www.sourceforge.net), or creative code sharing sites
like Scratch (http://scratch.media.mit.edu), which place an
emphasis on the submission of functional applications,
E15:Web is a repository for works in progress, made
possible by the E15 REPL programming model.</p>
      <p>OPENCODE : PROGRAMMING IN THE BROWSER
OpenCode (http://opencode.media.mit.edu), is a web-based
programming environment targeted at simplifying access to
computational art programs. Users can browse the program
source of graphical programs written in the Processing
dialect of Java (http://www.processing.org) submitted by other
users, and execute them within the context of the browser
itself. Users of the site can modify existing pieces of code, and
re-compile them in-browser. This fluidity dramatically
simplifies the experimentation process by allowing users to be
only a few clicks away from program execution. An added
benefit of this model is that because program compilation
happens on the server, we have the ability to collect usage
statistics related to code etymology and nature of user
par</p>
      <p>While few members of the OpenCode community have
lamented the lack of traditional IDE features like tabbing,
more have commented on the lack of an easily digestible
gallery of imagery that represent submitted programs. In
addition, many users expressed an uneasiness with respect
to the submission model, where programs are saved when
submitted to the site, and effectively ”frozen” in a
particular state. Many users believe these types of programs to be
works in progress, and tend to be skeptical of a conceptually
persistent development model inherent with the site.
E15:WEB : SHARING CODE FROM THE DESKTOP
E15:Web (http://e15web.media.mit.edu), is a site for
sharing in-progress code snippets from a new graphical
programming application called E15. The development of E15:Web
was directly influenced by the user feedback obtained from
OpenCode users, which included requests for Flickr-like
image galleries of submitted programs and a general aversion
to the inherent persistence of the submission process.
Seen from the perspective of the creative individual, the
browser can be viewed as a medium too confining for
sufficient creative exploration. Performance limitations and
security restrictions outweigh the social benefits made possible
by a web-based development environment. In E15, we chose
to alleviate these restrictions by separating the development
environment from the browser in order to maximize creative
potential. As our users have expressed a distaste for the
submission model common to OpenCode and web-enabled
desktop application-based development environments like
Scratch, E15:Web uses an entirely new programming
methodology.</p>
      <p>In E15, users write programs in the Python programming
language to generate procedural animations and interactive
visualizations based on WWW data. Leveraging the REPL
mode of program evaluation, these programs can be updated
and changed at any point during their execution. While
interactive programming of this type is not new, the product of
an E15 program is not an application per se. With respect to
computational art generation, E15 program development is
often more of an interactive session than a targeted design
effort. The result is a programming style that is iterative, as
opposed to the compile, run, debug, repeat programming style
that produces conceptually complete applications. Thus, in
many cases, writing programs in E15 feels less like a
completed process – the code can always tweaked and the visual
result massaged at runtime. The goal of E15:Web is to allow
the seamless transfer of these unfinished E15 code snippets
directly to the WWW, where they may be viewed, shared,
and modified by other members of the E15:Web community.
This transfer process is made to be as simple and noninvasive
as possible. At any point during the execution of a program,
the user may submit a screenshot and the accompanying
program evaluation history to the E15:Web site. The end result
is a collection of easily browse-able imagery produced from
snapshots of the running desktop application. The emphasis
is placed on the visual result as opposed to the process that
led up to the creation of that result.</p>
      <p>While user submissions proceed seamlessly to the E15:Web
site, we also hoped retain the ease of experimentation that
users enjoyed on the OpenCode site. In OpenCode,
programs can be run with a single click – there is no
”downloadand-open” requirement. In order to integrate similar
functionality into E15:Web, the E15 application contains an
embedded web browser, allowing users to simply click on a link
to a script and immediately begin its execution.</p>
      <p>While simple, this model clearly lends itself to a number
of security issues. The most significant is the possibility of
users running arbitrary Python scripts that could be
malicious in nature. In the current implementation, this has been
left unaddressed for reasons of flexibility. Most solutions
to this problem simply place the user in a security sandbox
that restricts their creative potential, a scenario we choose
to avoid. To our knowledge, no malicious functionality has
ever been concealed within applications in this particular
domain, perhaps due to the relative lack of anonymity
accompanying them.</p>
      <p>Evaluation/Future Work
The OpenCode community has been active since 11/2006,
and as of 1/11/09, has 1443 registered users. Site
statistics show that over 90 percent of site of visitors are lurkers,
viewing but not contributing content. It appears that most
active members do not use the site for active development,
but simply to post previously created work. Inspired by user
feedback, we plan to integrate program thumbnails and more
substantial code management functionality into the next
version of the site.</p>
      <p>Unfortunately, E15:Web remains largely inactive due to its
inherent coupling with an in-development programming
environment that is still only of alpha quality. As the maturity
and distribution of the E15 application grows, we expect to
obtain more data on this submission model.</p>
    </sec>
  </body>
  <back>
    <ref-list />
  </back>
</article>