|
Size: 8389
Comment: Continued reorg.
|
Size: 12233
Comment: Updates. Remove obsolete, "minor," or obvious items. Simplify.
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 1: | Line 1: |
| = Sage Usability Tasks = Source: [[SageUsability | Sage Usability Improvements List]]. TODO: Assign difficulties to individual tasks, if it's appropriate. |
## page was renamed from SageTasks = Sage Tasks Outline = This is a general outline of targeted areas, including specific tasks, for improving the usability of [[http://www.sagemath.org/ | Sage]]. The sources include the [[devel/SageUsability | Sage Usability Improvements List]] and [[http://sage.math.washington.edu:8100/file/tip/sagenb/todo.txt | sagenb/todo.txt]], but the scope here is wider. Feel free to make changes. To keep items succinct, please make links to group discussions, etc. |
| Line 9: | Line 10: |
| * [[http://www.sagenb.org | Sagenb.org]] privacy policy. |
|
| Line 11: | Line 14: |
| * [[http://carsonified.com/blog/design/top-10-ux-myths/ | Keith Lang's Top 10 UI Myths]]. * [[http://groups.google.com/group/sage-devel/browse_thread/thread/258c07ae672a3617 | Sage Forge]]. |
* [[http://groups.google.com/group/sage-devel/browse_thread/thread/258c07ae672a3617 | SageForge]] - semi-automated repository for contributions to Sage: * Scripts, worksheets, databases, and packages of [nearly] all sizes. * Supplementary documentation, including multimedia. * Optional reviews and ratings. * Live, ulimited cellular paste-bin. * RSS feeds. ############################## BUILD / TEST ############################## == Build / Test == * Tests: * Meaningful statistics / benchmarks, e.g., %timeit for individual doctests. * [[http://buildbot.net/ | Buildbot]]. * Parallel inter/intra-spkg builds. * Windows port. * Fat binaries (no SSE3, etc.). * Notebook functional tests - Extend Selenium tests to other browsers. * Notebook load tests - [[http://grinder.sourceforge.net/ | The Grinder]], [[http://funkload.nuxeo.org/ | FunkLoad]], [[http://www.pylot.org/ | Pylot]], [[http://watir.com/ | Watir]], [[http://pypi.python.org/pypi/zope.testbrowser | Zope.testbrowser]] ([[http://trac.sagemath.org/sage_trac/ticket/7468 | now in SageNB]]). ############################## DEVELOPMENT ############################## == Development == * Auto-reload changed modules - [[http://pythonpaste.org/script/ | paster serve --reload]], !CherryPy's [[http://www.cherrypy.org/wiki/AutoReload | AutoReload]]. * [[http://groups.google.com/group/sage-devel/msg/fb95603488afd9de | More convenient development workflow]]: * Code review tools - [[http://code.google.com/p/rietveld/ | Rietveld]]. * Automated, continuous builds and testing for new patches. * [[http://www.doughellmann.com/articles/CompletelyDifferent-2008-03-linters/index.html | Static Python code analysis]], [[http://pypi.python.org/pypi/pep8/ | pep8]]. ############################## DOCUMENTATION ############################## |
| Line 17: | Line 56: |
| * [[http://groups.google.com/group/sage-devel/browse_thread/thread/8fa0d854b6928f2b/dc4cfe0a941762aa#dc4cfe0a941762aa | Allow $ for reST math]] - [[http://trac.sagemath.org/sage_trac/ticket/6892 | #6892]]. |
|
| Line 20: | Line 57: |
* Add many more modules to the reference manual. |
|
| Line 22: | Line 61: |
| * [[devel/SageNotebook | Notebook server technical overview]]. * [[http://groups.google.com/group/sage-support/browse_thread/thread/b0d15b82eea3d652 | Run notebook server as daemon]]. |
|
| Line 27: | Line 67: |
| * Authentication: | * Don't list '''all''' users' worksheets. * Authentication - abstract interface: |
| Line 31: | Line 73: |
| * Dashboard for server settings / status: * View logged-in users, load, processes, etc. * Backups: all critical data, selective. * Configure thresholds, alerts, snapshot behavior. * Manage user accounts, groups, privileges. * Restricted version for users. * Registration: * [[http://recaptcha.net/ | reCAPTCHA]]. * Challenge questions. * Admin approval. * Revokable custom tokens. * Users: * Groups. * Privileges. |
* Dashboard: * Real-time and cumulative statistics, aggregate and per user. * Backups: complete or selective. * Manage user accounts, passwords, groups, privileges. * Send email to all registered users. * Install new / updated modules and spkgs. * '''Lots''' of options with sensible defaults: |
| Line 48: | Line 82: |
| * Use secure tokens to reset passwords. | * Secure tokens to reset passwords. * Moderated new account registration. * Custom analytics tags, geolocation ([[http://www.clustrmaps.com/ | ClustrMaps]]). |
| Line 54: | Line 90: |
| * Use Sphinx for sagenb.org docstrings. * Matrix `B` mentioned twice in `B.solve_left?`: `B.solve_left(B, ...)`. |
|
| Line 60: | Line 92: |
| * Completions link for mobiles. | * [[http://groups.google.com/group/sage-devel/browse_thread/thread/e854336b08d436c6/fb8a62d01475e3eb?#fb8a62d01475e3eb | Completions link for mobiles]]. |
| Line 66: | Line 98: |
| * Improve introspection / completion interface: floating div, RHS div. * [[http://groups.google.com/group/sage-devel/browse_thread/thread/e9d0fc2c75ec6354/2634152df8f85f59?#2634152df8f85f59 | New documentation browser]]. Send worksheet docstrings to this browser. |
* [[http://groups.google.com/group/sage-devel/browse_thread/thread/e9d0fc2c75ec6354/2634152df8f85f59?#2634152df8f85f59 | New documentation browser]]. Open worksheet docstrings in this browser. |
| Line 76: | Line 106: |
| * Graph editor - [[http://trac.sagemath.org/sage_trac/ticket/1321 | #1321]]. | * %cython mode, full and outside `sage`. * Slideshow mode - [[http://trac.sagemath.org/sage_trac/ticket/6342 | #6342]]. * interacts: * Auto updates. * Live published or remote - [[http://trac.sagemath.org/sage_trac/ticket/6855 | #6855]]. * Control over widget layout - [[http://trac.sagemath.org/sage_trac/ticket/7379 | #7379]]. * Examples to include with Sage. * [[http://groups.google.com/group/sage-devel/browse_thread/thread/8aa6a3a84365f06d/42c7edf1c23ca169?#42c7edf1c23ca169 | Free-form workspace with pipelines]]. * Display nicely formatted docstrings (or captions). * [[http://groups.google.com/group/sage-devel/msg/d32ad8e2663bd7d1 | Simplify extension]], possibly with templates. * More widgets: [[http://trac.sagemath.org/sage_trac/ticket/7427 | circular slider ("angle" wheel)]], [[http://trac.sagemath.org/sage_trac/ticket/5305 | date picker ]], vertical sliders, spreadsheets, interactive plots, etc. * [[http://github.com/clemesha/jquery-interact | New architecture]]. |
| Line 80: | Line 123: |
| * reST: * [[http://tinymce.moxiecode.com/examples/example_09.php# | TinyMCE-style editor]]. * `%rest` cells (auto-hide, double-click to show) converted to HTML by Sphinx. * Preparse in the browser: implicit multiplication, less work for server. * Math-enabled chat. [[http://qwebirc.org/ | qwebirc]] / [[http://webchat.freenode.net/ | Web IRC]]. * Python debugger a la [[https://developer.mozilla.org/En/Pylons | Pylons]]. |
* reST - [[http://markitup.jaysalvat.com/home/ | markItUp]] with server-side Sphinx. * Chat - [[http://qwebirc.org/ | qwebirc]], [[http://webchat.freenode.net/ | Web IRC]]. * Debugging: * Prettier tracebacks for %modes. * Python debugger a la [[https://developer.mozilla.org/En/Pylons | Pylons]] - [[http://trac.sagemath.org/sage_trac/ticket/7509 | #7509]]. |
| Line 94: | Line 135: |
| * Editor a la [[https://bespin.mozilla.com/ | BeSpin]] * Command-line history. * Syntax highlighting. * Context-sensitive completion. |
* Code editor - [[https://bespin.mozilla.com/ | BeSpin]], [[http://marijn.haverbeke.nl/codemirror/ | CodeMirror]] ([[http://trac.sagemath.org/sage_trac/ticket/7501 | #7501]]). * Browse worksheet directories like a file system. |
| Line 100: | Line 140: |
######################### NOTEBOOK: UNDER THE HOOD ######################### == Notebook: Under the hood == * `notebook()`: * Allow default systems besides 'sage'. * Allow a different sage command on a remote machine. * Manage Jmol applet count / memory use - [[http://groups.google.com/group/sage-notebook/browse_thread/thread/0fd98c858e7d24c5/2ef2c296f1b13c3b?#2ef2c296f1b13c3b | sage-notebook]]. * Use Python's [[http://docs.python.org/library/logging.html | logging facility]]. * Cythonize pexpect. * Processes: * Balance server pool loads. * Don't block the server: making docbrowsers, etc. * Remote worksheet processes. * Use fork, named pipes, and/or [[http://docs.python.org/library/mmap.html | memory-mapped]] files for worksheet processes. * Client-server and server-server interaction: * Load JS / CSS components on demand - [[http://ajile.net/ | Ajile]]. * Server-to-server backups, possibly with authentication. * Decouple secure transport from sage. Use OpenSSL(?) * Remote access Python API - [[http://code.google.com/apis/documents/overview.html | Google Documents List Data API]] * Manipulate, share, up/download, publish worksheets at a given Sage(Forge) server. * Storage: * Fix `worksheet.autosave()`. * Always retrieve worksheet content from disk on open. * Use a revision control tool (e.g., Mercurial) for undo, history, snapshots, etc. * File size limit - auto-delete and warn above threshold. * Access a user's data directory '''securely''' via the new storage API. * Handle permissions better for directories, history, output, conf files, etc. * Migrate to server / framework: [[http://docs.djangoproject.com/en/dev/ | Django]], [[http://pylonshq.com/ | Pylons]], [[http://pyjs.org/ | Pyjamas]], [[http://www.tornadoweb.org/ | Tornado]], etc.: * Switch from twisted.web2 to [[http://jcalderone.livejournal.com/tag/sixty+seconds | twisted.web]]. * [[http://routes.groovie.org/ | URL routes]]. |
|
| Line 106: | Line 187: |
| * Reorganize help page. * Easy set up of shipped jsMath fonts. |
* Reorganize help page: * Search for commands. * Linking to similar and related commands. * Easy set up of shipped jsMath fonts - [[http://www.mathjax.org/ | MathJax]]. |
| Line 109: | Line 192: |
| * Friendly bug buddy that emails reports, bundles session history, etc. * Parens matching - [[http://trac.sagemath.org/sage_trac/ticket/3646 | #3646]]. |
|
| Line 113: | Line 194: |
| * Typeset output default. * Implicit multiplication default. * Custom window close callback. |
* Defaults: typeset, implicit multiplication, 3D viewer, rename "Untitled" worksheets. |
| Line 117: | Line 196: |
| * Easy backups of own work, with or w/o data, output, snapshots, etc. * Download zip files of multiple worksheets, even if `accounts=True`. |
* Easy backups, selective or complete. |
| Line 121: | Line 199: |
| * Insert new cell after current cell shortcut. * Restart worksheet shortcut. * Custom shortcuts, e.g., ctrl-bksp to delete previous word, not join cells. * Use js-hotkeys. * Splash-screen with common keys. |
* New shortcuts, e.g., for restart worksheet. * Custom shortcuts, e.g., ctrl-bksp to delete previous word, not join cells - [[http://trac.sagemath.org/sage_trac/ticket/7618 | #7618]]. * Cells: * Right-click menu. * Auto-updating cells, e.g., interacts. * Unify server and client-side resize algorithms. * Always show links for long output cells, regardless of length or interruption. * Select, delete, (un)group, move [[http://boagworld.com/demos/sitemap/ | multiple cells]]. |
| Line 129: | Line 211: |
| * [[http://deanm.github.com/pre3d/ | Pre3d]]-[[http://groups.google.com/group/sage-devel/browse_thread/thread/0315e138d5783377/742d9f9bb00b0cd7?#742d9f9bb00b0cd7 | enabled `canvas3d` viewer]]. | |
| Line 132: | Line 215: |
| * Cells: * Slideshow mode. * Auto-updating cells, e.g., interacts. * Prevent text movement by a pixel on cell frame focus. * Always show links for long output cells, regardless of length or interruption. * Easily identify idle, queued, and running cells. |
* Worksheets: * Export screen with checkboxes for images, data, etc. * Use notebook as IDE for running sage instance - [[http://trac.sagemath.org/sage_trac/ticket/7501 | #7501]]. * [[http://hacks.mozilla.org/2009/12/file-drag-and-drop-in-firefox-3-6/ | Drag-and-drop file upload]]. * Don't list "Sage Users" when sharing. * Page through worksheet list, not all at once - [[http://tablesorter.com/ | tablesorter]]. |
| Line 139: | Line 222: |
| * Select, delete, (un)group, move [[http://boagworld.com/demos/sitemap/ | multiple cells]]. * Leading space input bug - [[http://trac.sagemath.org/sage_trac/ticket/6729 | #6729]]. |
* Real-time concurrent editing - [[http://trac.sagemath.org/sage_trac/ticket/7362 | #7362]]. |
| Line 145: | Line 227: |
| * Live cells, e.g, interacts. | * Live cells, e.g, interacts - [[http://trac.sagemath.org/sage_trac/ticket/6855 | #6855]]. |
| Line 149: | Line 231: |
| * Suppress browser warning for Konquereor. * Unique cookies for logins from different browsers / computers. * Automatically save / restore worksheet state. Pause / resume. * [[http://groups.google.com/group/sage-devel/browse_thread/thread/e46f0a59d5cf70dc | Tags]]. |
* [[http://groups.google.com/group/sage-devel/browse_thread/thread/e46f0a59d5cf70dc | Tags / labels]]. * Manage logins: * View recent account activity. Add last login to `user.py`. * Invalidate other sessions' cookies. |
| Line 155: | Line 237: |
| * Worksheets: * Optional always visible menubar at top of worksheet. * TinyMCE [[http://groups.google.com/group/sage-devel/msg/e2eb3f848a21faa3 | synchronization]] [[http://groups.google.com/group/sage-devel/browse_frm/thread/4cd1cc188470c723/c2477e1bdba68028?q=tinymce+bug+group:sage-devel#c2477e1bdba68028 | problem]]. * Fix MoinMoin. * Use notebook as IDE for running sage instance. * Externally embed live cells / worksheets. Live published workseets. [[http://trac.sagemath.org/sage_trac/ticket/6855 | #6855]]. ######################### NOTEBOOK: UNDER THE HOOD ######################### == Notebook: Under the hood == * Better handling of concurrent worksheet use. * Smartly manage Jmol applet count, or memory use. * [[http://bitbucket.org/brickenstein/rumcomponent/src/tip/rumcomponent/ | Component architecture]]. * Cythonize pexpect. * Client-server synchronization: * TinyMCE problem. * Server-to-server for backups, possibly with authentication. * Track worksheets and user data with Mercurial. * Balance server pool loads. * Load JS / CSS components on demand. * Migrate to server / framework: [[http://docs.djangoproject.com/en/dev/ | Django]], [[http://pylonshq.com/ | Pylons]], [[http://pyjs.org/ | Pyjamas]], [[http://www.tornadoweb.org/ | Tornado]], etc.: * [[http://routes.groovie.org/ | URL routes]]. ############################## BUILD / TEST ############################## == Build / Test == * !VirtualBox Sage. * andLinux Sage. * Binary distibutions that don't use SSE3, etc. * Windows build farm. * Windows port. * Notebook testing infrastructure: [[http://seleniumhq.org/ | Selenium]], [[http://testled.com/ | Testled]], [[http://code.google.com/p/webdriver/ | Webdriver]], [[http://pylonshq.com/docs/en/0.9.7/testing/ | WebTest]], [[http://www.getwindmill.com/ | Windmill]]. |
* External: * Embed live cells / worksheets - [[http://trac.sagemath.org/sage_trac/ticket/6855 | #6855]]. * [[http://wave.google.com/ | Wave]] [[http://code.google.com/apis/wave/guide.html | gadgets and robots]]. * Live published worksheets. |
Sage Tasks Outline
This is a general outline of targeted areas, including specific tasks, for improving the usability of Sage. The sources include the Sage Usability Improvements List and sagenb/todo.txt, but the scope here is wider. Feel free to make changes. To keep items succinct, please make links to group discussions, etc.
1. General
Sagenb.org privacy policy.
Y. Aner's notebook threat model (PDF).
SageForge - semi-automated repository for contributions to Sage:
- Scripts, worksheets, databases, and packages of [nearly] all sizes.
- Supplementary documentation, including multimedia.
- Optional reviews and ratings.
- Live, ulimited cellular paste-bin.
- RSS feeds.
2. Build / Test
- Tests:
- Meaningful statistics / benchmarks, e.g., %timeit for individual doctests.
- Parallel inter/intra-spkg builds.
- Windows port.
- Fat binaries (no SSE3, etc.).
- Notebook functional tests - Extend Selenium tests to other browsers.
Notebook load tests - The Grinder, FunkLoad, Pylot, Watir, Zope.testbrowser (now in SageNB).
3. Development
Auto-reload changed modules - paster serve --reload, CherryPy's AutoReload.
More convenient development workflow:
Code review tools - Rietveld.
- Automated, continuous builds and testing for new patches.
4. Documentation
- Document:
- Add many more modules to the reference manual.
5. Notebook: Admin
Don't list all users' worksheets.
- Authentication - abstract interface:
- LDAP.
- UNIX accounts.
- Dashboard:
- Real-time and cumulative statistics, aggregate and per user.
- Backups: complete or selective.
- Manage user accounts, passwords, groups, privileges.
- Send email to all registered users.
- Install new / updated modules and spkgs.
Lots of options with sensible defaults:
- Email address as username.
- Secure tokens to reset passwords.
- Moderated new account registration.
Custom analytics tags, geolocation (ClustrMaps).
6. Notebook: Introspection
- Better error detection, e.g., for Maxima command completion.
- Live introspection cells.
- Introspection cross-links.
New documentation browser. Open worksheet docstrings in this browser.
7. Notebook: "Modes"
- %timeit.
%cython mode, full and outside sage.
Slideshow mode - #6342.
- interacts:
- Auto updates.
Live published or remote - #6855.
Control over widget layout - #7379.
- Examples to include with Sage.
- Display nicely formatted docstrings (or captions).
Simplify extension, possibly with templates.
More widgets: circular slider ("angle" wheel), date picker, vertical sliders, spreadsheets, interactive plots, etc.
reST - markItUp with server-side Sphinx.
- Debugging:
Draw - SVG-edit.
- Annotate output from matplotlib's SVG backend.
Code editor - BeSpin, CodeMirror (#7501).
- Browse worksheet directories like a file system.
8. Notebook: Under the hood
notebook():
- Allow default systems besides 'sage'.
- Allow a different sage command on a remote machine.
Manage Jmol applet count / memory use - sage-notebook.
Use Python's logging facility.
- Cythonize pexpect.
- Processes:
- Balance server pool loads.
- Don't block the server: making docbrowsers, etc.
- Remote worksheet processes.
Use fork, named pipes, and/or memory-mapped files for worksheet processes.
- Client-server and server-server interaction:
Load JS / CSS components on demand - Ajile.
- Server-to-server backups, possibly with authentication.
- Decouple secure transport from sage. Use OpenSSL(?)
Remote access Python API - Google Documents List Data API
- Manipulate, share, up/download, publish worksheets at a given Sage(Forge) server.
- Storage:
Fix worksheet.autosave().
- Always retrieve worksheet content from disk on open.
- Use a revision control tool (e.g., Mercurial) for undo, history, snapshots, etc.
- File size limit - auto-delete and warn above threshold.
Access a user's data directory securely via the new storage API.
- Handle permissions better for directories, history, output, conf files, etc.
Migrate to server / framework: Django, Pylons, Pyjamas, Tornado, etc.:
Switch from twisted.web2 to twisted.web.
9. Notebook: User Interaction
- Help:
- Reorganize help page:
- Search for commands.
- Linking to similar and related commands.
Easy set up of shipped jsMath fonts - MathJax.
- Automatic tips for keyboard shortcuts, editing features, etc. Opt out.
- Reorganize help page:
- Customization:
- Defaults: typeset, implicit multiplication, 3D viewer, rename "Untitled" worksheets.
- Function to update worksheet titlebar.
- Easy backups, selective or complete.
- Keys
- New shortcuts, e.g., for restart worksheet.
Custom shortcuts, e.g., ctrl-bksp to delete previous word, not join cells - #7618.
- Cells:
- Right-click menu.
- Auto-updating cells, e.g., interacts.
- Unify server and client-side resize algorithms.
- Always show links for long output cells, regardless of length or interruption.
Select, delete, (un)group, move multiple cells.
- 2D / 3D plots:
JavaScript animations.
Mouse-over for coordinates - matplotlib.
Interactively zoom, pan, annotate - canvas, SVG, Flot, Open Flash Chart.
- Worksheets:
- Export screen with checkboxes for images, data, etc.
Use notebook as IDE for running sage instance - #7501.
- Don't list "Sage Users" when sharing.
Page through worksheet list, not all at once - tablesorter.
- Toolbar with buttons to interrupt running code, save, attach files, etc.
Real-time concurrent editing - #7362.
- Published worksheets:
- Delete them.
- RSS feeds.
Live cells, e.g, interacts - #6855.
- Only to selected users or groups.
- Notebook:
- Manage logins:
View recent account activity. Add last login to user.py.
- Invalidate other sessions' cookies.
Full-text search: SQLalchemy, Whoosh (codenode-devel).
- External:
Embed live cells / worksheets - #6855.
- Live published worksheets.
