ESS EPICS Environment (e3)¶
Important
Major update: e3 is now powered by conda!
These are the new documentation pages for the redesigned ESS EPICS Environment (e3). We have made a major technical and architectural switch to a conda-based approach for better package management and reproducibility.
Looking for the previous e3 documentation? The original build-tools based documentation can still be found at https://e3.pages.ess.eu/e3-build-tools.
Please beware that we currently are in the midst of the transition, and that some examples here in this documentation might not yet work without alterations.
Welcome to the documentation for ESS EPICS Environment (e3) - a toolkit designed to simplify EPICS development and deployment at the European Spallation Source.
What is e3?¶
e3 is a design concept and toolkit that:
Enables dynamic loading of EPICS modules at runtime without IOC build steps
Wraps upstream modules with site-specific modifications while avoiding forks
Resolves dependency graphs automatically via conda package management
Provides isolated environments to run multiple IOCs with different module sets on the same host
For example, when you install the stream module, conda automatically resolves and installs all its dependencies (such as asyn and base) in a virtual environment. You can then switch between different versions of any module simply by changing a single line in your IOC configuration, and you can simultaneously run IOCs that require different versions of e.g. EPICS base.
Prerequisites¶
e3 assumes familiarity with several key technologies. Before getting started, you should be comfortable with:
EPICS - The Experimental Physics and Industrial Control System
Git - Version control system used for module management
Linux/Unix - Command line and system administration basics
Make and build systems - Understanding makefiles and build processes
Tip
If you’re new to any of these technologies, we recommend reviewing the linked documentation before proceeding with e3.
Background¶
e3 evolved from earlier EPICS environments at ESS and draws inspiration from PSI’s EPICS environment. At its core, it uses the require module (originally developed at PSI) combined with conda package management to handle dependencies and site-specific modifications.
The toolkit handles complex dependency chains, compiles shared libraries, and manages installations - with much of the heavy lifting done by conda.
Note
e3 focuses on EPICS environments and module management. IOC management tools (systemd, procServ, conserver) and client applications (CS-Studio, DisplayBuilder, ChannelFinder) are separate systems.