13874
Comment: Several updates.
|
11680
More of previous.
|
Deletions are marked like this. | Additions are marked like this. |
Line 13: | Line 13: |
* [[http://carsonified.com/blog/design/top-10-ux-myths/ | Keith Lang's Top 10 UI Myths]]. |
|
Line 28: | Line 26: |
* Increase coverage to 100%. | |
Line 31: | Line 28: |
* [[http://buildbot.net/ | Buildbot]]: * Group logs by install, upgrade, or spkg install event. * Porting: * andLinux Sage. * Windows. * Windows build farm. * Sagelite for Windows. * Fat binaries (no SSE3, etc.). |
* [[http://buildbot.net/ | Buildbot]]. * Parallel inter/intra-spkg builds. * Windows port. * Fat binaries (no SSE3, etc.). |
Line 68: | Line 63: |
Line 85: | Line 81: |
* '''Lots''' of options with sensible defaults: * Email address as username. * Secure tokens to reset passwords. * Moderated new account registration. * Custom analytics tags, geolocation ([[http://www.clustrmaps.com/ | ClustrMaps]]). |
* More powerful account management tools. * Allow email address as username. * Custom analytics tags, geolocation ([[http://www.clustrmaps.com/ | ClustrMaps]]). |
Line 95: | Line 91: |
* Matrix `B` mentioned twice in `B.solve_left?`: `B.solve_left(B, ...)`. |
|
Line 105: | Line 99: |
* Improve introspection / completion interface: floating div, RHS div. * [[http://groups.google.com/group/sage-devel/browse_thread/thread/e9d0fc2c75ec6354/2634152df8f85f59?#2634152df8f85f59 | New documentation browser]]. Open 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 122: | Line 114: |
* Control over widget layout - [[http://trac.sagemath.org/sage_trac/ticket/7379 | #7379]]. | * Widget layout - [[http://trac.sagemath.org/sage_trac/ticket/7379 | #7379]]. |
Line 125: | Line 117: |
* Display nicely formatted docstrings (or captions). * [[http://groups.google.com/group/sage-devel/msg/d32ad8e2663bd7d1 | Simplify extension]], possibly with templates. |
|
Line 132: | Line 122: |
* reST - [[http://markitup.jaysalvat.com/home/ | markItUp]] with server-side Sphinx. | * reST mode, with server-side Sphinxify. |
Line 140: | Line 130: |
* [[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. |
* 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]]. |
Line 154: | Line 142: |
* Implement `base_url`. * Move `is_valid_username`, etc., out of `twist.py`. A validation module for all types of notebook form fields. * `notebook()`: * Allow default systems besides 'sage'. * Allow a different sage command on a remote machine. |
|
Line 166: | Line 146: |
* [[http://bitbucket.org/brickenstein/rumcomponent/src/tip/rumcomponent/ | Component architecture]]. |
|
Line 170: | Line 148: |
* 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. * Don't block the server: making docbrowsers, etc. * Remote worksheet processes. * Use fork (cf. [[http://trac.sagemath.org/sage_trac/ticket/6967 | #6967]]), 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 184: | Line 158: |
* Decouple secure transport from sage/dsage. Use OpenSSL. * Remote access Python API - [[http://code.google.com/apis/documents/overview.html | Google Documents List Data API]]. * (Non-)authenticated modes. |
* Decouple secure transport from sage. Use OpenSSL(?) * Remote access Python API - [[http://code.google.com/apis/documents/overview.html | Google Documents List Data API]] |
Line 212: | Line 185: |
* Friendly bug buddy that emails reports, bundles session history, etc. | |
Line 216: | Line 188: |
* Custom window close callback. | |
Line 219: | Line 190: |
* Download zip files of multiple worksheets, even if `accounts=True`. | |
Line 222: | Line 192: |
* Restart worksheet shortcut. * Splash-screen with common keys. * Insert new cell after current cell shortcut. |
* New shortcuts, e.g., for restart worksheet. |
Line 228: | Line 196: |
* Right-click menu. | |
Line 231: | Line 200: |
* Easily identify idle, queued, and running cells. | |
Line 233: | Line 201: |
* Leading space input bug - [[http://trac.sagemath.org/sage_trac/ticket/6729 | #6729]]. | |
Line 244: | Line 211: |
* Optional always visible menubar at top of worksheet. | |
Line 246: | Line 212: |
* Fix "undefined" bug on first save in Safari 4.0.3. | |
Line 248: | Line 213: |
* Rate worksheet title shows false error. | |
Line 250: | Line 214: |
* "Save as" option, e.g., for downloading, that prompts for a name. | |
Line 261: | Line 224: |
* [[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 266: | Line 228: |
* Unique cookies for logins from different browsers / computers. | |
Line 268: | Line 229: |
* Fix !MoinMoin. |
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.
- More powerful account management tools.
- Allow email address as username.
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.
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.
8. Notebook: 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.
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.