|
Size: 13782
Comment: Added markItUp.
|
Size: 13874
Comment: Several updates.
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 1: | Line 1: |
| ## page was renamed from SageTasks | |
| Line 3: | Line 4: |
| 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 10: |
| * Sagenb.org privacy policy. | * [[http://www.sagenb.org | Sagenb.org]] privacy policy. |
| Line 28: | Line 29: |
| * Fix all sagenb doctests and run them from Sage library. | |
| Line 31: | Line 31: |
| * Build logs: * Separate file for each spkg for parallel builds. * Group by install, upgrade, or spkg install event. * Remotely aggregate and display refreshed statistics. |
* [[http://buildbot.net/ | Buildbot]]: * Group logs by install, upgrade, or spkg install event. |
| Line 37: | Line 35: |
| * !VirtualBox Sage. | |
| Line 42: | Line 39: |
| * 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]]. |
* 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 52: | Line 49: |
| * 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 58: | Line 55: |
| * [[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 65: | Line 62: |
| * `doc/en/sagenb` for new notebook. | |
| Line 69: | Line 66: |
| * [[SageNotebook | Notebook server technical overview]]. | * [[devel/SageNotebook | Notebook server technical overview]]. |
| Line 102: | Line 99: |
| * Completions link for mobiles. | * [[http://groups.google.com/group/sage-devel/browse_thread/thread/e854336b08d436c6/fb8a62d01475e3eb?#fb8a62d01475e3eb | Completions link for mobiles]]. |
| Line 110: | Line 107: |
| * [[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 to this browser. |
| Line 120: | Line 117: |
| * Slideshow mode. | * Slideshow mode - [[http://trac.sagemath.org/sage_trac/ticket/6342 | #6342]]. |
| Line 124: | Line 121: |
| * Live published or remote. * Control over widget layout. |
* 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]]. |
| Line 129: | Line 126: |
| * [[http://groups.google.com/group/sage-devel/msg/d32ad8e2663bd7d1 | 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]]. |
* [[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 138: | Line 134: |
| * Preparse in the browser: implicit multiplication, less work for server. |
|
| Line 141: | Line 135: |
| * Rich content, e.g., equations. * Sage compute bot. * Add to help page. |
|
| Line 147: | Line 138: |
| * Python debugger a la [[https://developer.mozilla.org/En/Pylons | Pylons]]. | * Python debugger a la [[https://developer.mozilla.org/En/Pylons | Pylons]] - [[http://trac.sagemath.org/sage_trac/ticket/7509 | #7509]]. |
| Line 153: | Line 144: |
| * Code editor a la [[https://bespin.mozilla.com/ | BeSpin]]: * Command-line history. * Syntax highlighting - [[http://www.cdolivet.com/index.php?page=editArea | EditArea]]. * Context-sensitive completion. * Browse worksheet directories like a file system. |
* 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 167: | Line 156: |
| * Deprecation message at top of '''old''' notebook `.py` files. * Move `is_valid_username`, etc., out of `twist.py`. |
* Move `is_valid_username`, etc., out of `twist.py`. A validation module for all types of notebook form fields. |
| Line 175: | Line 162: |
| * Manage Jmol applet count / memory use. | * Manage Jmol applet count / memory use - [[http://groups.google.com/group/sage-notebook/browse_thread/thread/0fd98c858e7d24c5/2ef2c296f1b13c3b?#2ef2c296f1b13c3b | sage-notebook]]. |
| Line 189: | Line 176: |
| * Upload worksheets without blocking the server. | * Don't block the server: making docbrowsers, etc. |
| Line 191: | Line 178: |
| * Use fork, named pipes, and/or [[http://docs.python.org/library/mmap.html | memory-mapped]] files for 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. |
| Line 194: | Line 181: |
| * TinyMCE worksheet corruption. | |
| Line 196: | Line 182: |
| * Load browser-specific code only in the specific browser. * Better handling of concurrent worksheet use: "back-button" worksheet corruption. |
|
| Line 202: | Line 186: |
| * Remote access API - [[http://code.google.com/apis/documents/overview.html | Google Documents List Data API]]. | * Remote access Python API - [[http://code.google.com/apis/documents/overview.html | Google Documents List Data API]]. |
| Line 204: | Line 188: |
| * Manipulate, share, publish worksheets at a given Sage(Forge) server. * Python module, included with Sage. |
* Manipulate, share, up/download, publish worksheets at a given Sage(Forge) server. |
| Line 208: | Line 191: |
| * Use HTML format for worksheets. | |
| Line 212: | Line 194: |
| * Deprecate the [unused] `objects` directory. | |
| Line 216: | Line 197: |
| * Filesystem or a database determines worksheet list, not an sobj. | |
| Line 230: | Line 210: |
| * Easy set up of shipped jsMath fonts. | * Easy set up of shipped jsMath fonts - [[http://www.mathjax.org/ | MathJax]]. |
| Line 235: | Line 215: |
| * Defaults: typeset, implicit multiplication, rename "Untitled" worksheets. | * Defaults: typeset, implicit multiplication, 3D viewer, rename "Untitled" worksheets. |
| Line 245: | Line 225: |
| * Custom shortcuts, e.g., ctrl-bksp to delete previous word, not join cells - [[http://code.google.com/p/js-hotkeys/ | js-hotkeys]]. | * Custom shortcuts, e.g., ctrl-bksp to delete previous word, not join cells - [[http://trac.sagemath.org/sage_trac/ticket/7618 | #7618]]. |
| Line 249: | Line 229: |
| * Prevent text movement by a pixel on cell frame focus. | * Unify server and client-side resize algorithms. |
| Line 263: | Line 243: |
| * Use notebook as IDE for running sage instance. | * Use notebook as IDE for running sage instance - [[http://trac.sagemath.org/sage_trac/ticket/7501 | #7501]]. |
| Line 265: | Line 245: |
| * Make "Browse your computer" upload fields editable. | * [[http://hacks.mozilla.org/2009/12/file-drag-and-drop-in-firefox-3-6/ | Drag-and-drop file upload]]. |
| Line 269: | Line 249: |
| * Page through worksheet list, not all at once. | * Page through worksheet list, not all at once - [[http://tablesorter.com/ | tablesorter]]. |
| Line 272: | Line 252: |
| * 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 277: | Line 257: |
| * Live cells, e.g, interacts. | * Live cells, e.g, interacts - [[http://trac.sagemath.org/sage_trac/ticket/6855 | #6855]]. |
| Line 279: | Line 259: |
| * Publishing should update "last changed" time, even for old 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:
- Increase coverage to 100%.
- Meaningful statistics / benchmarks, e.g., %timeit for individual doctests.
- Group logs by install, upgrade, or spkg install event.
- Porting:
- andLinux Sage.
- Windows.
- Windows build farm.
- Sagelite for Windows.
- 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
Matrix B mentioned twice in B.solve_left?: B.solve_left(B, ...).
- Better error detection, e.g., for Maxima command completion.
- Live introspection cells.
- Introspection cross-links.
- Improve introspection / completion interface: floating div, RHS div.
New documentation browser. Open worksheet docstrings to 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
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.
Manage Jmol applet count / memory use - sage-notebook.
Use Python's logging facility.
- Cythonize pexpect.
- 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. #6967), 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/dsage. Use OpenSSL.
Remote access Python API - Google Documents List Data API.
- (Non-)authenticated modes.
- 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.
- Friendly bug buddy that emails reports, bundles session history, etc.
- Reorganize help page:
- Customization:
- Defaults: typeset, implicit multiplication, 3D viewer, rename "Untitled" worksheets.
- Custom window close callback.
- Function to update worksheet titlebar.
- Easy backups, selective or complete.
Download zip files of multiple worksheets, even if accounts=True.
- Keys
- 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 - #7618.
- Cells:
- 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.
- Easily identify idle, queued, and running cells.
Select, delete, (un)group, move multiple cells.
Leading space input bug - #6729.
- 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.
- Optional always visible menubar at top of worksheet.
- Fix "undefined" bug on first save in Safari 4.0.3.
- Don't list "Sage Users" when sharing.
- Rate worksheet title shows false error.
Page through worksheet list, not all at once - tablesorter.
- "Save as" option, e.g., for downloading, that prompts for a name.
- 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:
Tags.
- Suppress browser warning for Konqueror.
- Manage logins:
View recent account activity. Add last login to user.py.
- Invalidate other sessions' cookies.
- Unique cookies for logins from different browsers / computers.
Full-text search: SQLalchemy, Whoosh (codenode-devel).
Fix MoinMoin.
- External:
Embed live cells / worksheets - #6855.
- Live published worksheets.
