Open XAL
Open XAL is an open source development environment used for creating accelerator physics applications, scripts and services. This project is a collaboration among SNS, CSNS, ESS, GANIL, TRIUMF and FRIB. Please visit the project page to participate.
Open XAL is designed to be a flexible application framework for developing accelerator physics applications with the following features:
API Documentation
More Open XAL documenation will be available as the project progresses.
Building Open XAL
Below are the recommended system configuration tools for building and running Open XAL:
Steps to get the source code and build Open XAL applications and services:
  1. git clone
  2. cd openxal
  3. ant
Please be sure to review and follow the project's specifications before commiting any code back to the project. Specifically, you should always follow the project's coding standards and the versioning rules. Coding for each task should take place on a task specific branch. Tom Pelaia will manage the master branch.
Contributing to Open XAL
Below are the steps for contributing code back to the Open XAL community:
Propose a change to the community at a workshop or start a conversation on a repository and get feedback.
If accepted by the community:
Issue a ticket for the project using the ticket system and take ownership or get someone else to take ownership.
Create a new branch for your ticket using the "milestone.ticketname" convention whether the milestone is represented with "m" followed by the milestone number and "ticketname" is a short name for your ticket. For example, a suitable branch name for a milestone one ticket to implement a formula parser could be "m1.formulaparser".
Implement your code and commit it to your ticket branch.
Notify the owner of the master branch who will then review your changes and merge your code into the master branch.
If not accepted by the community, you might:
Create your own site specific branch using the "site.siteName" prefix such as "site.mylab.master" replacing "mylab" with a short name for your site.
Implement your code and commit it to your site specific branch.
It is preferable to keep your code in synch with the community's branch so we have a coherent path forward with the project.
Please be sure to review and follow the project's specifications before commiting any code back to the project. Specifically, you should always follow the project's coding standards and the versioning rules. Coding for each task should take place on a task specific branch. Tom Pelaia will manage the master branch.
While you are free to maintain your custom site specific branches on the Open XAL GitHub project site, you must still abide by all applicable laws (e.g. copyright laws). For example, don't add jar files or source code that you are not free to distribute to the public under our BSD style license.
The following specifications are being implemented.
Supporting Documentation
The following documents and presentations provide supporting information for this project.
Open XAL Phase II Tasks are in progress. The goal is to migrate the current version of XAL used at SNS to a new project more suitable for collaborative development. For deliverables detail, please see the Open XAL Tickets.
Due Date Progress Task Lead Comment
October 31, 2010 100% Project Creation
  • Push current SNS modifications to XALDEV.
  • Create new repository trunk and move XALDEV aside.
  • Create new project skeleton in repository.
  • Identify third party jars to retain in core and copy to new repository.
  • Create Ant tasks for building core and database sections.
Tom Pelaia Creates a skeleton project for Open XAL.
December 31, 2010 100% Website Development
  • Design and publish Open XAL website.
Tom Pelaia Ongoing maintenance and content updates continue after due date.
February 15, 2011 100% Application Framework Migration
  • Determine Application Framework modifications and copy to core.
Tom Pelaia
April 30, 2011 100% Online Model Development
  • Design and implement new XAL online model.
Christopher Allen
September 30, 2011 100% Fix Compiler Lint Warnings
  • Fix all compiler warnings when compiling with all lint warnings enabled.
Tom Pelaia
February 28, 2012 100% JSON Framework Development
  • Design and implement JSON based services framework.
Tom Pelaia
February 28, 2012 100% Common Package Migration
  • Determine which core packages will be retained, modified (e.g. for database abstraction, removal of deprecated APIs) and where they will reside in the new project structure.
  • Copy retained, unmodified packages to new repository trunk using new package naming convention and project structure
  • Modify and copy remaining retained core packages to new repository.
Tom Pelaia These packages should exclude services, application framework, online model, devices and test suites.
December 31, 2012 100% Services Migration
  • Identify, modify and copy retained services to the common services section using new package naming convention.
Tom Pelaia
June 30, 2013 100% Milestone 1 Tickets
  • Project architecture and JDK 7 migration.
  • Online Model: collaboration integration, state fetching performance, benchmarking.
  • Scan bug fixes.
December 31, 2013 100% Milestone 2 Tickets
  • Port common XAL applications and services to Open XAL and keep Open XAL synchronized with XAL patches.
  • Split project into common core, extensions, plugins, services and applications.
  • Virtual Accelerator Enhancements.
  • Design and develop robust lattice generator.
  • Online Model machine parameter calculator.
  • Probe Editor Enhancements.
  • Extract WheelSwitch out of external jar and into the main code.
  • Extract matrix operations formerly in Jama into the main code.
June 30, 2014 100% Milestone 3 Tickets
  • Elapsed Time Mechanism for Bending Dipoles
  • Launcher Application version 1.1
  • Use Java Generics in Online Model
  • Support Scripts in Application Framework
  • Add convenience class and methods to DispatchQueue
  • Fix JavaDoc errors
  • Build a distributed services system
  • Update the services framework to support web sockets
  • Generate XML Schemas
  • Configurable element mapping
  • Generate Documentation
  • Implement a resource manager for loading resources (adding support for site specific resources and both jar and file based)
  • Support application based extensions
  • Various Bugfixes
September 30, 2014 100% Milestone 4 Tickets
  • Reduce memory footprint of service communication
  • Partial Trajectory Orbit
December 31, 2014 100% Milestone 5 Tickets
  • Post the BSD License
  • Create Experiment Automator Application
Pending Paused Progress Done
Meetings and Workshops
Virtual In Person
External Resources