|
Size: 7678
Comment: Continued import.
|
Size: 11711
Comment:
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 1: | Line 1: |
| = Sage Usability Tasks = Source: [[SageUsability | Sage Usability Improvements List]]. This is an attempt to organize the desired changes into tasks of varying difficulty (e.g., easy, medium, hard). |
## page was renamed from SageTasks <<TableOfContents(2)>> #pragma section-numbers 2 = 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. ############################## GENERAL ############################## |
| Line 7: | Line 14: |
| * [[http://www.sagenb.org | Sagenb.org]] privacy policy. |
|
| Line 9: | Line 18: |
| * [[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 15: | Line 60: |
| * [[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]]. * [[http://groups.google.com/group/sage-devel/msg/35e97a1d1cedfdfd | Document pexpect interface]]. * [[http://groups.google.com/group/sage-devel/browse_thread/thread/6d94c8655e41ba24# | Document notebook port forwarding]]. == Notebook: Admin == * Dashboard for server settings / status. * View logged-in users, load, processes, etc. * Backup all critical data. * Configure thresholds, alerts, snapshot behavior. * Manage user accounts, groups, privileges. * Restricted version for users. * Selective registration with [[http://recaptcha.net/ | reCAPTCHA]], challenge questions, admin approval, and/or revokable custom tokens. * Custom authentication: LDAP, UNIX accounts, etc. * Password "recovery:" Use secure tokens. * Email address as username. * User groups. * Privileged users, e.g, admins. == Notebook: Introspection == * Use Sphinx for sagenb.org docstrings. |
* Document: * Add many more modules to the reference manual. * [[http://groups.google.com/group/sage-devel/msg/35e97a1d1cedfdfd | pexpect interface for users]]. * [[http://groups.google.com/group/sage-devel/browse_thread/thread/6d94c8655e41ba24# | notebook port forwarding]]. * [[devel/SageNotebook | Notebook server technical overview]]. * [[http://groups.google.com/group/sage-support/browse_thread/thread/b0d15b82eea3d652 | Run notebook server as daemon]]. ############################## NOTEBOOK: ADMIN ############################## == 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. * More powerful account management tools. * Allow email address as username. * Custom analytics tags, geolocation ([[http://www.clustrmaps.com/ | ClustrMaps]]). ######################### NOTEBOOK: INTROSPECTION ######################### === Introspection === * Better error detection, e.g., for Maxima command completion. * [[http://groups.google.com/group/sage-devel/browse_thread/thread/e854336b08d436c6/fb8a62d01475e3eb?#fb8a62d01475e3eb | Completions link for mobiles]]. |
| Line 50: | Line 104: |
| * [[http://groups.google.com/group/sage-devel/browse_thread/thread/e9d0fc2c75ec6354/2634152df8f85f59?#2634152df8f85f59 | New documentation browser]]. Send docstrings to this browser. * Better error detection, e.g., for Maxima command completion. * Matrix `B` mentioned twice in `B.solve_left?`: `B.solve_left(B, ...)`. * Completions link for mobiles. * Improve introspection / completion interface: floating div, RHS div. == Notebook: "Modes" == * Graph editor - [[http://trac.sagemath.org/sage_trac/ticket/1321 | #1321]]. |
* [[http://groups.google.com/group/sage-devel/browse_thread/thread/e9d0fc2c75ec6354/2634152df8f85f59?#2634152df8f85f59 | New documentation browser]]. Open worksheet docstrings in this browser. ############################## NOTEBOOK: "MODES" ############################## === "Modes" === * %timeit. * %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]]. * 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]]. * 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 66: | Line 127: |
| * reST editing. * [[http://tinymce.moxiecode.com/examples/example_09.php# | TinyMCE-style editor]]. * `%rest` cells (auto-hide, double-click to show) sent to Sphinx on-the-fly. * %timeit. * Preparse in the browser: implicit multiplication, less work for server. |
* reST mode, with server-side Sphinxify. * 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]]. * Draw or annotate with [[http://groups.google.com/group/sage-devel/browse_thread/thread/86429406fb3bba17/dd3163cb2a47fa38?#dd3163cb2a47fa38 | vector graphics]] - [[http://trac.sagemath.org/sage_trac/ticket/6973 | #6973]]. * 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 76: | Line 143: |
| * [[http://groups.google.com/group/sage-devel/browse_thread/thread/86429406fb3bba17/dd3163cb2a47fa38?#dd3163cb2a47fa38 | Vector graphics editor]] - [[http://code.google.com/p/svg-edit/ | SVG-edit]]. == Notebook: User Interaction == * Automatic tips for keyboard shortcuts, editing features, etc. Opt out. * Friendly bug buddy that emails reports, bundles session history, etc. * Easy backups of own work, with or w/o data, output, snapshots, etc. * Toolbar with buttons to interrupt running code, save, get key help, etc. * Easily identify idle, queued, and running cells. |
######################### NOTEBOOK: UNDER THE HOOD ######################### === Under the hood === * 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. * Load-balancing. * Offload more work to worksheet processes, e.g., docbrowser generation. * Alternate worksheet process implementations: remote, fork, named pipes, [[http://docs.python.org/library/mmap.html | memory-mapped files]]. * 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]]. ######################### NOTEBOOK: USER INTERACTION ######################### === User Interaction === * Help: * Reorganize help page: * Search for commands. * Linking to similar and related commands. * Easy set up of shipped jsMath fonts - [[http://www.mathjax.org/ | MathJax]]. * Automatic tips for keyboard shortcuts, editing features, etc. Opt out. * Customization: * Defaults: typeset, implicit multiplication, 3D viewer, rename "Untitled" worksheets. * Function to update worksheet titlebar. * Easy backups, selective or complete. |
| Line 91: | Line 197: |
| * 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. * Interactive 2D/3D plots * [[http://groups.google.com/group/sage-support/browse_thread/thread/c29abdaaa4f0ee13 | coordinates]], zoom, pan, annotate * [[http://sourceforge.net/mailarchive/forum.php?thread_name=6e8d907b0909012053s19e7c5fl29cdcd0e1fab1d50%40mail.gmail.com&forum_name=matplotlib-devel | matplotlib]], canvas, SVG, [[http://code.google.com/p/flot/ | Flot]], [[http://teethgrinder.co.uk/open-flash-chart-2/ | Open Flash Chart]]. * Animated 2D/3D plots using only !JavaScript. * Always show long output links, regardless of interrupt or length. * Custom window close callback. * Suppress browser warning for Konquereor. * Unique cookie for each login. * Cells: Select, delete, (un)group, move [[http://boagworld.com/demos/sitemap/ | multiple cells]]. * Slideshow mode. |
* 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]]. * 2D / 3D plots: * !JavaScript animations. * [[http://deanm.github.com/pre3d/ | Pre3d]]-[[http://groups.google.com/group/sage-devel/browse_thread/thread/0315e138d5783377/742d9f9bb00b0cd7?#742d9f9bb00b0cd7 | enabled `canvas3d` viewer]]. * Mouse-over for [[http://groups.google.com/group/sage-support/browse_thread/thread/c29abdaaa4f0ee13 | coordinates]] - [[http://sourceforge.net/mailarchive/forum.php?thread_name=6e8d907b0909012053s19e7c5fl29cdcd0e1fab1d50%40mail.gmail.com&forum_name=matplotlib-devel | matplotlib]]. * Interactively zoom, pan, annotate - canvas, SVG, [[http://code.google.com/p/flot/ | Flot]], [[http://teethgrinder.co.uk/open-flash-chart-2/ | Open Flash Chart]]. * 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]]. * Toolbar with buttons to interrupt running code, save, attach files, etc. * Real-time concurrent editing - [[http://trac.sagemath.org/sage_trac/ticket/7362 | #7362]]. |
| Line 118: | Line 225: |
| * Live cells, e.g, interacts. | * Live cells, e.g, interacts - [[http://trac.sagemath.org/sage_trac/ticket/6855 | #6855]]. |
| Line 121: | Line 228: |
| * jsMath fonts: * Ship with Sage. * Clear install directions. * 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]]. * Default options: * Implicit multiplication. * Typeset output. * Reorganize help page. * Automatically save / restore worksheet state. Pause / resume. * Function to update worksheet titlebar. * Auto-update cells, e.g., interacts. * Full-text search: SQLalchemy, [[http://whoosh.ca/ | Whoosh]] ([[http://groups.google.com/group/codenode-devel/browse_thread/thread/d3ffefa3b09937b6/98bdf00f65441934?#98bdf00f65441934 | codenode-devel]]). * Math-enabled chat. [[http://qwebirc.org/ | qwebirc]] / [[http://webchat.freenode.net/ | Web IRC]]. * [[http://groups.google.com/group/sage-devel/browse_thread/thread/e46f0a59d5cf70dc | Tags]]. * Externally embed live cells / worksheets. Live published workseets. [[http://trac.sagemath.org/sage_trac/ticket/6855 | #6855]]. * Prevent text movement by a pixel on cell frame focus. * Leading space input bug - [[http://trac.sagemath.org/sage_trac/ticket/6729 | #6729]]. * Python debugger a la [[https://developer.mozilla.org/En/Pylons | Pylons]]. * Editor a la [[https://bespin.mozilla.com/ | BeSpin]] * Command-line history. * Syntax highlighting. * Context-sensitive completion. * Fix MoinMoin. * Use notebook as IDE for running sage instance. * Download zip files of multiple worksheets, even if `accounts=True`. * Parens matching - [[http://trac.sagemath.org/sage_trac/ticket/3646 | #3646]]. * Optional always visible menubar at top of worksheet. == 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 sync for backups, possibly with authentication. * Track worksheets and user data with Mercurial. * Balance server pool loads. * Load JS / CSS components on demand. * Migrate to another server and/or 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 / Tests == * 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]]. * Binary distibutions that don't use SSE3, etc. * Windows port. * Windows build farm. * !VirtualBox Sage. * andLinux Sage. |
* Notebook: * [[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. * Full-text search: SQLalchemy, [[http://whoosh.ca/ | Whoosh]] ([[http://groups.google.com/group/codenode-devel/browse_thread/thread/d3ffefa3b09937b6/98bdf00f65441934?#98bdf00f65441934 | codenode-devel]]). * 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. |
Contents
#pragma section-numbers 2
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
5.1. 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.
- More powerful account management tools.
- Allow email address as username.
Custom analytics tags, geolocation (ClustrMaps).
5.2. 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.
5.3. "Modes"
- %timeit.
%cython mode, full and outside sage.
Slideshow mode - #6342.
- interacts:
- Auto updates.
Live published or remote - #6855.
Widget layout - #7379.
- Examples to include with Sage.
More widgets: circular slider ("angle" wheel), date picker, vertical sliders, spreadsheets, interactive plots, etc.
- reST mode, with server-side Sphinxify.
- Debugging:
Draw or annotate with vector graphics - #6973.
Code editor - BeSpin, CodeMirror (#7501).
- Browse worksheet directories like a file system.
5.4. Under the hood
Manage Jmol applet count / memory use - sage-notebook.
Use Python's logging facility.
- Cythonize pexpect.
- Load-balancing.
- Offload more work to worksheet processes, e.g., docbrowser generation.
Alternate worksheet process implementations: remote, fork, named pipes, memory-mapped files.
- 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.
5.5. 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.
