Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 374002

Summary: [LTTng] Refactor plug-ins for LTTng 2.0
Product: z_Archived Reporter: Francois Chouinard <fchouinard>
Component: LinuxToolsAssignee: Francois Chouinard <fchouinard>
Status: CLOSED FIXED QA Contact: Francois Chouinard <fchouinard>
Severity: normal    
Priority: P3 CC: overholt
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Whiteboard:
Bug Depends on: 370499, 370501, 370554    
Bug Blocks:    

Description Francois Chouinard CLA 2012-03-12 15:46:07 EDT
While working at integrating LTTng 2.0 in Eclipse, we have come to the conclusion that the 'legacy' LTTng and the new LTTng can not easily co-exist in the same plug-ins... The new LTTng is a major rewrite that has a different file format, new state system, tracer control interface, scope (kernel + user space), etc. Even the views are impacted.

Also, the legacy LTTng tracer - the thing we integrated so far - is no longer being actively developed by the Poly guys. However, since it is still in use 'out there', we don't feel comfortable getting rid of our integration just yet. But, since we don't plan on putting too much maintenance effort in it, we will internalize all its APIs.

As mentionned above, LTTng 2.0 uses a new trace format (CTF) for which we developed a parser in Java. An interesting consequence of developing our own parser is that we will have a 100% Java solution for the LTTng Eclipse integration (i.e. we get rid of the C parsing libraries as well as the accompanying JNI wrapper). The CTF parser is not LTTng-specific and can be re-used as a headless component without TMF or LTTng.

Finally, the new LTTng tracer is domain agnostic and can/will be used for application (non-kernel) traces. This means that it is no longer such a great idea to bundle tracer control and kernel trace analysis.

The solution would be to package the legacy part 'as-is' and to introduce new features (and their accompanying plug-ins) for LTTng 2.0. In ASCII-art.it would look like this:

+-----------+
+ Kernel TA +
+-----+-----+
      +
      +
+-----+-----+    +-----------+
+ LTTng 2.0 +    + LTTng 0.x +
+-----+-----+    +-----+-----+
      +                +
      +----------------+
      +
+-----+-----+    +---------+
+  TMF 1.0  +----+ CTF 1.x +
+-----------+    +---------+


Where we would have the following plug-ins:

[1] TMF (Tracing and Monitoring Framework)
- org.eclipse.linuxtools.tmf (feature)
- org.eclipse.linuxtools.tmf.core
- org.eclipse.linuxtools.tmf.core.tests
- org.eclipse.linuxtools.tmf.ui
- org.eclipse.linuxtools.tmf.ui.tests

[2] LTTng (legacy)
- org.eclipse.linuxtools.lttng (feature)
- org.eclipse.linuxtools.lttng.core
- org.eclipse.linuxtools.lttng.core.tests
- org.eclipse.linuxtools.lttng.ui
- org.eclipse.linuxtools.lttng.ui.tests

[3] CTF (Common Trace Format) generic parser
- org.eclipse.linuxtools.ctf (feature)
- org.eclipse.linuxtools.ctf.core
- org.eclipse.linuxtools.ctf.core.tests

[4] LTTng 2.0 (tracer control)
- org.eclipse.linuxtools.lttng2 (feature)
- org.eclipse.linuxtools.lttng2.core
- org.eclipse.linuxtools.lttng2.core.tests
- org.eclipse.linuxtools.lttng2.ui
- org.eclipse.linuxtools.lttng2.ui.tests

[5] Kernel Trace Analysis
- org.eclipse.linuxtools.lttng2.kernel (feature)
- org.eclipse.linuxtools.lttng2.kernel.core
- org.eclipse.linuxtools.lttng2.kernel.core.tests
- org.eclipse.linuxtools.lttng2.kernel.ui
- org.eclipse.linuxtools.lttng2.kernel.ui.tests
Comment 1 Andrew Overholt CLA 2012-03-12 16:05:11 EDT
I'd like to strongly suggest we don't ship things as lttng2 unless that's what upstream LTTng would prefer.  Is the plan you mention for 0.10 or for 1.0?  Will 1.0 still contain any of the "old" LTTng plugins?
Comment 2 Francois Chouinard CLA 2012-06-12 16:09:39 EDT
(In reply to comment #1)
> I'd like to strongly suggest we don't ship things as lttng2 unless that's what
> upstream LTTng would prefer.  Is the plan you mention for 0.10 or for 1.0? 
> Will 1.0 still contain any of the "old" LTTng plugins?

We have to discern between user presentation and plug-in structure.

From the user standpoint, the LTTng integration points to the latest (v2.0). If the user wants to use the legacy stuff (v0.x), he/she will have to install the "LTTng legacy" component. All the corresponding views are now labeled "legacy".

So, yes, LT 1.0 will contain both v0.x and v2.0, but v0.x should be optional.

As mentioned elsewhere, we would like to eventually ditch v0.x.
Comment 3 Francois Chouinard CLA 2012-06-27 17:37:00 EDT
Delivered with 1.0