Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

roadmap for wq.app 2.0 #111

Closed
4 tasks done
sheppard opened this issue Apr 17, 2019 · 0 comments
Closed
4 tasks done

roadmap for wq.app 2.0 #111

sheppard opened this issue Apr 17, 2019 · 0 comments

Comments

@sheppard
Copy link
Member

sheppard commented Apr 17, 2019

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.
@sheppard sheppard pinned this issue Apr 17, 2019
@sheppard sheppard added this to the 2.0 - Material UI milestone Apr 17, 2019
@sheppard sheppard changed the title roadmap for 2019 and beyond roadmap for wq.app 2.0 Mar 5, 2020
sheppard added a commit to wq/wq.db that referenced this issue Sep 2, 2020
(for use with @wq/react; see wq/wq.app#111)
sheppard added a commit to wq/wq.db that referenced this issue Sep 29, 2020
sheppard added a commit to wq/wq.db that referenced this issue Sep 29, 2020
sheppard added a commit to wq/wq-django-template that referenced this issue Sep 29, 2020
 - leverage collectstatic on app/ (fixes #6, fixes #21)
 - replace RequireJS build with ES modules (see wq/wq.app#111)
 - move --with-npm template to @wq/cra-template (in wq.start repo)
 - implement service worker (see wq/wq.app#63, wq/wq.app#107)
 - drop support for PhoneGap Build and Application Cache (see wq/wq.app#121)
sheppard added a commit to wq/wq.create that referenced this issue Sep 29, 2020
 - use collectstatic (see wq/wq-django-template#6 & wq/wq-django-template#21)
 - replace RequireJS build with ES modules (see wq/wq.app#111)
 - move --with-npm template to @wq/cra-template
 - implement service worker (see wq/wq.app#63, wq/wq.app#107)
 - drop support for PhoneGap Build and Application Cache (see wq/wq.app#121)
sheppard added a commit that referenced this issue Sep 29, 2020
@sheppard sheppard unpinned this issue Feb 20, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant