Wizard API - Plan of redesign

This is preliminary plan for Wizard API redesign in core platform.
The plan defines:
  • highlevel areas,
  • tasks in detail for each area,
  • milestones in which the plan can be implemented.
The plan is still quite high level and needs to go into more details if realistic estimates are needed. At the moment it just captures all what has to be done, all what is unknown and needs to be analyzed and defines dependencies between these tasks.

If there is no status or owner mentioned it means that no work was done yet and task is not planned yet.
The tasks in issuezilla hasn't be filed yet, will be made soon.

Highlevel Areas

The Wizard API redesign plan can be split into these highlevel areas:
  • A1: Propose Wizard API
    Prototype API&SPI, discuss and reflecting changes and pass the standard Architecture review.
  • A2: Changes in Templates management
    Prototype new Templates management (w/o old datasystems) and new wizard built on the top of Wizard API.
  • B1: Migrate to Wizard API
    Implement NetBeans wizard default implementation and all core module's usages of old WizardDescriptor should be rewritten to use new Wizard API.
  • B2: Create new TemplateWizard implementation
    Implement new TemplateWizard implementation with new templates management.
  • C1: Provide examples how to use Wizard API
    Provide examples how to use Wizard API features use the supported use-cases, write Migration guide from old wizard's implementation to Wizard API.

Areas in more detail

A1: Propose Wizard API

  • A1.1: create proposal for the module and its public API &SPI
    Status: in progress.
    Comment: The Wizard API is available on openide/wizards on branch .

  • A1.2: create prototype for all the supported use-cases
Status: in progress.
Comment: prototypes are available on openide/wizards/prototype on branch .

  • A1.3: discuss them on mailing list and incorporate feedback

  • A1.4: finalize Wizard API
    • A1.4.1: document all API contracts
    • A1.4.2: completing API documentation

  • A1.5: process Architecture Review
  • Status: in progress.
    IssueZilla: 36584
    Owner: jrechtacek@netbeans.org

    Dependencies:
    A1.3 and A1.4 depends on A1.2,
    A1.4 also depends on A2.5, A1.4 and A1.5 wait to each other.

    A2: Changes in Templates management

    • A2.1: Propose a concept of Templates management
    • IssueZilla:
    36709
    Owner: pnejedly@netbeans.org

  • A2.2: Separate openide/datasystems from wizard for templates
  • IssueZilla: 34043
    Owner: jrechtacek@netbeans.org

  • A2.3: Propose Templates registration in module's layer

  • IssueZilla: 36709
    Owner: pnejedly@netbeans.org

  • A2.4: Investigate backward compatibility for Templates

  • IssueZilla: 36709
    Owner: pnejedly@netbeans.org

  • A2.5: Prototype Template wizard as Wizard API use-case

  • Dependencies:
    A2.5 depends on A1.2,
    A2.3 depends on A2.1,
    A2.4 depends on A2.3.

    B1: Migrate to Wizard API

    Implement NetBeans wizard default implementation and all core module's usages of old WizardDescriptor should be rewritten to use new Wizard API.
    • B1.1: Create default NetBeans WizardUI
    • B1.1.1: Provide NetBeans WizardUI customization API
    • B1.1.2: Implement default NetBeans WizardUI
  • B1.2: Rewrite core's modules wizard. e.g. Mount wizard, AutoUpdate wizard

  • B1.3: Document experience with using API and hints how to effective use them

  • Dependencies:
    B1.1 depends on A1.2,
    B1.2 depends on A1.4 and B1.1,
    B1.3 depends on B1.2.

    B2: Create new TemplateWizard implementation

    Implement TemplateWizard separated from old datasystems (package org.openide.loaders) uses proposed Templates registration. Also document how to migrate
    • B2.1: Create TemplateWizard and prepare shared wizard's pages
    • B2.1.1: Prepare shared wizard's page e.g. TemplateChooser. TargetChooser

  • B2.1.2: Make ready registration Templates in registry

  • B2.2: Enable reading old format Templates folder

  • B2.3: Document migration to Wizard API

  • Dependencies:
    B2.1.1 depends on A2.1,
    B2.1.2 depends on A2.3,
    B2.2 depends on A2.4.

    C1: Provide examples how to use Wizard API

    Write code examples built on the top Wizard API, write User view how to use this API and provide support on mailing lists and internally to help use this API.
    • C1.1: Write code examples demonstrates API features

  • C1.2: Write User view

  • Dependencies:
    C1.1 depends on all above,
    C1.2 depends on B1.3.

    Milestones

    The above tasks can be grouped into these milestones.

    M1: Wizard API - basic implementation ready
    • finish A1.2
    • Note: Merge Wizard API to main trunk as devel.
    • status: in progress
    • Expected date: postponed (new date will be TBD)

    M2: Pass Architecture Review
    • finish A1.5
    • depends on: M1 and Architecture reviewers
    • Note: Deprecate WizardDescriptor.
    • status: in progress
    • Expected date: postponed (new date will be TBD)

    M3: New Templates - basic management ready
    • finish A2.5
    • status: not in progress but must be started soon
    • Expected date: postponed (new date will be TBD)

    M4: Core's wizards migrated - full implementation Wizard API
    • depends on: M1
    • finish B1.2
    • Expected date: postponed (new date will be TBD)

    M5: New Templates - full implementation TemplatesWizard ready
    • depends on: M3, M4
    • finish B2.2
    • Expected date:

    M5: API documentation and examples ready
    • depends on: M3, M5
    • finish B1.3, B2.3 and C1.2
    • Expected date:
    Current plan is to finish M1, process M2 and start M3 as soon as possible.

    Project Features

    About this Project

    openide was started in November 2009, is owned by Antonin Nebuzelsky, and has 87 members.
    By use of this website, you agree to the NetBeans Policies and Terms of Use (revision 20160708.bf2ac18). © 2014, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo
     
     
    Close
    loading
    Please Confirm
    Close