<!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>Lightning Talk: HydroShare - A Case Study in Software Engineering Best Practices and Culture Change for Developing Sustainable Community Software</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Ray Idaszak</string-name>
          <email>rayi@renci.org</email>
        </contrib>
        <contrib contrib-type="author">
          <string-name>David G. Tarboton</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Hong Yi</string-name>
          <email>hongyi@renci.org</email>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Michael Stealey</string-name>
          <email>stealey@renci.org</email>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Pabitra Dash</string-name>
          <email>pabitra.dash@usu.edu</email>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Alva Couch</string-name>
          <email>alva.couch@tufts.edu</email>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Daniel P. Ames</string-name>
          <email>dan.ames@byu.edu</email>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jeffery S. Horsburgh</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Tony Castronova</string-name>
          <email>tony.castronova@usu.edu</email>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jon Goodall</string-name>
          <email>goodall@virginia.edu</email>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Mohamed Morsy</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Venkatesh Merwade</string-name>
          <email>venvmerwade@purdue.edu</email>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Mauriel Ramirez</string-name>
          <email>mauriel.ramirez@usu.edu</email>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Tian Gan</string-name>
          <email>tian.gan@usu.edu</email>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Drew (Zhiyu) Li</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jeff Sadler</string-name>
          <email>jeffrey.sadler@byu.edu</email>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Shawn Crawley</string-name>
          <email>shawn.crawley@byu.edu</email>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Zhaokun Xue</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Lan Zhao</string-name>
          <email>lanzhao@purdue.edu</email>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Carol Song</string-name>
          <email>cxsong@purdue.edu</email>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Christina Bandaragoda</string-name>
        </contrib>
      </contrib-group>
      <abstract>
        <p>-Applying modern software engineering to scientific software development has many challenges. These include lack of time or incentives to learn software engineering best practices, a lack of understanding or appreciation of the value of modern software engineering, and a shortage of mechanisms to more broadly change the software engineering culture of a community of researchers in a singular concerted effort. The HydroShare project is a large distributed research software development project that has made significant inroads on these challenges. As the HydroShare project enters its fifth year of NSF funding, we discuss how research scientists and research software engineers from the ten collaborating institutions consistently produce high-quality HydroShare code releases every 2-3 weeks that are formally reviewed and tested.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>
        Applying modern software engineering to scientific software
