EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

EPICS Codeathon 2022

SLAC/LCLS hosted the 2022 Spring EPICS Codeathon from Monday May 9th to Friday May 13th, to work on some of the items on the EPICS Core, Java, and Python To Do lists. This was a hybrid event, with both on-site and virtual attendees.

By having developers focus on specific EPICS development tasks they will learn more about how the core software works and should become more profficient at using it. A lab that is looking to both improve their EPICS expertise and to give something back to the collaboration might find this an appropriate way to do both at the same time.

Post-meeting Summaries

Daniel Flath wrote a report about the event including attendance and work done in the 3 parallel sessions. These were the three presentations included in that report:

What Happens?

Coding Marathons, also called Code Sprints or Hackathons are popular in many open source projects as a way of making progress on certain development efforts, clearing up bug reports and introducing new developers to the project internals. They usually involve design discussions between developers, coding (individually or using techniques like Pair Programming), code testing and debugging, writing documentation, and coaching for developers who are new to the code-base.

Previous EPICS Codeathons have attracted between 8 and 34 attendees from many different labs/sites, and have resulted in many useful advances for EPICS. There are always core developers present to help newcomers get started and suggest answers to any questions that arise. We will also be asking attendees to test and review each others' projects as well as working on their own, further broadening their experience.

Hybrid = In-Person or Virtual

This year the event will be hybrid, meaning that participants may visit SLAC where there will be one or more meeting rooms available for use (subject to any COVID-19 restrictions in place at the Lab), and there will also be an active Zoom (or equivalent TBD) channel for remote participants to connect to that we will also use for whole-group sessions. Outside of the whole-group sessions the Zoom channel will be available for small group meetings and we may be able to set up breakout rooms too for discussions about specific project issues.

We also have a GitHub Discussions forum set up that we will be using for introductions, claiming work projects, requesting reviews and other kinds of general conversation. More details about this are given below.

We are open to the use of any other internet communications technologies that you have access to such as private Zoom channels, Google Meet, MS Teams, BlueJeans, SLAC channels, IRC, or even regular email to facilitate technical conversations — use whatever works for the people who need to be involved in the conversation. The core-talk mailing list might be an appropriate venue for some kinds of discussions.

Who’s invited?

EPICS Codeathons are intended for EPICS users who wish to contribute towards the future of EPICS, either by writing code or working on various documentation tasks. They are generally not suitable for those just starting to learn EPICS unless you have considerable experience in a related software field and are a self-starter. Several developers from the EPICS Core (C/C++),` CS-Studio/Phoebus (Java) and Python developer groups wlll be available to act as mentors, including members of the team responsible for the epics-controls website.

It isn't necessary to attend all 4 days, but please try to make it for enough time that you'll be able to finish at least one project. You don't have to be a C, Java or Python programmer (although most projects will need those skills), we will have some tasks that involve writing and updating the EPICS documentation, although most tasks will require some understanding of EPICS, C/C++ or Java coding and/or Linux scripting.

How to register?

The event website is now open and has an RSVP link to this form for registration.

If you have questions about projects or EPICS development you are welcome to email the core-talk list with them (you don't have to join that list, the moderators will approve such messages and will CC you on any replies).

Where will it be held?

In-person at SLAC in California (details coming), or online using email, GitHub, Launchpad and other technologies as needed. Registered online participants will be sent details by email. For general messaging conversations we have enabled GitHub Discussions on the epics-base repository with a Codeathon 2022 category, but subgroups are welcome to pick a different medium for discussions if they prefer — please post a message to the Dicussions forum saying what you are using so others can find you.

Where to stay?

Virtual participants can stay in the comfort of their own homes.

In-person participants may book rooms at the Stanford Guest House or the Cardinal Hotel in Palo Alto, details and booking links are here.


See the agenda page.

Work Projects

We have been developing lists of development projects that we would like to see implemented and bugs that could be fixed, of varying levels of complexity. The links below cover work in C/C++ on EPICS Base, and in Java on CS-Studio, Phoebus and related middle layer services, and for the Python track. You can also suggest your own project ideas, but please try to discuss them with an appropriate mentor before the event if you can.

How to Prepare

What can/should you do in advance in order to make life at the event itself easier for you and the other participants? Here are some suggestions, if you have other ideas that you think would help let me know and I'll add them here.

  • Make sure your computer(s) are prepared for the kind of work that you want to contribute with any necessary software installed. EPICS development is probably easiest on Linux or MacOS, but if you are a Windows power user or are already using EPICS on your Windows laptop that should be fine too. You should have all of the necessary compilers and other tools to build and debug the software you're working on, and in most cases you will need a copy of the Git DVCS software installed. If you've never used Git before you should familiarize yourself with it too.

    You should sign up for an account at GitHub so you can use the Discussion Forum and use that site for publishing your code changes. To work on bugs that are recorded in our Launchpad bug-tracker you'll need an account on Launchpad as well. Instructions for checking out a local copy of EPICS Base can be found on the EPICS 7.0 Release Series page.

  • Look through the lists of suggested work projects and try to identify some that you might be interested in and capable of working on. You could examine the existing code to try and get a feel for what might need to be done. If you have project ideas of your own that you'd like t work on, please discuss them with one of the core developers for their comments and to see whether it is likely to be accepted.

    This type of preparation work isn't the same as starting early. It's more a matter of getting your brain ready to sit down and tackle some problems. Rather than spending half a day deciding what to do, you'll already have a bit of an idea about where you could do some work and what the bigger picture looks like in that area.


The following well-known developers are planning to attend (some may be virtual) and should be available for consultation. There may be others that we don't yet know about.

  • Andrew Johnson
  • Kunal Shroff
  • Mark Rivers
  • Michael Davidsaver
  • Ralph Lange

Last updated: 2022-05-17

ANJ, 19 May 2022 · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·