thegrumpys / odop

Open Design Optimization Platform (ODOP) - Coil spring design app; mechanical springs; compression spring, extension spring, torsion spring
https://www.springdesignsoftware.org
MIT License
4 stars 5 forks source link

Alternate behaviors based on previous activity of user #797

Open grumpyinca opened 1 year ago

grumpyinca commented 1 year ago

Objective / Mission statement

It is desirable to adapt the ODOP user experience based on a user's previous experience with the app. Specifically, it is desirable to use counts of what a given user has seen (tooltips, hints, AutoFix highlights, Welcome script) to selectively disable display of those elements in the future. Thus, the effect is an automatically configured transition from the previously described (See: #756) "novice mode" to "expert mode". The net effect should be to allow future development of more "just in time" assistance for novice users while maintaining a cleaner user interface for experienced users.

Background / Context

Currently, all users, first timers and highly experienced repeat users alike, get the same treatment (user experience) when launching and using the app.

SpringDesignSoftware.org currently provides three paths to form the query parameter string and launch the app:

  1. SIGN IN in the upper right of the home page goes to the File : Open dialog
  2. The Spring Type pages have the user to select units and then launch the app in Calculator View
  3. The Getting Started page has the user select spring type, units & view and then launches the app

Options #2 & #3 always execute the appropriate Welcome script (welcomeAdv.js or welcomeCalc.js).

A previous proposal to implement a "been here before" cookie and associated behavior change on the SpringDesignSoftware.org side was investigated but abandoned based on development difficulty. Thus, this discussion is in the context of implementing something on the odop.herokuapp.com side.

Proposed first case

As a first step, it is desirable to eliminate repeat displays of the Welcome Script for returning users. Perhaps the mechanism can be so flexible as to suppress display of the script only when all pages have been viewed at least once and the first page viewed at least n more times.

Ideally, the selected approach to suppress the Welcome script can be extended to change other aspects of the user experience based on the user's previous activity and experience level.

Implementation possibilities

There are at least two mechanisms for obtaining and/or retaining information about an unregistered user's previous activity with the app:

  1. a cookie (or something along the lines of how AutoSave data is currently handled)
  2. scanning the IP_address field of the usage log

Each mechanism has its own limitations. The relatively common usage of VPNs likely makes the cookie approach more reliable and extensible. Each usage of the app should leave or update a cookie in the user's browser. This cookie can retain the cookie's version, a count of the number of times the app has been launched, the number of searches executed, etc.

grumpyinca commented 1 year ago

If a cookie approach is implemented, there should be a mechanism to clear the cookie. Perhaps this could be an execute script. Perhaps a more granular approach involving Preferences is the right answer.

grumpyinca commented 1 year ago

Today's conversation touched on various issues and concerns regarding this proposal. A few of these include:

grumpyinca commented 1 year ago

Another possible application of the feature(s) described above is in providing control for a prompt to respond to a survey question. Specifically, a user that has performed a specified count of Searches could be prompted to rate their experience on some scale.

Potentially, this prompt may be triggered only by the BeforeUnload event. The results could go into the usageLog.

Many different kinds of survey questions could be established over the course of succeeding ODOP releases.