Make the framework more control system agnostic
When we developed the Erlang front-end framework, we didn't just want to rewrite MOOC. We wanted a more general core that could be easily extended. The reading and setting code is written in such a way that we could support new ACNET protocols easily as well as "foreign" protocols, like Channel Access.
Looking at other parts of the framework, however, shows we have more work to do. The alarm support, for instance, is extremely MOOC-like. Our framework's records have exactly the same fields as their MOOC counterparts, so it would require a lot of code changes if we wanted to support, for example, high-high alarms or low-low alarms. Continuous and snapshot plot support also suffers from this "translate-C-to-Erlang" philosophy.
We should have a long term goal of generalizing all aspects of the front-end framework. In the target design, the core should be control system agnostic1. The protocols specific to a control system are handled by a minimal layer that is able to translate them to and from the core logic.
1 This requires the core to be a superset of all control systems' requirements we want to support.