= Linux Tools 3.0 Release Review =
Planned Review Date: 2014-06-06

Communication Channel:  linuxtools-dev@eclipse.org (https://dev.eclipse.org/mailman/listinfo/linuxtools-dev)

Author:  Jeff Johnston <jjohnstn@redhat.com>

== Introduction ==
* The Linux Tools project is a two-faceted project
# Firstly, it provides tools and frameworks for writing tools relevant to Linux developers.
# Secondly, it provides a place for Linux distributions to collaboratively overcome issues surrounding distribution packaging of Eclipse technology. The project produces both best practices and tools related to packaging.
* Project plan:  http://www.eclipse.org/projects/project-plan.php?projectid=tools.linuxtools

== Features ==
* a framework for integrating native profiling tools with the CDT
* visualization, fetching, and control of LTTng traces
* GCov code coverage tool integration
* GProf integration including function-based profiling and integration with the CDT
* an RPM .spec editor with rpmlint integration
* plugins integrating the OProfile profiler with the CDT
* plugins bridging the CDT's hover help functionality with the various open source API documentation formats and tools; called libhover
* Valgrind integration for memcheck, massif, cachegrind and helgrind
* ChangeLog management tools

== New in 3.0 ==
* Gcov annotations now occur in the C/C++ editor
* Substantial SystemTap graphing enhancements
** one-click graphing
** graph scrolling and zooming support added
** bar graph enhancements and tooltips
* Multiple LTTng feature enhancements
** new kernel analysis to analyze CPU usage per process
** new UST Memory Usage View
** new synchronizing of traces from different machines
* More New and Noteworthy for 3.0:
** https://wiki.eclipse.org/Linux_Tools_Project/News/NewIn30

=== Maturity and Communities ===
* A number of years of development and adoption by a variety of companies and many users
* Tools included in Linux distributions
* Open source and commercial extension of plugins and APIs
* Multiple organizations (6 at the time of writing), committers, and contributors involved in community:
** http://www.eclipse.org/projects/project.php?id=tools.linuxtools

=== Openness ===
* Project uses open communication media:
** mailing list, IRC, Bugzilla
* Discussions happen in public and all are invited to any project phone calls
* Project schedule, policies, and procedures are clearly documented and followed

=== "Eclipse way" ===
* All development occurs in Eclipse git repositories
* Eclipse IP policy strictly adhered to
* A copy of our 3.0 IP log, once approved by the Eclipse Legal team, will be archived here:
** http://www.eclipse.org/linuxtools/doc/3.0-approvedIPLog.html
* Eclipse development process followed including releases, documentation, ramp-down, etc.
* Interaction and integration with other Eclipse projects

== APIs ==
* Our APIs have been reviewed and we consider those that are exposed to be suitable for adopters to use.  They will remain stable for the duration of our 3.x lifecycle. 
* As always, the project appreciates feedback via Bugzilla or our mailing list.  This is especially true of adopters and their API needs.

== Architectural Issues ==
* Ongoing work to integrate with tracing and profiling toolkits will enable us to have more extensible frameworks with exemplary implementations.
* Despite being user-focused, we have a few components which provide extension points:
** our profiling tool framework whose use is demonstrated by all of our profiling integration plug-ins: Gcov, Gprof, Perf, OProfile and Valgrind
** our ChangeLog plugin which allows for extensible parsers, formatters, and editors. The extensibility of formatters is demonstrated by our RPM .spec editor
** our libhover component. This plugin provides an extension point that defines a common documentation format for C library hover help
** our LTTng component. This plugin provides an extension point to integrate any type of trace and an extension point for producing UML2 sequence diagrams from traces

== Tool Usability ==
* Our releases thus far have been well-received and at present have satisfied users.  This 3.0 release will hopefully continue to grow our base of satisfied users.
* Our work integrating native profiling tools like LTTng, perf, OProfile, and Valgrind has been introduced to excited audiences. We aim to improve the power of these tools within the IDE making them easier to use and to support additional functionality that is provided via the command line.  Developers making use of our tools will be able to focus on their own projects and not on setting up the underlying tools.

== End-of-Life ==
* We have no end-of-life issues to discuss at this time.  Note that some of our plugins will shortly migrated to our incubator (see below).

== Bugzilla ==
* For our 3.0 release we will have 0 outstanding release-blocker bugs.
* We closed or resolved over 60 bugs during our 3.0 release cycle:
https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced;classification=Tools;product=Linux%20Tools;target_milestone=3.0;bug_status=RESOLVED;bug_status=VERIFIED;bug_status=CLOSED;bugidtype=include;list_id=2295921

== Standards ==
* Our project conforms to the following standards, some of which are ad-hoc and some which are more well-defined:
** Fedora RPM packaging guidelines
*** http://fedoraproject.org/wiki/Packaging/Guidelines
** Informal conventions around use of the GNU Autotools
** GNU ChangeLog formatting
*** http://www.gnu.org/prep/standards/html_node/Style-of-Change-Logs.html#Style-of-Change-Logs
* LTTng trace format
** http://lttng.org

== UI Usability ==
* Our project aims to conform to the Eclipse user interface guidelines.
* All of our user interface components support keyboard navigation.
* We support interactivity of our Valgrind BIRT-generated charts and intend on further increasing our accessibility.
* All of our strings are externalized but we currently have no language packs
* Our strings are registered in Babel for use by translators

== Schedule ==
* Our project aims to release minor releases (3.1, etc.) ahead of Eclipse maintenance releases

== Communities ==
* Our project has a strong relationship with the various Linux distributions (Fedora, Mandriva, Debian, Ubuntu, etc.) with many using our eclipse-build project's output for their Eclipse SDK packages
* The majority of our project's interactions occur on IRC (#eclipse-linux) and our mailing list (linuxtools-dev@eclipse.org)
* We have a centralized update site and use eclipse.org bugzilla for all of our planning and bug tracking
* We make use of our newsgroup for user feedback
* Our project members often speak at conferences such as EclipseCon, the Red Hat Summit, etc.
* Our team members maintain the following blogs:
** http://akurtakov.blogspot.com/ (part of Planet Eclipse)
* We interact often with the CDT project and make use of the GEF and CDT projects
* We are growing our community of adopters

== IP Log ==
* Our IP log including information about all CQs, external contributions, and committers can be found here
** http://www.eclipse.org/projects/ip_log.php?projectid=tools.linuxtools
* A copy of our 3.0 IP log, once approved by the Eclipse Legal team, is archived here:
** http://www.eclipse.org/linuxtools/doc/3.0-approvedIPLog.html

== Committers ==
# Alexander Kurtakov
# Alexandre Montplaisir
# Andrew Ferrazz
# Bernd Hufmann
# Camilo Bernal
# Daniel Henrique Barboza
# Francois Chouinard
# Jeff Johnston
# Marc-Andre Laperle
# Matthew Khouzam
# Otavio Pontes
# Patrick Tasse
# Roland Grunberg
# Sami Wagiaalla
# Xavier Raynaud

== Legal ==
This document copyright 2014, Mozilla and others; licensed under the EPL v1.0.
