At first, we wanted thank you for your quick and constructive feedback!

After reflection on the nature of the problem and consideration of your 
feedback, we've arrived with the following solution.

The technology that will be use is XML. The integration of the machine 
interface to LTTng will be done in the most modular manner to facilitate the 
support multiples outputs format. This option will most likely be available at 
configure time.

For the moment, we will focus our effort into adding the XML feature only. If 
many outputs languages is still a viable feature, it will be possible to 
investigate.

Our main goal is of course to promote extensibility, ease of development for 
new tools and establish a standards for the communication control flow. Here 
are our primary requirement concerning the machine interface:

  * Fit the tree structure of LTTng commands structures.
  * It can be parse from bash/shell script with no external helpers.
  * The new format must not introduce any dependencies to LTTng.
  * [Optional] Still human readable, but fit to be parse.This is not a
     priority since we are talking about a machine interface.

Here are the reason why we think XML should be used for the machine interface:

  * The expression of LTTng hierarchy really fit a XML tree structure.
  * Since Jgalar add a load-save feature that depend on libxml2, we are
    not introducing any dependencies. Choosing another format would
    most likely introduce new dependency.
  * XML is robust and easily extensible. It will also be easy to
    maintains (add new commands, modify existing commands etc.)
  * There are tools that allow you to evaluate XPath expressions from
    the bash.
  * XML is an established standard

That's why we consider XML format as a suitable solution.

Now for the machine interface syntax:

  * Since we are aware that multiple output could be supported, we want an
    unify flag for all machine interface command.
                The flag --xml would be used to output xml from LTTng (we could 
add similar
                options like --json, --yaml etc.). This would be similar to svn
                machine interface and speak for itself.
  * Also, to avoid confusion we will use a different primary command for input 
and
    output machine interface.
                Ex: lttng machine <input>
                Ex: lttng --xml <output>

Any points we are missing?

_______________________________________________
lttng-dev mailing list
[email protected]
http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

Reply via email to