development has many challenges. These include lack of time
or incentives to learn software engineering best practices, a lack
of understanding or appreciation of the value of modern software
engineering, and a shortage of mechanisms to more broadly
change the software engineering culture of a community of
researchers in a singular concerted effort. The HydroShare project
is a large distributed research software development project that
has made significant inroads on these challenges [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
HydroShare is a hydrology community open-source
cyberinfrastructure project supported by the National Science Foundation
(NSF) through its Software Infrastructure for Sustained
Innovation program (SI2) [
        <xref ref-type="bibr" rid="ref2">2, 3</xref>
        ]. Domain scientists, professional
software engineers, and academic software developers from ten
academic, research, and development organizations located across
the United States collaborate to develop HydroShare - an online,
collaborative system supporting the open sharing of hydrologic
data, analytical tools, and computer models.
      </p>
      <p>This work is licensed under a CC-BY-4.0 license.</p>
      <p>At the onset of the HydroShare project, most of the research
scientist collaborators on the project were not clear on the
difference between software development and software engineering,
and they were not familiar with concepts such as iterative
software development, test-driven development, code reviews, and
continuous integration. Now, as the HydroShare project enters
its fifth year of NSF funding, research scientists and research
software engineers from the ten collaborating institutions
consistently produce high-quality HydroShare code releases every
2-3 weeks that are formally reviewed and tested. The
HydroShare team now understands and embraces the value of
modern software engineering; indeed, they understand the time
savings of producing high-quality sustainable code at the onset as
enabling more time spent on their research and not on the
timeconsuming alternative of managing potentially poor quality code
had they not embraced modern software engineering.</p>
      <p>II. SOFTWARE ENGINEERING BEST PRACTICES AND CULTURE
CHANGE FOR DEVELOPING SUSTAINABLE COMMUNITY</p>
      <p>SOFTWARE</p>
      <p>The HydroShare team has achieved a community rhythm in
the continual deployment of high-quality community code
releases of HydroShare. The community visibility of this rhythm
has served as an incentive for community culture change in that
team members are pleased with the resulting code, its evolving
significant capabilities, and the efficiency by which new features
are tested and integrated as contributed by the collaborating team
members. This culture change has naturally incented
collaborating researchers to take the time to teach modern software
engineering best practices to their graduate and postdoctoral
students that time has shown have now also embraced these
practices. While host universities have provided the requisite
training in computer programming to HydroShare researchers, they
have not provided the accompanying instruction on software
engineering best practices. However, the HydroShare project has
provided numerous faculty, graduate students, postdoctoral
students, and even undergraduate students the opportunity to learn
modern software engineering best practices first-hand in the
absence formal classroom instruction of same.</p>
      <p>What is important to convey is this propagation and adoption
of software engineering best practices across the HydroShare
team is happening organically without the need to force it. It is
a success story in that what is referred to as a “community
rhythm” herein is in effect like an engine that, once started,
sustains itself in part by visibly promoting its own success and
efficiencies such that there is no questioning of its uptake by new
team members. In other words, adoption of these software
engineering best practices becomes the new norm – there is no
alternative that new HydroShare team members are ever exposed
to. This is especially important to those faculty and students who
are early in their careers as it has proven a viable mechanism of
getting these individuals on a sustainable software path early on.</p>
      <p>
        As it is beyond the scope of a lightning talk summary paper
to fully describe the mechanism of how the success of
HydroShare’s software engineering is achieved, we refer the reader
to a book chapter titled “HydroShare – A case study of the
application of modern software engineering to a large distributed
federally-funded scientific software development project” that
offers a comprehensive discussion of this work [
        <xref ref-type="bibr" rid="ref3">4</xref>
        ]. The book
chapter discusses the HydroShare team’s use of iterative
software development, continuous integration, and DevOps.
HydroShare features are positioned as GitHub branches and worked
on by subsets of the active HydroShare development community
distributed across the ten collaborating organizations. Designs
of proposed new features are discussed extensively initially
during one of the weekly HydroShare team calls involving
hydrology domain researchers, developers, and software engineers
from the HydroShare collaborating institutions as well as
community stakeholders. Designs are revisited as required so as to
adapt to new technologies and/or address changing
requirements. Once a design is accepted, unit tests are written and
integrated with Jenkins which is an open source continuous
integration tool. GitHub commits are made daily, and functional
progress with running code demonstrations are reviewed weekly
for functionality and usability during the HydroShare weekly
team calls on one of the HydroShare pre-release virtual
machines. HydroShare GitHub feature branches are rebased
regularly with the HydroShare main branch to keep the code from
getting out of sync with the HydroShare production release. As
with all HydroShare code, code reviews are performed by
someone other than the author of the code, and only until a “+1” is
given by the code reviewer (via GitHub issue tracking) and all
unit tests pass will code be committed incrementally into the
HydroShare main branch. The HydroShare main site offers
mechanisms for the community at large to comment on issues
(including submission of bugs) and contribute suggestions to
HydroShare. The HydroShare GitHub site maintains active
statistics demonstrating the vibrant, open, and diverse HydroShare
research software development activity [5].
      </p>
      <p>A concluding note on the software sustainability of
Hydroshare: since 2002, CUAHSI [6] – the primary U.S. hydrology
consortium with 130 member universities and international
organizations – collaborated in the predecessor to HydroShare
called Hydrologic Information System, or HIS [7]. HIS is now
maintained by the CUAHSI Water Data Center [8] as its
community sustainability model. HydroShare is positioned as the
successor to HIS, complementing but not replacing it. When the
NSF-funded HydroShare award concludes, it will also be hosted
by the CUAHSI Water Data Center – its long-term
sustainability ensured by modern software engineering that will readily
enable the broader community to continually make novel and
useful contributions.</p>
    </sec>
    <sec id="sec-2">
      <title>ACKNOWLEDGMENT</title>
      <p>This material is based upon work supported by the USA
National Science Foundation (NSF) under awards 1148453 and
1148090; any opinions, findings, conclusions, or
recommendations expressed in this material are those of the authors and do
not necessarily reflect the views of the NSF.
[3] NSF collaborative HydroShare award numbers 1148453 and
1148090,
http://www.nsf.gov/awardsearch/showAward?AWD_ID=11484
53/ and
http://www.nsf.gov/awardsearch/showAward?AWD_ID=11480
90/.
[5] HydroShare GitHub
https://github.com/hydroshare/hydroshare/graphs/commitactivity.
[8] https://www.cuahsi.org/wdc.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>Tarboton</surname>
            ,
            <given-names>D. G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Idaszak</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Horsburgh</surname>
            ,
            <given-names>J. S.</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Heard</surname>
          </string-name>
          , Ames,
          <string-name>
            <given-names>D. P.</given-names>
            ,
            <surname>Goodall</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. L.</given-names>
            ,
            <surname>Band</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            ,
            <surname>Merwade</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            ,
            <surname>Couch</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Arrigo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            ,
            <surname>Hooper</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            ,
            <surname>Valentine</surname>
          </string-name>
          <string-name>
            <given-names>D.</given-names>
            , and
            <surname>Maidment</surname>
          </string-name>
          ,
          <string-name>
            <surname>D.</surname>
          </string-name>
          (
          <year>2014</year>
          ),
          <article-title>"HydroShare: Advancing Collaboration through Hydrologic Data</article-title>
          and
          <string-name>
            <given-names>Model</given-names>
            <surname>Sharing</surname>
          </string-name>
          .
          <source>" 7th International Conference on Environmental Modelling and Software</source>
          . Ed.
          <string-name>
            <given-names>D.</given-names>
            <surname>Ames</surname>
          </string-name>
          and
          <string-name>
            <given-names>N.</given-names>
            <surname>Quinn</surname>
          </string-name>
          . San Diego,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <surname>Implementation of NSF CIF21 Software Vision (SW-Vision</surname>
            <given-names>)</given-names>
          </string-name>
          , http://www.nsf.gov/si2/.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [4]
          <string-name>
            <surname>Idaszak</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tarboton</surname>
            ,
            <given-names>D.G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Yi</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Christopherson</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Stealey</surname>
            ,
            <given-names>M.J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Miles</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dash</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Couch</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Spealman</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ames</surname>
            ,
            <given-names>D.P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Horsburgh</surname>
            ,
            <given-names>J.S.</given-names>
          </string-name>
          <article-title>HydroShare - A case study of the application of modern software engineering to a large distributed federallyfunded scientific software development project. Accepted for inclusion in: J</article-title>
          .
          <string-name>
            <surname>Carver</surname>
            ,
            <given-names>N.P.C.</given-names>
          </string-name>
          <string-name>
            <surname>Hong</surname>
            , and
            <given-names>G.K.</given-names>
          </string-name>
          Thiruvathukal (eds.) Software Engineering for Science,
          <source>ISBN 9781498743853</source>
          . Taylor&amp;Francis CRC Press;
          <year>November 2016</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>