The Roadmap described below is being implemented thanks to the Tango Controls Collaboration and the community efforts. The most recent events in implementing the Roadmap are:

The following Roadmap was discussed and agreed by the TANGO Community at the 29th Tango Meeting in Krakow in 2015. The roadmap addresses the general evolution of Tango and associated tools. Input was gathered via email and presented in the form of Feature Requests. The Feature requests were then discussed in the interactive session where names of interested developers and the cost of development were estimated. The status and roadmap were presented at the ICALEPCS 2015 conference in Melbourne in the presentation entitled "The TANGO Controls Collaboration in 2015"  (paper, slides).

The most requested features were :

  1.  Improve documentation
  2.  Move to source code to GIT
  3. Replace CORBA with ZMQ (or other protocol)
  4. Improve code sharing of device servers
  5. Continue to improve code quality (as always)

These requests form the current roadmap. The Executive Committee is working on identifying and investing resources in implementing these features. The community is invited to contribute to implementing the above topics. The roadmap will be updated at the next Tango meeting in Toulouse in June 2016. A call for comments for the next major release of Tango (V10) has been made on the forum in RFC #4.

Major release V9

The major releases of TANGO implement a significant part of the roadmap. The most recent major release since the Krakow meeting was TANGO V9 released in September 2015. This release implements a number of significant new features requested by the community. The most significant ones are:

  • Pipes - a new communication channel for exchanging mixed data types
  • Forwarded attributes - linking of attributes via the database without code
  • Enumerated data types - enum types for restricting the values of attributes
  • Dynamic commands - like dynamic attributes are now implemented in C++ too
  • Interface change event - informs clients of a change in the device interface
  • Polling algorithm - implemented a new polling algorithm which uses read_attributes() to read multiple attributes

Refer to the CHANGES file for details of all the many other smaller feature requests and bug fixes have been implemented.

  • Status : The C++ and Java libraries have been officially released (latest version is 9.2.2). A pre-release of PyTango9 is available on Github. PyTango9 is still missing forward attributes, dynamic commands, writing to pipes and interface change event.

Feature Requests

The following feature requests were made at the Tango meeting in Krakow in 2015. They are organised in terms of order of priority. Their status has been updated for the 30th Tango meeting in Toulouse in June 2016.

Feature Request # 1 - Documentation

  • Description = Improve the documentation, make it easier to navigate, read, more tutorials, control system designs
  • Motivation = Make TANGO easier to learn for newbies, share knowledge about advanced features, design patterns
  • Cost = constant effort of months to years
  • Implementors = ELI-ALPS, ESRF, …
  • Status - a new format for documentation and a list of documents to write will be discussed at the Toulouse meeting

Feature Request # 2 – Move to git

  • Description = Move the source code repository from SVN to git on SourceForge and GitHub
  • Motivation = Enable better sharing and more contributors
  • Cost = 3 - 6 months
  • Implementers = ALBA, ESRF, MAXIV, FRMII,…
  • Status = a proposal for how to move to git has been produced and will be discuss at the Toulouse meeting

Feature Request # 3 – Replace CORBA

  • Description = Replace CORBA as synchronous communications protocol and remove all dependencies on CORBA (i.e. serialisation library, data types etc) with a pluggable protocol layer, use ZMQ as first implementation
  • Motivation = Improve code base by refactoring, remove dependency on old protocol like CORBA which is not developed any more
  • Cost = At least 2 years of development
  • Implementors = ESRF, SOLEIL, ...
  • Status = no progress since Krakow meeting, a breakout session will discuss how to advance on this topic at the Toulouse meeting.

Feature Request # 4 – Grow the Community

  • Description = Continue to grow the community by expanding into new areas, introducing and accepting new members, publicising
  • Motivation = Increase the resources and lifetime of TANGO
  • Cost = constant effort of days and months
  • Implementors = ALL
  • Status = SKA, the largest astronomy project in the world, has officially adopted TANGO as their common controls framework, the 3 ELI's have adopted TANGO

Feature Request # 5 – TANGO REST API

  • Description = Define and implement a REST-API for TANGO for web applications
  • Motivation = provide a simple way to access devices from the web and/or other clients
  • Cost = 6 – 12 months
  • Implementors = Igor Khokhriakov (HZG), MaxIV, ...
  • Status = mtango has integrated requests from the community and made a new release RC3-0.1

Feature Request # 6 – TANGO web application

  • Description = Provide a generic web application for browsing and monitoring TANGO devices
  • Motivation = Web is the ubiquitous user interface
  • Cost = 6 – 12 months
  • Implementors = Igor Khokhriakov (HZG), …
  • Status = version 0.1 has been released...

Feature Request # 7 Security by encryption

  • Description = Provide a secure way of accessing TANGO devices using a secure encrypted protocol
  • Motivation = Secure access over public networks, protection from viruses on local area networks
  • Cost = 6 – 12 months
  • Implementors = ALBA, ELETTRA, Benoit Donnette, …
  • Status = no progress since the Krakow meeting

Feature Request # 8 – Improve database schema

  • Description = Change the database schema to fix the performance issues related to memorised attributes and other related problems.
  • Motivation = Improve performance
  • Cost = 3 - 6 months
  • Implementors = SOLEIL, ELETTRA, …
  • Status = the performance issue for writing attribute properties related  to memorised attributes has been addressed by ESRF, DESY and Elettra and is now considered solved, other issues related to removing deleted servers from the database remain, no decision has been made whether to use transactions

Feature Request # 9 – Device server catalogue

  • Description = Increase sharing of device servers
  • Motivation = Improve quality
  • Cost = 3 - 6 months
  • Implementers = 3-controls
  • Status = a proposal for a catalogue has been made by 3-controls and the work has been sub-contracted

Feature Request # 10 – Long Term Support

  • Description = Maintain an LTS version of TANGO which will be have bug fixes and patches for new major releases
  • Motivation = Install new features without doing a major upgrade
  • Cost = constant effort
  • Implementers = ALBA, …
  • Status = no progress since Krakow meeting, the move to git should enable a better support for older versions of the core library

Feature Request # 11 – TANGO Virtual Box

  • Description = Maintain and update the Tango Virtual Box to the have the latest version of Tango and all its tools
  • Motivation = Provide an easy way to try out Tango
  • Cost = constant effort
  • Implementers = ESRF
  • Status = a new release candidate for Tango V9.2 is available

Feature Request # 12 – Generate Unit Tests 

  • Description = Pogo to Generate Unit Test for Device Servers in Python, C++ and Java
  • Motivation = Improve code quality with TDD
  • Cost = 6 months
  • Implementers = MaxIV, Nexeya, ESRF, …
  • Status = a proposal has been made for generating unit tests automatically by Pogo

Feature Request # 14 – replace Boost.Python in PyTango

  • Description = Replace Boost as the interoperable layer between PyTango and the C++ Tango kernel
  • Motivation = fix some old bugs, make PyTango easier to maintain, Boost not actively developed any more
  • Cost = 6 – 12 months
  • Implementors = ESRF, ALBA, MAXIV, ...
  • Status = a meeting took place between ESRF, MAXIV and ALBA, the summary is available online