Deployment by Device (Sencha vs Extjs)

In response to:  TODO-25 - Getting issue details... STATUS

Problem

Some modules are dependent on Sencha Touch (mobile/tablet) and others are dependent on ExtJS (desktop). These libraries are fairly large themselves and we do not want both of them to be loaded when deployed on modules that are only going to Touch-only or Desktop-only. 

This UI/UX page explains which devices are used for each module (Device Preference by Module).


Background

Question – is there any way to compile an app for the desktop, like a mobile device with Sencha + PhoneGap?

Since Sencha was optimized to take out a lot of ExtJS, Desktop and Mobile shouldn't be packaged together.


Specific Issues, and possible resolution

  1. When opening application, we don't want load time to be more than a few seconds.
    1. One fundamental assumption is that the download time for both libraries is too slow. We should verify that this is true.
    2. Is it possible to use PhoneGap to compile a native app, which can include all the code and be installed (thus, launching and running faster)
  2. When using application, our model has a "home screen" where you can choose a module. This home screen includes all possible modules with a link to each ( RAXAJSS-118 - Getting issue details... STATUS ). However, some of these modules are desktop-only or tablet-only.
    1. If on desktop, we might limit to showing only ExtJS modules (and equivalent for tablet).
    2. If on tablet or desktop, we might show all modules (and include their libraries), and realize that the functionality will be subpar for those which weren't intended for the device.
    3. We might show all in the list, but disable some of the icons, or note "PC Only" or "Tablet only" in small letters on the icon.
    4. We might require that all modules have both Desktop and Tablet versions.
  3. Which modules should be accessible when using Tablet? when using Desktop?
    1. User with desktop: If another module only has a Tablet Mode, you should still be able to view it. (Example: in case need to quickly screen someone while using a desktop)

    2. User with tablet: If another module only has Desktop Mode, you should not be able to view it. We don't want to download the heavyweight extJs on a tablet, due to performance and bandwidth concerns. We also think that the experience when using a Desktop Mode from a tablet will have poor UX (page dimensions, button size, interactions don't work nicely, etc).
  4. When using certain widgets, want their functionality shared as widely as posible (e.g. Search widget  RAXAJSS-7 - Getting issue details... STATUS ). Can this be shared across Sencha and ExtJS, or always specific to one?
    1. Is it possible to create a shared path at a higher directory structure 


Discussion Notes

  • Profiles
    • Sencha Touch can manage this (will redirect to iPhone or Tablet appropriately), but perhaps we can hack it to make ExtJs instance load if you're on a desktop. 
    • Also, we can have a page that checks device and redirects you to Sencha or ExtJS path, as appropriate
    • Or we can load both libraries, and then redirect you to the appropriate module.
  • How are we deploying our application?
    • Back end ... Local Server on the intranet... want to use it to send data mostly, however, not download the app.
    • Front end ... app packaged + installed on tablets. app accessed via browser on desktop (not installed). 
  • Sencha-Touch-all already has ExtJs included with it.
  • How might we solve getting only extJs or Sencha based on the device?
    • Redirect from another page -> based on device, go to extJs or Sencha
    • Profiles option 1 -> hack profiles class (based on device load only Sencha, only ExtJS)
    • Profiles option 2 -> load both libraries and redirect based on device
    • Change repository layout -> separate ExtJS and sencha apps (downside ... reusing lot of code, so don't want to separate so much...)
    • Change repository layout -> package with Phonegap, separately or together
  • Need actual devices to test against.
Todos

TODO-26 - Getting issue details... STATUS

TODO-27 - Getting issue details... STATUS

TODO-28 - Getting issue details... STATUS

TODO-29 - Getting issue details... STATUS

TODO-30 - Getting issue details... STATUS