Another common problem in web development is session management. Basically, web programmers have two choices, use global sessions or precariously pass variables between forms and links. Both have serious problems:

  • Global sessions
    • Users can’t perform the same basic task in multiple windows on the same site simultaneously.
    • If a user quits a task and returns to a page related to the task later, the system will show the old task’s information. This can be good, but it can also be confusing.
  • Passing variables
    • It’s hard to constrain the user to a path where the programmer can control passing the variables.
    • The number of ways programmers must use to pass variables is daunting. PHP’s non-cookie session method is a good example.

The solution is a true “task bar” (not in the Windows sense). The state of the user’s actions should be encompassed in tasks, and the tasks should be associated with the user. Clicking on a task would bring the user to the first incomplete step. Deleting a task would remove that branch of work. Ideally, the user could jump between tasks whenever, with the system saving any incomplete state. This would function well for single or multiple browser windows on the same site. And while variables would still have to be passed between immediate steps in a task, the programmer needn’t worry about the user getting off track, as the user would only need to click on the task to resume work on it.