2006/09/21

Copyright Licenses

EPICS Base and many of the EPICS tools are distributed under the terms of the EPICS Open License, a BSD-like copyright license that was developed by Argonne lawyers to meet the requirements of the US Department of Energy (who fund Argonne). The license has been 'blessed' by the Free Software Foundation as being a Free Software license (they don't explicitly mention it in their list of licenses, but EPICS is included in their Free Software Directory). It also meets the terms of the Open Source Definition but we haven't ever submitted it to the OSI for official certification, and I don't think they would accept it now since they have started a campaign against the proliforation of software licenses.

So why am I writing about licenses today? Well Argonne is about to go through a change of management from the University of Chicago to a new company called UChicago Argonne, LLC, and the staff are changing employer on the same date (October 1st). This should have no effect on EPICS except that we should change the copyright owners listed on our source files whenever we edit them after the transition. However we worried that there be a little more of an issue related to our ability to accept code and patches from other labs.

Before the EPICS Open License was invented, any lab that wanted a copy of EPICS would have to sign a written agreement with Los Alamos National Lab, who were responsible for the licensing activities at the time. Later the responsibility for legal matters moved to Argonne, and after almost two years going around in circles with lawyers we got them to create a new license which formed the basis of the EPICS Open License (there was a time when we used a closed source license because of the US Export regulations, but we eventually managed to sidestep that).

Anyway, the earlier licenses automatically gave us permission to publish changes that came in from other sites. The new license can have no such reciprocity built into it, so in order to be able to include other peoples' code into the software we distribute our lawyers require us to get them to sign a Grant of License giving us the legal permission we need.

Luckily we have been told that we don't have to get new Grants signed by everyone who has already submitted one. I have just modified the text on the Grant of License to name the new company instead of the University of Chicago, and while I was at it I made it easy to create and fill out a Grant by including a web form on the page - I don't want this to become an obstacle to our receiving code contributions in the future.

2006/09/05

The Java IOC

My colleague Eric got back from a weekend in Michigan staying with Marty Kraimer, one of the two original designers of EPICS. Marty left Argonne (he insisted he wasn't 'retiring') in February this year to concentrate on his new design for a reimplementation of the core EPICS IOC ideas in Java. He had presented a summary of his progress at the EPICS Collaboration Meeting held here in June, but at that stage the code wasn't particularly complete or functional, and I think Marty was a little disapointed with the response he got at the meeting — he was hoping that other people would be sufficiently interested to offer to implement some parts of the code.

Eric reports that Marty is still putting in his 6 hours a day at the programming, in addition to walking the dogs and going out in the canoe. The Java IOC now has several record types implemented, and the record processing and links between records are fully functional. The design does not make use of Lock Sets; each record has its own mutex lock, and for a link to be used to pass data the controlling record's process routine must take the lock of the target record. Performance-wise Marty is apparently achieving a processing rate of about five hundred thousand records per second on his Apple laptop machine. His simple test example consists of 4 records (a CALC and three AOs) with 4 different kinds of links connecting them together (one each of put, get, forward and monitor), and this combination loops in 2 microseconds.

I have to admit I'm personally still slightly skeptical that any current EPICS users are going to want to use this until Marty provides both server and client side connectivity using the existing Channel Access protocol, because one of the main advantages of EPICS is the ability to connect any client up to any server using CA. Once/if he supports CA I can see there being more interest, especially from the Control System Studio crowd.

2006/09/01

Introduction

The word EPICS in the name of this blog is an acronym for the Experimental Physics and Industrial Control System, which is both the name for a software toolkit and the international collaboration of engineers and software developers who have developed and used it to build control systems for
many different projects.

I am one of the maintainers of the central core of the EPICS toolkit known as EPICS Base, and I also keep most of the collaboration's facilities (the website, wiki, mailing lists etc.) running. The website is hosted at the Advanced Photon Source by my employer, Argonne National Laboratory, which was one of the founders of EPICS.

In this blog I hope to discuss current and future developments in the EPICS world and also reflect on the problems we have maintaining the code base, parts of which date from 1989. I would welcome additional authors from the EPICS community; this could become a community resource if it proves useful, but if not it'll probably die quietly (like so many other blogs nowadays).