|
Size: 14074
Comment: Update.
|
Size: 11677
Comment:
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 1: | Line 1: |
| #pragma section-numbers 2 <<TableOfContents(2)>> |
|
| Line 3: | Line 8: |
| 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 [[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. | 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 14: |
| * [[http://www.sagenb.org | Sagenb.org]] privacy policy. |
|
| Line 10: | Line 17: |
* [[http://carsonified.com/blog/design/top-10-ux-myths/ | Keith Lang's Top 10 UI Myths]]. |
|
| Line 25: | Line 30: |
| * Increase coverage to 100%. * Fix all sagenb doctests and run them from Sage library. |
|
| Line 29: | Line 32: |
| * Build logs: * Separate file for each spkg for parallel builds. * Group by install, upgrade, or spkg install event. * Remotely aggregate and display refreshed statistics. * Porting: * !VirtualBox Sage. * andLinux Sage. * Windows. * Windows build farm. * Sagelite for Windows. * Binary distributions that don't use SSE3, etc. * Automated notebook benchmarking and testing: * Functional tests: [[http://seleniumhq.org/ | Selenium]], [[http://www.getwindmill.com/ | Windmill]]. * Load tests: [[http://funkload.nuxeo.org/ | FunkLoad]], [[http://www.pylot.org/ | Pylot]], [[http://watir.com/ | Watir]], [[http://pypi.python.org/pypi/zope.testbrowser | Zope.testbrowser]]. |
* [[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]]). |
| Line 50: | Line 48: |
| * Auto-reload / auto-build changed files - [[http://www.sagemath.org/doc/reference/sage/misc/attach.html | attach]], [[http://pythonpaste.org/script/ | paster serve --reload]], !CherryPy's [[http://www.cherrypy.org/wiki/AutoReload | AutoReload]]. | * Auto-reload changed modules - [[http://pythonpaste.org/script/ | paster serve --reload]], !CherryPy's [[http://www.cherrypy.org/wiki/AutoReload | AutoReload]]. |
| Line 56: | Line 54: |
| * [[http://www.doughellmann.com/articles/CompletelyDifferent-2008-03-linters/index.html | Static Python code analysis]]. | * [[http://www.doughellmann.com/articles/CompletelyDifferent-2008-03-linters/index.html | Static Python code analysis]], [[http://pypi.python.org/pypi/pep8/ | pep8]]. |
| Line 63: | Line 61: |
| * `doc/en/sagenb` for new notebook. * Add modules to the reference manual. |
* Add many more modules to the reference manual. |
| Line 67: | Line 65: |
| * [[SageNotebook | Notebook server technical overview]]. | * [[devel/SageNotebook | Notebook server technical overview]]. |
| Line 70: | Line 68: |
| Line 71: | Line 70: |
| == Notebook: Admin == | == Notebook == === Admin === |
| Line 82: | Line 82: |
| * Settings: "everything," hidden analytics tags, geolocation ([[http://www.clustrmaps.com/ | ClustrMaps]]). | |
| Line 87: | Line 86: |
| * Registration: * Admin moderated. * Challenge-response - simple questions, [[http://recaptcha.net/ | reCAPTCHA]], revokable tokens - [[http://trac.sagemath.org/sage_trac/ticket/7158 | #7158]]. * Users: * Groups. * Privileges. * Email address as username. * Secure tokens to reset passwords. |
* More powerful account management tools. * Allow email address as username. * Custom analytics tags, geolocation ([[http://www.clustrmaps.com/ | ClustrMaps]]). |
| Line 99: | Line 94: |
| == Notebook: Introspection == * Use Sphinx for sagenb.org docstrings. * Matrix `B` mentioned twice in `B.solve_left?`: `B.solve_left(B, ...)`. |
=== Introspection === |
| Line 107: | Line 98: |
| * Completions link for mobiles. | * [[http://groups.google.com/group/sage-devel/browse_thread/thread/e854336b08d436c6/fb8a62d01475e3eb?#fb8a62d01475e3eb | Completions link for mobiles]]. |
| Line 113: | Line 104: |
| * 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 119: | Line 108: |
| == Notebook: "Modes" == | === "Modes" === |
| Line 125: | Line 114: |
| * Slideshow mode. | * Slideshow mode - [[http://trac.sagemath.org/sage_trac/ticket/6342 | #6342]]. |
| Line 129: | Line 118: |
| * Live published. * Control over widget layout. |
* Live published or remote - [[http://trac.sagemath.org/sage_trac/ticket/6855 | #6855]]. * Widget layout - [[http://trac.sagemath.org/sage_trac/ticket/7379 | #7379]]. |
| Line 133: | Line 122: |
| * Display nicely formatted docstrings (or captions). * Simplify extension, via HTML templates or an API. * More widgets: vertical sliders, spreadsheets, interactive plots, etc. * Graph editor - [[http://trac.sagemath.org/sage_trac/ticket/1321 | #1321]]. |
* 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 141: | Line 127: |
| * 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. |
* reST mode, with server-side Sphinxify. |
| Line 148: | Line 130: |
| * Rich content, e.g., equations. * Sage compute bot. * Add to help page. |
|
| Line 154: | Line 133: |
| * Python debugger a la [[https://developer.mozilla.org/En/Pylons | Pylons]]. * [[http://groups.google.com/group/sage-devel/browse_thread/thread/86429406fb3bba17/dd3163cb2a47fa38?#dd3163cb2a47fa38 | Vector graphics]] - [[http://trac.sagemath.org/sage_trac/ticket/6973 | #6973]]. * Draw - [[http://code.google.com/p/svg-edit/ | SVG-edit]]. * Annotate output from matplotlib's SVG backend. * Code editor a la [[https://bespin.mozilla.com/ | BeSpin]] * Command-line history. * Syntax highlighting. * Context-sensitive completion. * Browse worksheet directories like a file system. |
* 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 170: | Line 145: |
| == Notebook: Under the hood == * Implement `base_url`. * Deprecation message at top of '''old''' notebook `.py` files. * Move `is_valid_username`, etc., out of `twist.py`. * Updated jsMath image fonts spkg - [[http://trac.sagemath.org/sage_trac/ticket/7229 | #7229]]. * `notebook()`: * Allow default systems besides 'sage'. * Allow a different sage command on a remote machine. * Manage Jmol applet count / memory use. |
=== Under the hood === * Manage Jmol applet count / memory use - [[http://groups.google.com/group/sage-notebook/browse_thread/thread/0fd98c858e7d24c5/2ef2c296f1b13c3b?#2ef2c296f1b13c3b | sage-notebook]]. |
| Line 188: | Line 151: |
| * [[http://bitbucket.org/brickenstein/rumcomponent/src/tip/rumcomponent/ | Component architecture]]. |
|
| Line 192: | Line 153: |
| * Processes: * Balance server pool loads. * Run the worksheet process as another user. * Reference implementation: * Make ctrl-c quit. * Don't put "data" link in all output cells. * Upload worksheets without blocking the server. * Remote worksheet processes. * Use fork, named pipes, and/or [[http://docs.python.org/library/mmap.html | memory-mapped]] files for worksheet processes. |
* 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]]. |
| Line 203: | Line 160: |
| * TinyMCE problem. | |
| Line 205: | Line 161: |
| * Load browser-specific code only in the specific browser. * Better handling of concurrent worksheet use. |
|
| Line 209: | Line 163: |
| * Decouple secure transport from sage/dsage. Use OpenSSL. * Remote access API - [[http://code.google.com/apis/documents/overview.html | Google Documents List Data API]]. * (Non-)authenticated modes. * Manipulate, share, publish worksheets at a given Sage(Forge) server. * Python module, included with Sage. |
* 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. |
| Line 217: | Line 169: |
| * Use HTML format for worksheets. | |
| Line 221: | Line 172: |
| * Deprecate the [unused] `objects` directory. | |
| Line 223: | Line 173: |
| * Access a user's data directory securely, e.g., via an API. | * Access a user's data directory '''securely''' via the new storage API. |
| Line 225: | Line 175: |
| * Filesystem or a database determines worksheet list, not an sobj. | |
| Line 233: | Line 182: |
| == Notebook: User Interaction == | === User Interaction === |
| Line 239: | Line 188: |
| * Easy set up of shipped jsMath fonts. | * Easy set up of shipped jsMath fonts - [[http://www.mathjax.org/ | MathJax]]. |
| Line 241: | Line 190: |
| * Friendly bug buddy that emails reports, bundles session history, etc. | |
| Line 244: | Line 192: |
| * Defaults: typeset, implicit multiplication, rename "Untitled" worksheets. * Custom window close callback. |
* Defaults: typeset, implicit multiplication, 3D viewer, rename "Untitled" worksheets. |
| Line 248: | Line 195: |
| * Download zip files of multiple worksheets, even if `accounts=True`. | |
| Line 251: | Line 197: |
| * Restart worksheet shortcut. * Splash-screen with common keys. * Insert new cell after current cell shortcut. * Custom shortcuts, e.g., ctrl-bksp to delete previous word, not join cells - [[http://code.google.com/p/js-hotkeys/ | js-hotkeys]]. |
* 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]]. |
| Line 257: | Line 201: |
| * Right-click menu. | |
| Line 258: | Line 203: |
| * Prevent text movement by a pixel on cell frame focus. | * Unify server and client-side resize algorithms. |
| Line 260: | Line 205: |
| * Easily identify idle, queued, and running cells. | |
| Line 262: | Line 206: |
| * Leading space input bug - [[http://trac.sagemath.org/sage_trac/ticket/6729 | #6729]]. | |
| Line 272: | Line 215: |
| * Use notebook as IDE for running sage instance. * Optional always visible menubar at top of worksheet. * Make "Browse your computer" upload fields editable. * Fix "undefined" bug on first save in Safari 4.0.3. * Don't put "..." in default filename when saving. |
* 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]]. |
| Line 278: | Line 218: |
| * Rate worksheet title shows false error. * Page through worksheet list. * "Save as" option, e.g., for downloading, that prompts for a name. |
* Page through worksheet list, not all at once - [[http://tablesorter.com/ | tablesorter]]. |
| Line 282: | Line 220: |
| * Parens matching - [[http://trac.sagemath.org/sage_trac/ticket/3646 | #3646]]. * 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]]. |
* Real-time concurrent editing - [[http://trac.sagemath.org/sage_trac/ticket/7362 | #7362]]. |
| Line 288: | Line 225: |
| * Live cells, e.g, interacts. | * Live cells, e.g, interacts - [[http://trac.sagemath.org/sage_trac/ticket/6855 | #6855]]. |
| Line 290: | Line 227: |
| * Publishing should update "last changed" time, even for old worksheets. | |
| Line 293: | Line 229: |
| * [[http://groups.google.com/group/sage-devel/browse_thread/thread/e46f0a59d5cf70dc | Tags]]. * Suppress browser warning for Konqueror. |
* [[http://groups.google.com/group/sage-devel/browse_thread/thread/e46f0a59d5cf70dc | Tags / labels]]. |
| Line 298: | Line 233: |
| * Unique cookies for logins from different browsers / computers. | |
| Line 300: | Line 234: |
* Fix !MoinMoin. |
Contents
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.
