Computing 101 - Software Engineering

C416a04a16b233e65afd993815c167dd?s=47 Ian Lee
November 12, 2019

Computing 101 - Software Engineering

The LLNL Computing directorate is in the business of making software; it’s right there in the name! Making that software though takes many shapes and there are a variety of approaches and considerations to be made, from the benign (Should I use version control? Which one? What tools are available to me?), to the opinionated (Where should I host the code? What language should I use? Should I release this code as open source? How do I manage collaborators to my project?), to the hotly debated (What Git workflow should I use? What open source license should I use?).

There are many approaches to software development that are team specific (agile vs waterfall, open source vs inner source vs limited distribution, etc) but there are also common (and unique) threads here at LLNL across projects, customers, and sponsors.

This talk will provide an overview of the landscape here at LLNL and show where to go to find more information. It will also specifically provide the annual update on our ongoing open source efforts, as teased at Bruce Hendrickson’s May 2019 Computing All Hands.

So, if you’re curious about how to start your next big software project and really get it going, this is the talk for you!

C416a04a16b233e65afd993815c167dd?s=128

Ian Lee

November 12, 2019
Tweet

Transcript

  1. LLNL-PRES-796969 This work was performed under the auspices of the

    U.S. Department of Energy by Lawrence Livermore National Laboratory under contract DE- AC52-07NA27344. Lawrence Livermore National Security, LLC Software Engineering 101: I have some code! … Now what? Computing 101 Ian Lee lee1001@llnl.gov 2019-11-12
  2. 2 LLNL-PRES-796969 § Computer Engineer — June 2010 – June

    2012, Engineering — June 2012 – Nov 2015, Global Security — Nov 2015 – Present, Livermore Computing • Nov 2016 – Present, Cyber Assessment Coordinator • Apr 2018 – Present, Computing AOISSO § ISCP: Software Sustainability and Outreach — GitHub.com/LLNL — software.llnl.gov — dev.llnl.gov § Atlassian.llnl.gov Who Am I ?
  3. 3 LLNL-PRES-796969 All the Operating Systems!

  4. 4 LLNL-PRES-796969 All the Editors!

  5. 5 LLNL-PRES-796969 All the Languages!

  6. 6 LLNL-PRES-796969 Means All Package Managers!

  7. 7 LLNL-PRES-796969 Software Technologies lay the foundation for ECP simulations

    OpenMPI MPICH Kokkos RAJA Spack Filesystems & I/O Resource Managers Parallel Programming Models MFEM CHOMBO Meshing / Finite Elements Scientific Visualization Packaging/Build Parallel Solvers
  8. 8 LLNL-PRES-796969 What is version control? http://smutch.github.io/VersionControlTutorial/

  9. 9 LLNL-PRES-796969 Version Control Tools GNU RCS

  10. 10 LLNL-PRES-796969 Fear of Git If that doesn't fix it,

    git.txt contains the phone number of a friend of mine who understands git. Just wait through a few minutes of 'It's really pretty simple, just think of branches as...' and eventually you'll learn the commands that will fix everything. https://xkcd.com/1597/
  11. 11 LLNL-PRES-796969 Good Commit Messages Merge branch 'asdfasjkfdlas/alkdjf' into sdkjfls-final

    https://xkcd.com/1296/
  12. 12 LLNL-PRES-796969

  13. 13 LLNL-PRES-796969 LC GitLab (Pilot) + In the works!

  14. 14 LLNL-PRES-796969 New Logo!

  15. 15 LLNL-PRES-796969 Science & Technology Review – Jan/Feb 2018 “Our

    large collection of software is a precious Laboratory asset, one that benefits both Lawrence Livermore, and in many cases, the public at large.” - Bruce Hendrickson Associate Director, Computation https://str.llnl.gov/2018-01/comjan18
  16. 16 LLNL-PRES-796969 2019 R&D 100 Award Winners

  17. 17 LLNL-PRES-796969 https://software.llnl.gov

  18. 18 LLNL-PRES-796969 LLNL Open Source Presence https://software.llnl.gov/explore

  19. 19 LLNL-PRES-796969 LLNL Open Source Engagement https://software.llnl.gov/explore

  20. 20 LLNL-PRES-796969 LLNL Open Source Activities https://software.llnl.gov/explore

  21. 21 LLNL-PRES-796969 LLNL Open Source Languages and Topics https://software.llnl.gov/explore

  22. 22 LLNL-PRES-796969 § Approach: — Focus on achieving competency in

    Sphinx+RtD — Create a training curriculum — Work with mentors who will advise, provide iterative feedback, and help integrate an editorial process into the OSS development workflow § Goals: — Successfully build and update documentation via Sphinx+RtD for a real repo — Publish “best practices” and “getting started” documentation on the OSS portal — Establish a path forward for ongoing FY20 support, training of other editors, learning additional platforms (e.g., Doxygen), etc. Idea Days Funding ($9K) – Holly Auten Integrating an Editorial Process into OSS Development Holly is looking for a repo(s) with existing documentation to practice on!
  23. 23 LLNL-PRES-796969 https://twitter.com/LLNL_OpenSource

  24. 24 LLNL-PRES-796969 Pull Requests Welcome! https://dev.llnl.gov

  25. 25 LLNL-PRES-796969 New Open Source Policy & Guidelines (May 2019)

    § Releasing — eSoftware: https://esw.llnl.gov • No more DVDs! • Getting ready for phase 2 development — Expedited Approvals • Specific broad subject areas • Not an “application” that could have IP value • Not part of a CRADA or other IP agreement • Sponsor provided blanket approval for OSS – Currently: NNSA ASC & DOE Office of Science • Approved open source license – MIT, BSD-3, LGPL-2.1, GPL-2.0 are easiest § Contributing — Email to: open-source-notify@llnl.gov — Provide details about the project: • Unclassified? Export Controlled? • Funding source (sponsor) OK with open source? • Approved License? • Requires a CLA? • Conflict of Interest? • Business need? • Contributions are “incremental” ?
  26. 26 LLNL-PRES-796969 In the works! https://llnl.slack.com

  27. Disclaimer This document was prepared as an account of work

    sponsored by an agency of the United States government. Neither the United States government nor Lawrence Livermore National Security, LLC, nor any of their employees makes any warranty, expressed or implied, or assumes any legal liability or responsibility for the accuracy, completeness, or usefulness of any information, apparatus, product, or process disclosed, or represents that its use would not infringe privately owned rights. Reference herein to any specific commercial product, process, or service by trade name, trademark, manufacturer, or otherwise does not necessarily constitute or imply its endorsement, recommendation, or favoring by the United States government or Lawrence Livermore National Security, LLC. The views and opinions of authors expressed herein do not necessarily state or reflect those of the United States government or Lawrence Livermore National Security, LLC, and shall not be used for advertising or product endorsement purposes. Leave things better than you found them. Thank You! lee1001@llnl.gov