Project Home
Project Home
Trackers
Trackers
Documents
Documents
Wiki
Wiki
Discussion Forums
Discussions
Project Information
Project Info
wiki2948: F27IntegrationDesignDoc (Version 5)

Overview#

This is the design document for the "F27 Integration" feature.

References:#

  • MRD 103 - Momentics IDE v6.4.1 shall provide capabilities to import BSP structures and QNX projects from Foundry27.
  • SRS 103.01 - IDE shall provide a source projects discovery mechanism within IDE to browse project available to download from foundry27
  • SRS 103.02 - IDE shall provide a command to import and create project(s) discovered on Foundry27 which would be buildable and updatable from svn

Requirements#

  • R1: Introduce a UI to discover and show packages available on Foundry27 for checkout
  • R2: Available for download could be:
    • R2-0: Source code for projects
    • R2-1: Specific stable, milestone, integration or nightly builds
    • R2-2: Latest builds of the above categories
    • R2-3: Trunk
  • R3: In all cases, the import is simply an SVN check-out code from a branch, a tag or trunk. The link with SVN is "alive" (can get history, update, etc...)
  • R4: BSPs are just a specialization of the above where a System Builder Project is created in addition to the other projects
  • R5: Source package are hierarchical; e.g. One can pick only a subsystem of a parent package (e.g. System from Core OS)

Scenarios#

Use one of the following mechanisms to check-out packages from F27#

  • Add F27 source locations to the "SVN Repositories" view and check-out directly from the source trees
  • Launch the IDE import wizard "Import -> QNX Source Package" to locate and import remote packages on F27
  • Open a new "F27 view" to browse F27 packages, or use an embedded browser to connect to F27 packages tree page

Design#

General#

  • A UI to show available F27 packages browse-able in a tree structure
  • An action to check out F27 packages and create build-able projects

UI design overview#

Scenarios 1 - use "SVN Repositories" view and check-out directly from the source trees#

  • User setup F27 repositories in the "SVN Repositories" view, browse the available packages
  • A new item called "QNX Checkout" is added to the SVN Repositories view right click context menu
  • User select a F27 package and perform a "QNX Checkout" to invoke the action

Scenarios 2 - use IDE import wizard to locate and import remote packages on F27#

  • User Open "Import -> QNX Source Package".
  • The "Import QNX Sources" panel shows both locally installed packages and remote packages hosted on F27
  • Remote packages are identified with special icons to distinguish them from local packages
  • User browse list of packages, the panel shows the URL of packages and descriptions
  • User Select one package and perform a source checkout to keep live status, or perform an export to copy the source without keeping file history

Scenarios 3 - use a new "F27 view" to browse and check-out F27 packages#

  • A "F27 View" is added to a QNX perspective. The view is the front-end interface for user to browse and checkout F27 packages
  • The data provider for the view comes from a meta info record which feeds the data on F27 packages
  • The record is hosted on F27. The view dynamically queries the record so the data is always up to date
  • The view lays out the data in a hierarchical manner, presents in a project specific structure.
Example of the view:

F27ViewExample/f27_view_example_small.jpgClick to enlarge

  • The view distinguishes the checked-out package in different color (or dim the package) so the user won't accidentally check-out the same package twice
  • The view hides the technical details of the F27 packages thus saves the user complicated setup steps
  • The view should be headless wherever possible; only interacts with the user when necessary
  • The view should be dynamic - querying the F27 periodically for update so the user always sees the live package status
  • The view should have notification mechanism built-in so the user will be notified (in the status bar) when there is update available

Action design overview#

  • The action is invoked from the view context menu in scenarios 1 and 3, and is invoked from the import wizard in scenario 2
  • The action is the extension to the SVN check-out (or export) command with added QNX logic
  • The action goes through the package dependency and recursively checks out depending source code from F27
  • The action looks at the package meta data (module.tmpl?), creates correct type of project(s) and defines appropriate project dependency
  • The action sets up the required project properties (compiler options, build targets, etc.) so the projects are build-able without manual tune up
  • The action should not change the source tree layout; this is to preserve the "live" status of the checked out source
  • The action should take some special steps to setup the "prebuilt" and "staging" areas for the project whenever necessary

Add-on features#

A "F27 Welcome" page with community news, posted downloads and updated product marketing collaterial#

  • The welcome page is part of the Eclipse "welcome" perspective and is invoked from "Help -> Welcome"
  • The welcome page has links to remote F27 pages and to local help pages
  • The welcome and can have links to a F27 cheat sheet with action to perform F27 checkout

A notification mechanism to pull package update information from F27#

  • Based on what the user has checked out the notification displays package update, new downloads, new tag/branch for the source, etc.
  • Notification can be in the form of a pop-on panel displaying info for several seconds then disappear, or an animated icon on the tool bar
  • There is a preference page to set the granularity of the notification (get all, get only new downloads, etc.), and allow user to disable the mechanism

Get source update from foundry using SVN repository synchronization and update#

  • With checked-out packages, user sees the project being "live" as he can get history, synchronize, update and commit changes to F27

Attachments:
Image Project_Settings_Page.jpg [F27IntegrationDesignDoc/Project_Settings_Page.jpg]
Image Remote_Package_Listing_Page.jpg [F27IntegrationDesignDoc/Remote_Package_Listing_Page.jpg]
Image Local_Package_Page.jpg [F27IntegrationDesignDoc/Local_Package_Page.jpg]
Image Import_Method_Selection_Page.jpg [F27IntegrationDesignDoc/Import_Method_Selection_Page.jpg]
Text f27.xml [F27IntegrationDesignDoc/f27.xml]
Image f27_wizard_new_repository.jpg [F27IntegrationDesignDoc/f27_wizard_new_repository.jpg]
Image f27_wizard_working_set.jpg [F27IntegrationDesignDoc/f27_wizard_working_set.jpg]
Image f27_wizard_projects.jpg [F27IntegrationDesignDoc/f27_wizard_projects.jpg]
Image f27_wizard_package_dependency.jpg [F27IntegrationDesignDoc/f27_wizard_package_dependency.jpg]
Image f27_view_example_new.jpg [F27IntegrationDesignDoc/f27_view_example_new.jpg]