Skip to content

roadmap for wq.app 2.0 #111

@sheppard

Description

@sheppard

wq.app is now over 7 years old! While it has proven to be a useful library over the years, there are a number of early design decisions that are starting to show their age.

  1. When wq.app was created, AMD define() was the best module solution for our goals. Today, most browsers have native support for the ES6 import syntax. And for those that don't, there are plenty of conversion tools and polyfills to chose from on NPM.
  2. What is now referred to as Server-Side Rendering was not an established concept in 2012. Indeed, most of the contemporary UI frameworks of the day would show a blank page until the JavaScript finished loading. This led us to stick with simpler, more robust template systems (Mustache) rather than diving into client-heavy JavaScript frameworks. Today, clients are much faster, and server-side rendering support is built into most JavaScript frameworks.
  3. jQuery Mobile was the dominant library for cross-platform mobile application development. Given its broad support at the time, it appeared to be a safe choice for building on. However, the last stable release to jQuery Mobile was in 2014, and there has been effectively no activity since 2016. While the platform has been remarkably stable, it does not appear to have a future. It is time to move on.

At this point, the plan is for wq.app 2.0 to be built on React, with Redux for the data layer and Material UI for the interface. Since this new version will be largely incompatible with wq.app 1.0/1.1, the rollout will be staged to the extent possible, providing several opportunities for partial upgrades. Due to resource constraints, there is currently no plan to indefinitely maintain backwards compatibility with wq.app 1.x. Instead, some features will start out as optional and later become required.

  • 1.1.2 - NPM Integration
  • 1.2 - Redux Integration
    • See redux integration #105
    • The API for wq/model.js and related libraries may change slightly
    • The UI will (hopefully) not change
  • 1.3 - React Integration
    • See integrate React & Material UI #115 and improve react & react native integration #122
    • Create a new Material UI-based "theme" for wq/app.js
      • Incorporate ES6 modules and JSX
      • Users of the PyPI package will be able to use <script type=module> and a minimal JSX transpiler to integrate.
      • Users wanting more control over their builds will be able to use npm to install wq.app.
    • The jQuery Mobile "theme" will still use PyPI, RequireJS/AMD and Mustache templates
    • The wq/app.js plugin API will be adapted to integrate with React, while maintaining backwards compatibility where possible.
      • The idea is that most plugins in wq.app 1.3 should be compatible with both "themes"
      • One key question is whether a jQuery $page object will still be available for DOM manipulation.
  • 2.0 - Drop jQuery Mobile Support
    • Determine if/how to integrate React's server-side rendering support into wq.db
    • Completely drop support for jQuery Mobile and AMD.
      • Users that want AMD will be able to use custom npm builds if desired.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions