Experimental Physics and Industrial Control System


EPICS Codeathon 2021

ESS will host the 2021 Virtual EPICS Codeathon and Documentathon from Monday March 8th to Friday March 12th, to work on some of the items on the EPICS To Do lists. Attendees should be prepared to select (or propose) and work on one or more EPICS-related development or documentation projects, and must provide their own computing resources with all necessary development software.

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.

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.

Virtuality in reality

This year the event will be virtual, meaning that there will be a Zoom session for whole-group sessions, which we will run multiple times to allow attendees in different timezones to join without having to work at unusual hours. Outside of the 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.

If none of the sessions in the timetable below occur at reasonable times for you please let us know when you register and we will see if we can add additional sessions for your timezone — previous Codathons have not had representatives from the Asia-Pacific regions.

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 core developers wlll be available to act as mentors, including members of the team responsible for developing and maintaining the epics-controls website.

It isn't necessary to attend all 5 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 or Java programmer, 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 registration website opens on February 15th and will remain open until March 1st.

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?

Online using Zoom, email, GitHub, Launchpad and other technologies as needed. Registered participants have now been sent the Zoom link by email. For general messaging conversations we have enabled GitHub Discussions on the epics-base repository with a Codeathon 2021 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?

In the comfort of your own home. If you really want to travel you could always rent a room in a favorite hotel that has good internet connections and work from there, but you'll have to fund the cost of doing that yourself (or persuade your boss to pay for it, good luck!). Please follow all recommended precautions against COVID-19.


We expect to have attendees from all around the world working in their own timezones, so we will run at least 2 introductory and wrap-up sessions, maybe more if we get enough registrants from the Asia/Pacific region. We expect you to take breaks as you need them and where possible to follow your normal working hours. If you get pulled into support activities at your site or have meetings or other tasks to attend to during these hours we completely understand and don't expect you to make up any such time.

We will have core developers online from several timezones so we will try to have someone available on the conference chat to help for as long as we can, but you might have to wait a few hours for help in some cases.

The session times below are preliminary and may be adjusted as necessary.

Day Time PST Time CST Time EST Time UTC Time CET Session
Monday 01:00 - 02:00 03:00 - 04:00 04:00 - 05:00 09:00 - 10:00 10:00 - 11:00 Introductions, project selection for Europe
02:00 - 08:00 04:00 - 10:00 05:00 - 11:00 10:00 - 16:00 11:00 - 17:00 Work; European mentors available
09:00 - 10:00 11:00 - 12:00 12:00 - 13:00 17:00 - 18:00 18:00 - 19:00 Introductions, project selection for Americas
10:00 - 15:00 12:00 - 17:00 13:00 - 18:00 18:00 - 23:00 19:00 - 00:00 Work; American mentors available
Tuesday 00:00 - 08:00 02:00 - 10:00 03:00 - 11:00 08:00 - 16:00 09:00 - 17:00 Work; European mentors available
08:00 - 08:30 10:00 - 10:30 11:00 - 11:30 16:00 - 16:30 17:00 - 17:30 Joint progress session (optional)
08:00 - 15:00 10:00 - 17:00 11:00 - 18:00 16:00 - 23:00 17:00 - 00:00 Work; American mentors available
Wednesday 00:00 - 08:00 02:00 - 10:00 03:00 - 11:00 08:00 - 16:00 09:00 - 17:00 Work; European mentors available
08:00 - 08:30 10:00 - 10:30 11:00 - 11:30 16:00 - 16:30 17:00 - 17:30 Joint progress session (optional)
08:00 - 15:00 10:00 - 17:00 11:00 - 18:00 16:00 - 23:00 17:00 - 00:00 Work; American mentors available
Thursday 00:00 - 08:00 02:00 - 10:00 03:00 - 11:00 08:00 - 16:00 09:00 - 17:00 Work; European mentors available
08:00 - 08:30 10:00 - 10:30 11:00 - 11:30 16:00 - 16:30 17:00 - 17:30 Joint progress session (optional)
08:00 - 15:00 10:00 - 17:00 11:00 - 18:00 16:00 - 23:00 17:00 - 00:00 Work; American mentors available
Friday 00:00 - 07:00 02:00 - 09:00 03:00 - 10:00 08:00 - 15:00 09:00 - 16:00 Work; European mentors available
08:00 - 13:00 10:00 - 15:00 11:00 - 16:00 16:00 - 22:00 17:00 - 23:00 Work; American mentors available
07:00 - 08:00 09:00 - 10:00 10:00 - 11:00 15:00 - 16:00 16:00 - 17:00 Wrap-up for Europe
13:00 - 14:00 15:00 - 16:00 16:00 - 17:00 21:00 - 22:00 22:00 - 23:00 Wrap-up for Americas

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. These cover work on EPICS Base, CS-Studio and related services, and areaDetector. You can also suggest your own project ideas, but please try to discuss them on core-talk before the event if you can.

To claim a project before you start working on it, there is a thread in the GitHub Discussions area where we'd like you to add a message saying that you're planning to work on that particular project. You'll need to make sure that nobody else has already claimed it first by checking the other messages both before and after you post. For projects that come from the Launchpad bug tracker or the GitHub Issues page you should assign the associated issue to yourself first (as long as it isn't currently assigned), but please post a message to the Discussion as well so we can use that to keep track of who is working on what projects. We'll talk about this again in the introductory sessions on the first day.

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.


The following well-known EPICS developers are expected to attend and will be available for consultation. Some of their areas of expertise are listed:

  1. Andrew Johnson (Argonne/APS) — Base/IOC, build system, Doxygen
  2. Kunal Schroff (Brookhaven/NSLS-2) — CS-Studio, Java
  3. Timo Korhonen (ESS) — Documentation, read-the-docs
  4. Heinz Junkes (FHI) — RTEMS
  5. Ralph Lange (ITER) — Base/IOC, continuous integration, r-t-d
  6. Michael Davidsaver (Osprey DCS) — Base/IOC, PVA, RTEMS
  7. Mark Rivers (UChicago/APS) — synApps, Asyn, AreaDetector

Last updated: 2021-03-04