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:
Click 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
- 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 the Eclipse update notifier or an 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
Design Review#
Design review meeting minutes - Nov. 21st, 2008#
- Attendants - Fred Plante, Elena Laskavaia, Andy Jin
- Reviewed the proposed "F27 view".
- Fred suggested a "F27 Welcome" page to promote the new feature and the F27 site
- A new U.I. scenario is proposed - use the "QNX Source Package" import wizard, add remote package to the list of available packages to import
- Discussed the notification mechanism. Proposed a preference page to tune its granularity and allow user to turn if off
- For 6.4.1 release, we will go with the Scenarios 2 - use IDE import wizard to locate and import remote packages on F27. Scenario2 Design
- Action item: Andy to updated the design doc to include new proposals and new scenarios - Done