Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

SIGAda Hibachi Workshop Presentation


Published on

Presentation about the Hibachi project, a plugin for Eclipse supporting Ada development.

By Tom GROSMAN. Licensed under the Eclipse Public License v1.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

SIGAda Hibachi Workshop Presentation

  1. 1. Hibachi The Ada Development Tools Project for Eclipse Tom GROSMAN, Project Lead [email_address]
  2. 2. Workshop Goals <ul><li>Understand Eclipse </li></ul><ul><li>Discover Hibachi </li></ul><ul><li>Grow the Hibachi community </li></ul>
  3. 3. Workshop Overview <ul><li>Introduction </li></ul><ul><ul><li>Eclipse </li></ul></ul><ul><ul><li>Hibachi </li></ul></ul><ul><li>Background </li></ul><ul><ul><li>Overview of Eclipse </li></ul></ul><ul><ul><li>Hibachi projects goals </li></ul></ul><ul><ul><li>The Eclipse development process </li></ul></ul><ul><ul><li>The scope and area of application of Hibachi </li></ul></ul><ul><li>Current Status </li></ul><ul><ul><li>Initial release (Demo) </li></ul></ul><ul><ul><li>Development resources in place </li></ul></ul><ul><li>Future Direction </li></ul><ul><ul><li>Development plan </li></ul></ul><ul><ul><li>Future Features </li></ul></ul><ul><ul><li>Committer Presentations </li></ul></ul><ul><li>Expectations, Suggestions, Wishlist </li></ul><ul><ul><li>Open Discussion, Questions </li></ul></ul>
  4. 4. What is Eclipse ? <ul><li>Eclipse is an open source community whose projects are focused on building an open development platform comprised of extensible frameworks , tools and runtimes for building, deploying and managing software across the lifecycle. A large and vibrant ecosystem of major technology vendors, innovative start-ups, universities, research institutions and individuals extend, complement and support the Eclipse platform . </li></ul><ul><li>Eclipse is much more than a Java IDE ! </li></ul>
  5. 5. What is Hibachi? <ul><li>Hibachi, an open source project under the Eclipse Tools Project is intended to </li></ul><ul><li>Create a standard , vendor neutral  Ada development environment for Eclipse that will maintain the look and feel of the CDT and JDT </li></ul><ul><li>Provide a standard Ada environment with which third party tool developers can easily work, regardless of the choice of underlying compiler technology. Such tools would include, but are not limited to, modeling tools, editor tools, static and dynamic code analysis tools (ex coverage, profiling), refactoring tools, configuration management tools.  </li></ul>
  6. 6. Background <ul><ul><li>Overview of Eclipse </li></ul></ul><ul><ul><ul><li>Eclipse Foundation </li></ul></ul></ul><ul><ul><ul><li>Eclipse Platform </li></ul></ul></ul><ul><ul><ul><li>Eclipse Community </li></ul></ul></ul><ul><ul><ul><li>Eclipse Ecosystem </li></ul></ul></ul><ul><ul><li>Hibachi rationale and goals </li></ul></ul><ul><ul><li>The Eclipse development process </li></ul></ul><ul><ul><li>The scope and area of application of Hibachi </li></ul></ul>
  7. 7. What is the Eclipse Foundation? <ul><li>The Eclipse Foundation is a not-for-profit, member supported corporation that hosts the Eclipse projects. The Foundation provides services to run the IT infrastructure, IP due diligence, mentor the open source projects during the Eclipse development process and provide marketing and business development support for the Eclipse community. </li></ul><ul><li>The Eclipse Foundation does not actually develop the open source code. All of the open source software at Eclipse is developed by open source developers, called committers, which are volunteered or contributed by organizations and individuals. </li></ul><ul><li>For more information about Eclipse and the Eclipse Foundation, visit </li></ul>
  8. 8. The Eclipse Platform <ul><li>Written in Java </li></ul><ul><ul><li>Portable </li></ul></ul><ul><ul><ul><li>Runs on any architecture that has a J2SE VM running </li></ul></ul></ul><ul><li>Freely downloadable from the web via </li></ul><ul><li>Extensible via an extension point/plug-in mechanism implemented using robust, well-defined published APIs </li></ul><ul><ul><li>Extension (plugin) may be open source </li></ul></ul><ul><ul><li>Extension may be proprietary </li></ul></ul><ul><ul><li>Extension may be a combination </li></ul></ul><ul><li>Includes several plugins in basic configuration as delivered, such as JDT, a top-notch Java Development Toolkit as well as a Java compiler </li></ul><ul><li>Best-of-breed functionality available for all to use (example- CVS integration) </li></ul>
  9. 9. The Eclipse platform (cont) <ul><li>Releases are syncronized so the various platform components are compatible and available together </li></ul><ul><li>Projects follow Eclipse development methodology (transparency, meritocracy, « code talks ») </li></ul><ul><li>Projects are open source under Eclipse Public Licence (EPL) </li></ul><ul><li>Uses standard bug tracking via Bugzilla </li></ul><ul><li>Community is made up of users, testers, contributers and committers </li></ul><ul><li>All code is peer reviewed </li></ul>
  10. 10. Eclipse Open Source <ul><li>Over 60 projects </li></ul><ul><li>Over 800 committers </li></ul><ul><li>Eclipse is used for </li></ul><ul><ul><li>Enterprise Development </li></ul></ul><ul><ul><li>Embedded and Device Development </li></ul></ul><ul><ul><li>Rich Client Platform </li></ul></ul><ul><ul><li>Application Frameworks </li></ul></ul><ul><ul><li>Application Lifecycle Management (ALM) </li></ul></ul><ul><ul><li>Language IDE </li></ul></ul><ul><ul><li>… </li></ul></ul>
  11. 11. Examples of Eclipse projects <ul><li>JDT (Java development) </li></ul><ul><li>CDT (C/C++ development) </li></ul><ul><li>Photran (Fortran) </li></ul><ul><li>UML2 </li></ul><ul><li>PDE (Plugin Development Environment) </li></ul><ul><li>Subversive (Configuration Management) </li></ul><ul><li>TPTP (Testing/Profiling Tools) </li></ul><ul><li>DSDP (Embedded Development) </li></ul><ul><li>… </li></ul>
  12. 12. RCP - Rich Client Platform <ul><li>While the Eclipse platform is designed to serve as an open tools platform, it is architected so that its components could be used to build just about any client application. The minimal set of plug-ins needed to build a rich client application is collectively known as the Rich Client Platform . </li></ul><ul><li>Applications other than IDEs can be built using a subset of the platform. These rich applications are still based on a dynamic plug-in model, and the UI is built using the same toolkits and extension points. The layout and function of the workbench is under fine-grained control of the plug-in developer in this case. </li></ul><ul><li>When we say that the Rich Client Platform is the minimal set of plug-ins needed to build a platform application with a UI, we mean that your application need only require two plug-ins, org.eclipse.ui and org.eclipse.core.runtime , and their prerequisites. </li></ul><ul><li>However, rich client applications are free to use any API deemed necessary for their feature set, and can require any plug-ins above the bare minimum. Examples include the Help UI, and the Update Manager. </li></ul>
  13. 13. DSDP- Device Software Development Platform <ul><li>The Device Software Development Platform (DSDP) was established as a top-level project to make the Eclipse platform more suitable for embedded development. DSDP is supported by a growing number of vendors to create a common open source framework and exemplary tools to enable better integration of Eclipse plugins from various sources with target devices, operating systems, and development tools. Initially, DSDP focuses on building infrastructure for Target Management, Device Debugging, Mobile Java, and Embedded GUI's. </li></ul>
  14. 14. The Eclipse Community <ul><li>Committers </li></ul><ul><ul><li>Devoted developers (at least 50%) </li></ul></ul><ul><ul><li>Write access to code repository </li></ul></ul><ul><ul><li>Nominated and elected by current committers </li></ul></ul><ul><ul><li>Responsible for project architecture and direction </li></ul></ul><ul><ul><li>Responsive to community needs </li></ul></ul><ul><ul><li>A privelege based on participation </li></ul></ul>
  15. 15. Contributors <ul><li>Able to contribute via Bugzilla </li></ul><ul><ul><li>New features </li></ul></ul><ul><ul><li>Bug fixes </li></ul></ul><ul><ul><li>Documentation </li></ul></ul><ul><li>Participate in newsgroup, mailing list </li></ul><ul><li>Add to Hibachi Wiki, FAQs, How-To Guides </li></ul><ul><li>Testers (writing or running tests) </li></ul><ul><li>On path to becoming a project committer </li></ul>
  16. 16. Adopters <ul><li>Use services and extension points to work with their own “add-on” </li></ul><ul><li>Influence Hibachi architecture and direction </li></ul><ul><li>May also be committer or contributor </li></ul>
  17. 17. Users <ul><li>End Users </li></ul><ul><li>May- not even be aware that they are using Eclipse </li></ul><ul><ul><li>Rebranding </li></ul></ul><ul><ul><li>RCP, eRCP </li></ul></ul>
  18. 18. The Eclipse Ecosystem <ul><li>Eclipse Foundation </li></ul><ul><li>Eclipse Management Organization </li></ul><ul><li>Eclipse Members </li></ul><ul><ul><li>Strategic (IBM, Intel, Motorola, WindRiver) </li></ul></ul><ul><ul><li>Add-in Provider (AdaCore, DDC-I, EADS, LynuxWorks, Mentor Graphics, OC Systems,Thales, TimeSys) </li></ul></ul><ul><ul><li>Associate </li></ul></ul><ul><li>Eclipse Projects </li></ul><ul><li>Adopter/Integrators </li></ul><ul><li>Users </li></ul>
  19. 19. Eclipse Principles <ul><li>Open Source Rules of Engagement </li></ul><ul><li>Quality Culture </li></ul><ul><li>Collective Reputation </li></ul><ul><li>Eclipse Ecosystem </li></ul><ul><li>Three Communities </li></ul><ul><li>Clear and Concise </li></ul><ul><li>Freedom, Autonomy and Evolution </li></ul><ul><li>Just Enough Process </li></ul>
  20. 20. The Three Laws of Eclipse (With a nod to Issac Asimov) <ul><li>A committer may not, through action or inaction, violate IP cleanliness </li></ul><ul><ul><li>Clean Code . Making sure that all incoming code is legally contributed. </li></ul></ul><ul><ul><li>Approved Libraries . Making sure that all third-party code included, or merely referenced, is cleared by Eclipse Legal through a contribution questionnaire. </li></ul></ul><ul><ul><li>Paper'ed People Making sure that all committers have committer agreements covering each of the committer's projects. </li></ul></ul>
  21. 21. Three Eclipse Laws (cont) <ul><li>A committer may not, through action or inaction, disenfranchise contributors </li></ul><ul><ul><li>Public Queue. All bugs and tasks are tracked at the public bugzilla </li></ul></ul><ul><ul><li>Available Tools. All the source code and all the tools used to build a project are available for everyone to use. </li></ul></ul><ul><ul><li>Transparent Elections. Elections for new committers are open and public, with full records and justifications. </li></ul></ul>
  22. 22. Three Eclipse Laws (cont) <ul><li>A committer may not, through action or inaction, surprise the membership </li></ul><ul><ul><li>Open Plans. Planning and status reports and meetings are open to all. Most projects use the wiki. </li></ul></ul><ul><ul><li>Public Reviews. At major events in a project lifecycle, reviews are held to inform the membership. </li></ul></ul><ul><ul><li>Prominent Announcements. When starting a major new feature or effort that does not require a formal review, committers send an announcement alerting the members to potential future new cool stuff. </li></ul></ul>
  23. 23. Development Process <ul><li>Mentors </li></ul><ul><li>Project Lifecycle </li></ul><ul><ul><li>Pre-Proposal </li></ul></ul><ul><ul><li>Proposal </li></ul></ul><ul><ul><li>Incubation </li></ul></ul><ul><ul><li>Mature </li></ul></ul><ul><ul><li>Top-Level </li></ul></ul><ul><ul><li>Archived </li></ul></ul><ul><li>Reviews </li></ul><ul><ul><li>Creation Review </li></ul></ul><ul><ul><li>Graduation Review </li></ul></ul><ul><ul><li>Release Review </li></ul></ul><ul><ul><li>Promotion Review </li></ul></ul><ul><ul><li>Continuation Review </li></ul></ul><ul><ul><li>Termination Review </li></ul></ul><ul><li>Membership Involvement </li></ul><ul><li>Grievance Handling </li></ul>
  24. 24. Why Eclipse, Why Hibachi ? <ul><li>Customer/Market demand </li></ul><ul><li>Competition from other language IDEs </li></ul><ul><li>Understanding Value Added Proposition </li></ul><ul><li>Force multiplier </li></ul><ul><li>Attract more third party integrators </li></ul><ul><li>Simplify synchronizing updates </li></ul><ul><li>Coopetition- A new paradigm in the Ada industry ? </li></ul>
  25. 25. Goals <ul><li>Hibachi is intended to be a full-featured IDE for developing Ada native and embedded applications. Hibachi will independent of the underlying Ada compiler technology. </li></ul><ul><li>Hibachi will be architected in such a way as to allow integrators the possibility to extend or replace the functionality it provides. </li></ul><ul><li>Hibachi will provide an open framework for the integration and use of other tools used during the lifecycle of large-scale Ada application development. These tools include but are not limited to Static Analysis, Modeling, Testing and Verification, Performance Analysis, Documentation, Refactoring and Configuration Management. </li></ul>
  26. 26. Hibachi <ul><ul><li>Opensource (EPL) </li></ul></ul><ul><ul><li>Extensible </li></ul></ul><ul><ul><li>Well documented API </li></ul></ul><ul><ul><li>Based on existing Ada plugin technology </li></ul></ul><ul><ul><li>Participation of major active Ada players </li></ul></ul><ul><ul><li>Participation of academia </li></ul></ul>
  27. 27. Hibachi <ul><ul><li>Participation of open source Ada community </li></ul></ul><ul><ul><li>Participation of industrial partners </li></ul></ul><ul><ul><li>Creation Review- 17 September 2007 </li></ul></ul><ul><ul><li>Project Approved by EMO 24 September 2007 </li></ul></ul><ul><ul><li>Current phase- Incubation </li></ul></ul><ul><ul><li>Project mentors- Doug Schaefer (QNX/CDT Project Lead, Doug Gaff, WindRiver/DSDP Project Lead) </li></ul></ul><ul><ul><li>First release Q4 2007 </li></ul></ul>
  28. 28. Hibachi Development Practices <ul><li>Transparent discussions, transparent decisions, transparent direction </li></ul><ul><li>Test cases produced with code </li></ul><ul><li>All code peer reviewed </li></ul><ul><li>User Documentation produced with code </li></ul><ul><li>Agile Development </li></ul><ul><li>Nightly automated builds </li></ul><ul><li>Nightly automated test suites </li></ul><ul><li>Meritocracy based (Code talks!) </li></ul>
  29. 29. Releases Practices <ul><li>Agile development </li></ul><ul><ul><li>Frequent Milestones </li></ul></ul><ul><li>Reference platforms </li></ul><ul><ul><li>Windows </li></ul></ul><ul><ul><li>Linux </li></ul></ul><ul><ul><li>Solaris </li></ul></ul><ul><li>Additional platforms </li></ul><ul><ul><li>MacOS (MacAda project) </li></ul></ul><ul><ul><li>Solaris x86 </li></ul></ul><ul><li>“ All in one” distribution </li></ul><ul><ul><li>Gnu Ada toolchain </li></ul></ul>
  30. 30. Current Status <ul><ul><li>Resources in place </li></ul></ul><ul><ul><li>Initial release description </li></ul></ul><ul><ul><li>Hibachi Demo </li></ul></ul>
  31. 31. Resources <ul><li>7 Diverse Initial Committers </li></ul><ul><ul><li>AdaCore, Aonix, CohesionForce, DDC-I </li></ul></ul><ul><li>Initial code base (AonixADT) </li></ul><ul><ul><li>IP scrubbed </li></ul></ul><ul><ul><li>Fully functional </li></ul></ul><ul><ul><li>Support for GNAT and ObjectAda </li></ul></ul><ul><li>Project “provisioned” </li></ul><ul><ul><li>Home Page </li></ul></ul><ul><ul><li>Newsgroup </li></ul></ul><ul><ul><li>Developer Mailing list </li></ul></ul><ul><ul><li>Wiki pages set up </li></ul></ul><ul><li>Contributor/Adopter interest </li></ul><ul><ul><li>Praxis </li></ul></ul><ul><ul><li>OCSystems </li></ul></ul><ul><ul><li>Green Hills Software </li></ul></ul><ul><ul><li>Institute for Software (Switzerland) </li></ul></ul><ul><ul><li>GnuAda Group and MacAda groups </li></ul></ul>
  32. 32. Initial Release <ul><li>Version 0.5 (incubation) </li></ul><ul><li>Eclipse 3.3 (Europa) </li></ul><ul><li>Windows, Linux, SPARC Solaris </li></ul><ul><li>Available Q4 2007 </li></ul><ul><li>Full AonixADT Code Base </li></ul><ul><li>Initial GNAT and ObjectAda toolchain support </li></ul>
  33. 33. An Ada Eclipse Plugin Ada Navigator View Ada Editor Perspective tabs Console View Ada Configurations View Context Sensitive Menu
  34. 34. Completely Unreadable Slide (Features List) <ul><li>Perspectives </li></ul><ul><li>Views (AdaNavigator, Ada Configurations, Disassembly,…) </li></ul><ul><li>Builder </li></ul><ul><ul><li>Managed </li></ul></ul><ul><ul><li>Standard </li></ul></ul><ul><ul><li>Automatic </li></ul></ul><ul><ul><li>MultiLanguage/MultiProject </li></ul></ul><ul><li>Wizards </li></ul><ul><li>Toolchains </li></ul><ul><li>Update Manager </li></ul><ul><li>Language completion </li></ul><ul><li>Structure highlighting </li></ul><ul><li>Code assist </li></ul><ul><li>Formatting (syntactic, semantic, indentation, comment toggling) </li></ul><ul><li>Launcher </li></ul><ul><li>Ada Configurations </li></ul><ul><li>Navigator (file system) </li></ul><ul><li>Outline (package exploreer </li></ul><ul><li>Ada Navigator (Navigator + Outline) </li></ul><ul><li>Searchable Help, Dynamiuc Help, Cheat Sheats </li></ul><ul><li>Compare (local history, other files) </li></ul><ul><li>CMS (CVS, Subversion, Clearcase, …) </li></ul><ul><li>Search </li></ul><ul><ul><li>File (String matching) </li></ul></ul><ul><ul><li>Ada (Semantic searching) </li></ul></ul><ul><ul><li>Reference (Where used) </li></ul></ul><ul><li>Bookmarks </li></ul><ul><li>Problems (navigation) </li></ul><ul><li>Tasks </li></ul><ul><li>Update management </li></ul><ul><li>Debugger </li></ul><ul><ul><li>Task inspection (stack, locals, suspend/kill) </li></ul></ul><ul><ul><li>Attach to running process </li></ul></ul><ul><ul><li>Variable/expression/memory/register inspection and modification </li></ul></ul><ul><ul><li>Breakpoints (conditional, disable, action on break) </li></ul></ul><ul><ul><li>Multilanguage </li></ul></ul>
  35. 35. Future Direction <ul><ul><li>Committer presentations </li></ul></ul><ul><ul><li>Development plan </li></ul></ul><ul><ul><li>Future Features </li></ul></ul>
  36. 36. Committer Presentations <ul><li>How the committer expects to contribute to Hibachi, and use the Hibachi technology </li></ul><ul><li>David Phillips, CTO - CohesionForce </li></ul><ul><li>Greg Gicca, Director of Safety and Security Product Marketing - AdaCore </li></ul>
  37. 37. Future Releases <ul><li>v0.7 (incubation) Q1 2008 </li></ul><ul><ul><li>Open API for additional toolchains </li></ul></ul><ul><ul><li>Additional toolchains (DDC-I, AdaCore GNAT) </li></ul></ul><ul><li>v0.9 (incubation) Q2 2008 </li></ul><ul><ul><li>CDT technology rapproachment </li></ul></ul><ul><ul><li>More APIs, More stable APIs </li></ul></ul><ul><li>v1.0 (mature- Graduation review) Q3 2008 </li></ul><ul><ul><li>Ada 2005 support (if not already done) </li></ul></ul><ul><ul><li>DSDP enabled </li></ul></ul><ul><ul><li>Eclipse 3.4 (Ganymede) </li></ul></ul>
  38. 38. Future features <ul><li>Unit testing (CUTE, …) </li></ul><ul><li>Where Used reimplemention </li></ul><ul><li>Ada 2005 support </li></ul><ul><li>Refactoring (AST development) </li></ul><ul><li>Cheat Sheets </li></ul><ul><li>Reformatter (in Java) </li></ul><ul><li>Mouseover information improvements </li></ul><ul><li>Generic ARM lookup </li></ul><ul><li>More Wizards (Builder, stub generation) </li></ul><ul><li>Code Coverage extension points </li></ul><ul><li>Ada83 support </li></ul><ul><li>Code folding </li></ul><ul><li>Error correction suggestion </li></ul><ul><li>Automatic With insertion </li></ul><ul><li>With tree browser </li></ul><ul><li>Call tree browser </li></ul>
  39. 39. Discussion <ul><li>Expectations </li></ul><ul><li>Suggestions </li></ul><ul><li>Wishlist </li></ul><ul><li>Questions </li></ul>
  40. 40. Sources of information <ul><li>Project page (Wiki, FAQ, release plans, tutorials, docs, presentations…) </li></ul><ul><ul><li> </li></ul></ul><ul><li>Newsgroup </li></ul><ul><ul><li>news:// </li></ul></ul><ul><li>Developer mailing list </li></ul><ul><ul><li> </li></ul></ul><ul><li>Download page </li></ul><ul><ul><li>* </li></ul></ul><ul><li>Source Repository </li></ul><ul><ul><li>* </li></ul></ul><ul><li>Bugzilla </li></ul><ul><ul><li> </li></ul></ul>