Size: 4610
Comment:
|
Size: 11374
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 3: | Line 3: |
This unofficial wish list is adapted from [[http://sage.math.washington.edu/home/wstein/tmp/sageuse/ | this repository]]. Please feel free to add or clarify ideas, link to trac tickets, reorganize items, point out useful links, etc. | This unofficial wish list is adapted from [[http://sage.math.washington.edu/home/wstein/tmp/sageuse/ | this repository]]. Please feel free to add or clarify ideas, link to trac tickets, make comments, reorganize items, point out useful links, etc. |
Line 7: | Line 7: |
* [[http://groups.google.com/group/sage-devel/msg/e86932eeadd88c6a | latex doc mode]] | * [[http://groups.google.com/group/sage-devel/msg/e86932eeadd88c6a | LaTeX doc mode]]. |
Line 9: | Line 9: |
* [[http://groups.google.com/group/sage-devel/browse_thread/thread/8fa0d854b6928f2b/dc4cfe0a941762aa#dc4cfe0a941762aa | back tick versus $]] suggestion is to patch Sphinx itself | * [[http://groups.google.com/group/sage-devel/browse_thread/thread/8fa0d854b6928f2b/dc4cfe0a941762aa#dc4cfe0a941762aa | Use $ instead of back ticks for math in reST]] - [[http://trac.sagemath.org/sage_trac/ticket/6892 | #6892]]. |
Line 11: | Line 11: |
* fix sagenb.org so docstrings look right (sphinx) | * Use Sphinx for sagenb.org docstrings |
Line 13: | Line 13: |
* ReST mode(s): (1) replace tinymce by ReST editor? (2) %rest in cells, and get rest output. |
Depending on how much stress this puts on a server, we could use a less expensive hash function or hash only part of the incoming docstring. Better yet, pass the object's fully qualified name to `set_introspect_html()` and hash just that for introspection of read-only code. |
Line 17: | Line 15: |
* [[http://groups.google.com/group/sage-devel/msg/35e97a1d1cedfdfd | document pexpect users]] | * reST mode(s) 1. replace tinymce by reST editor? * You might be able to make TinyMCE *be* a reST editor. See [[http://tinymce.moxiecode.com/examples/example_09.php#|this example]] of making TinyMCE into a BBCode editor. * reST's implicit closing tags may make this difficult. 2. This is better: %rest in cells, and get reST output. Should this be HTML output from Sphinx? If so, perhaps we should put the Sphinx-ify code in its own module or a utility function. Note that it would be good to autohide and have doubleclick be show. Same with %html. * [[http://groups.google.com/group/sage-devel/msg/35e97a1d1cedfdfd | Document pexpect interface for users]]. * Live introspection cells. * Introspection cross links. * Tear-out docstrings - [[http://trac.sagemath.org/sage_trac/ticket/6001 | #6001]]. |
Line 23: | Line 36: |
* add a textcha question for sage notebook signup | * Streamlined deployment - account management, fewer bugs, etc. |
Line 25: | Line 38: |
* LDAP authentication. (tdumont) | * [[http://en.wikipedia.org/wiki/Captcha | Captcha]] for notebook sign-up - [[http://recaptcha.net/ | reCAPTCHA]]. This is *only* needed at registration. |
Line 27: | Line 40: |
* ensure no matter what that worksheet and server are 'nsync | * LDAP authentication. (tdumont) -- do this by refactoring auth code so that user/password is 100% separate from anything else in the notebook. Then LDAP or anything else is completely trivial. |
Line 29: | Line 42: |
* reduce data loss possibilites -- see [[http://sage.math.washington.edu/home/wstein/tmp/sageuse/dataloss.txt | dataloss.txt]] | * Guaranteed worksheet-server synchronization: - at least have a timestamp on the server - TinyMCE never gets sent back somehow leading to corrupt worksheets. - maybe use the javascript ping function to push changes out. |
Line 31: | Line 47: |
* "I am running sage in one of our department servers, so that my students can use them. If my students lose their password, how can I recover it for them? Thanks." (Byungchul Cha) | * Reduce data loss possibilites. ([[http://sage.math.washington.edu/home/wstein/tmp/sageuse/dataloss.txt |dataloss.txt]]): easy backup of all critical data in a notebook server. Get via web interface as admin. Archives. * Recover passwords. (Byungchul Cha) |
Line 33: | Line 51: |
* make it so username is email address -- i really like that | * Email address as username. |
Line 35: | Line 53: |
* add users as admin -- see sage-support email to fprimex | * Add users as admins. (fprimex) * User groups. * Security -- see http://www.gingerlime.com/20090901_securing_sage_notebook.pdf * Functions to delete `worksheets/USER/*/BLAH` where `BLAH` is cells, code, data, or snapshots? Does this affect the size of .sws files? Admin pane showing usage for various things, e.g., snapshots. Allow easy trimming of old snapshots, configuring how their kepts, etc. * Balancing server_pool: {{{ I managed to do a little of this by exporting the directory that the notebook is running in via NFS to the other machines and maintaining the same permissions and file structure for everything else. However, this raised another issue in that not all my machines are of comparable power. How complicated would it be to add something that allows you to balance how many processes go to each server? I'm thinking something along the lines of distcc's host list. }}} * Account approval: Possible solution -- just have an interface like Google groups where new users can be "moderated by default". {{{ > We have a small server and would like provide SAGE (in form of the > notebook) for the students. However, it maybe a bit > "risky" (especially, we have no experts to manage it) to open it up to > everyone. So we would like to have some kind of "account approval" > procedure. Can that be done, if so how? }}} |
Line 39: | Line 86: |
* reorganize the notebook help page | * [[http://groups.google.com/group/sage-devel/browse_thread/thread/258c07ae672a3617 | Sage Forge -- idea posted on Sage Devel by Matthew Turk]] |
Line 41: | Line 88: |
* automatically have worksheets save their state and restore when started later. | * "It could be really useful to have Sage generate RSS feeds when sharing or publishing worksheets. There is a firefox extension for reading RSS feeds called Sage which could also be developed further to work with Sage software." -- Serge A. Salamanka (on sage-devel) |
Line 43: | Line 90: |
* ability to update the titlebar from sage notebook | * See http://routes.groovie.org/ to handle URLS (which is basically all twist.py is doing a lot of). |
Line 45: | Line 92: |
* ability for interacts to auto-update themselves | * Sage could (and should!) ship copies of the jsmath fonts, and explain clearly what to do to install them whenever they aren't already installed. The current system, which involves visiting the jsmath website in response to subtle hints is not very good. |
Line 47: | Line 94: |
* Whoosh fulltext search (search in codenode archives for discussion) | * Fix TinyMCE issues, as mentioned here: http://groups.google.com/group/sage-devel/browse_frm/thread/4cd1cc188470c723/c2477e1bdba68028?q=tinymce+bug+group:sage-devel#c2477e1bdba68028 and http://groups.google.com/group/sage-devel/msg/e2eb3f848a21faa3 |
Line 49: | Line 96: |
* Keith Lang "Top 10 UX Myths"; http://carsonified.com/blog/design/top-10-ux-myths/ | * Move preparsing to the worksheet (not server). This (1) solves implicit multiplication problem, and (2) fits well with the "notebook server computers the least possible" philosophy. |
Line 51: | Line 98: |
* chat system for students/users | * Improve handling of multiple users using the same worksheet. |
Line 53: | Line 100: |
* implement %timeit block in notebook | * Trivial to set implicit multiplication option for the notebook. On a per worksheet basis with a user default. Same for typeset option. |
Line 55: | Line 102: |
* [[http://groups.google.com/group/sage-devel/browse_thread/thread/e46f0a59d5cf70dc | tags]] (Brian Granger) | * Reorganize the notebook help page. |
Line 57: | Line 104: |
* 1 week -- write something to make it easy to embed interacts in other web pages (needed for the frg, imho -- may start this at Lopez). | * Automatically have worksheets save their state and restore when started later. Something like "vmware resume saved state", "pause". |
Line 59: | Line 106: |
* There are things that I now don't like on the Sage notebook, like that if I click on a cell, the frame gets focused (that's ok), but the text moves by one pixel. I hate that. My javascript version doesn't do that, at least on firefox. In fact, it's just a CSS styles issue, so it's easy to fix -- but I wasn't sure if it's just on my firefox, or oeverywhere. (ONDREJ) | * Update the titlebar from the notebook: just a little javascript wrapper function to do this. {{{ set_title_status("almost done!") }}} |
Line 61: | Line 111: |
* iphone -- link to do completions | * Auto-updating interacts and cells (like notebook hack but official). |
Line 63: | Line 113: |
* notebook input bug -- http://trac.sagemath.org/sage_trac/ticket/6729 | * Optimize fulltext search (could be moving everything to database). Use SQLalchemy? [[http://whoosh.ca/ | Whoosh]] full-text search ([[http://groups.google.com/group/codenode-devel/browse_thread/thread/d3ffefa3b09937b6/98bdf00f65441934?#98bdf00f65441934 | codenode-devel]]). |
Line 65: | Line 115: |
* debugger in the notebook | * [[http://carsonified.com/blog/design/top-10-ux-myths/ | Keith Lang's Top 10 UI Myths]]. |
Line 67: | Line 117: |
* Somebody published a irrelevant worksheet (to test the button) and wanted to cancel it but he was not able. He then delete its worksheet, but apparently the worksheet was still published...:( | * Chat system for students/users - [[http://www.google.com/ig/directory?synd=open&q=chat | Google gadget]]? |
Line 69: | Line 119: |
* make it possible to delete published worksheets. | * Implement %timeit block in notebook. |
Line 71: | Line 121: |
* slideshow mode | * [[http://groups.google.com/group/sage-devel/browse_thread/thread/e46f0a59d5cf70dc | Worksheet tags]]. (Brian Granger) |
Line 73: | Line 123: |
* in-browser zoom-pan-annotate of Sage plots | * Embed cells, including interacts, in other web pages. |
Line 75: | Line 125: |
* What I mean is that the chance to access at the same time an history powered command line, and a powerful editor (with code completion, tabs, colors, etc.., which looks pretty standard - to not say minimal - in these modern times) looks pretty comfortable to me, but I'll be happy to listen to other comments. I've already heard talking about BeSpin ( https://bespin.mozilla.com/ ) in this list, right? Can't we have something similar? :) | * Prevent text movement by a pixel on cell frame focus. (Ondrej) |
Line 77: | Line 127: |
* fix moinmoin | * Completions link for iphone. * Improve the introspection / completion interface. (boothby: contrary to my previous claims, it may be possible to display a floating div below the cursor -- otherwise, I think that moving the div to the right-hand side of the screen is the right thing to do). Could you please elaborate about these ideas? Google suggest? * Notebook input bug - [[http://trac.sagemath.org/sage_trac/ticket/6729 | #6729]]. * Python debugger in the notebook: basically pylons implements something like this which could be inspiring. At least try it to see their design! Check this out: https://developer.mozilla.org/En/Pylons * Make it possible to delete published worksheets. * Slideshow mode. * Interactively zoom, pan, and annotate plots. SVG? Png's? FLOT? Canvas + matplotlib? * Powerful editor with command-line history, syntax highlighting, context-sensitive completions, etc. - [[https://bespin.mozilla.com/ | BeSpin]]. * Syntax highlighting for published worksheets - [[http://trac.sagemath.org/sage_trac/ticket/5653#comment:2 | pygmentize]]. * Fix !MoinMoin. * Update some output cells ''after'' the new output arrives. For example, smoothly update Jmol via its JS interface. * Publishing notebook pages to selected users or groups. (This *is* share, but with groups added.) -- No, publish means "read-only" too, which is part of the feature request. * [[http://groups.google.com/group/sage-devel/browse_thread/thread/da578e3918f08709/da54258f1783b874?#da54258f1783b874 | GUI plugins for math input]]. * [[http://groups.google.com/group/sage-devel/browse_thread/thread/86429406fb3bba17/dd3163cb2a47fa38?#dd3163cb2a47fa38 | Vector graphics editing]] - [[http://code.google.com/p/svg-edit/ | SVG-edit]]. * Account tokens: {{{ A preliminary patch for this is available at http://www.math.leidenuniv.nl/~wpalenst/sage/account_tokens.patch . It is a patch against 4.1.1 with tickets 4552 ('trac_4552-notebook_account_email.patch'), 6843, 6856 applied. (TODO: add doctests, implement token-generation page to the interface added by ticket 4135, allow enabling/disabling the token feature from that page too.) }}} * The 'forgot password' feature (enabled by enabling the 'email' setting of the notebook) currently allows anyone to reset the password of anyone they know the email address of, since it currently directly resets the password and mails the new password to the email address associated with the account. It would probably be better to instead generate a second password for the account, that would only become permanent once it has been used once. Or, alternatively, to email a link with a secure token to a password-change-page. * Make it possible to use the notebook as an IDE for the instance of sage that's running. * Make it possible to download zip files of multiple worksheets, even if accounts=True * Make it possible for Sage servers to sync worksheets between each other (i.e., let me sync all of my worksheets on a given server, with a given username and password). This helps tremendously with keeping backup copies. Should each user directory maybe be an hg repository with the worksheet.txt files and the files in DATA checked in? That would maybe make pushing/pulling changes easier. * Parens matching: Has there been any progress on this? http://www.mail-archive.com/sage-support@googlegroups.com/msg03975.html One of the often heard comments from lecturers is that they are wasting time on basic syntax, when students mismatch parenthesis. In the simplest instance, when a closing ] or ) is typed it helps to highlight the correct (nested or not) matching left one. See http://trac.sagemath.org/sage_trac/ticket/3646 |
Line 81: | Line 180: |
* Implement a cross-browser web-application testing infrastructure based on webdriver http://code.google.com/p/webdriver/ for the notebook, focused on functionality, consistency and concurrency. For example, execute 10 sessions of virtual calculus students in a loop. tags: google <- for funding? notebook java stresstest Money? Don't know, motivated student who has learned webdesign, java and probably python. | * Notebook testing infrastructure - automated, cross-browser and platform, focused on functionality, consistency, concurrency, and scalability - [[http://seleniumhq.org/ | Selenium]], [[http://testled.com/ | Testled]], [[http://code.google.com/p/webdriver/ | WebDriver]]. For example, execute 10 sessions of virtual calculus students in a loop. WebTest, which is included in Pylons, is what mhansen recommends. |
Line 83: | Line 182: |
* http://testled.com/ | * Make it so Sage binaries don't use SSE3, etc. -- make them FAT! |
Line 85: | Line 184: |
* make it so sage binaries don't use ssse3, etc. -- make them FAT! | * Windows build farm. |
Line 87: | Line 186: |
* windows server farm | * Sagelite - separate the current notebook from Sage. Windows port. |
Line 89: | Line 188: |
* 1 week -- write code to do automated testing of the scalability of the Sage (or any) notebook system | * Windows port. |
Line 91: | Line 190: |
* 1 week -- get the current notebook separated out from Sage 100% for real and get it to work on windows. (this is sagelite). | * !VirtualBox Sage. |
Line 93: | Line 192: |
* 1 month -- the windows port | * andLinux Sage. |
Line 95: | Line 194: |
* 2 days -- VirtualBox Sage * 2 days -- andLinux Sage * 1 month -- fix the major bugs and issues with the current notebook that make it difficult to deploy (e.g., account management). * 1 week -- improve documentation/testing and refactor code. |
* Improve documentation/testing and refactor code. |
Sage Usability Improvements
This unofficial wish list is adapted from this repository. Please feel free to add or clarify ideas, link to trac tickets, make comments, reorganize items, point out useful links, etc.
Documentation
- Use Sphinx for sagenb.org docstrings
Depending on how much stress this puts on a server, we could use a less expensive hash function or hash only part of the incoming docstring. Better yet, pass the object's fully qualified name to set_introspect_html() and hash just that for introspection of read-only code.
- reST mode(s)
- replace tinymce by reST editor?
You might be able to make TinyMCE *be* a reST editor. See this example of making TinyMCE into a BBCode editor.
- reST's implicit closing tags may make this difficult.
- This is better: %rest in cells, and get reST output.
- Should this be HTML output from Sphinx? If so, perhaps we should put the Sphinx-ify code in its own module or a utility function. Note that it would be good to autohide and have doubleclick be show. Same with %html.
- replace tinymce by reST editor?
- Live introspection cells.
- Introspection cross links.
Tear-out docstrings - #6001.
Notebook
Admin
- Streamlined deployment - account management, fewer bugs, etc.
Captcha for notebook sign-up - reCAPTCHA. This is *only* needed at registration.
- LDAP authentication. (tdumont) -- do this by refactoring auth code so that user/password is 100% separate from anything else in the notebook. Then LDAP or anything else is completely trivial.
- Guaranteed worksheet-server synchronization:
- - at least have a timestamp on the server - TinyMCE never gets sent back somehow leading to corrupt worksheets. - maybe use the javascript ping function to push changes out.
Reduce data loss possibilites. (dataloss.txt): easy backup of all critical data in a notebook server. Get via web interface as admin. Archives.
- Recover passwords. (Byungchul Cha)
- Email address as username.
- Add users as admins. (fprimex)
- User groups.
Security -- see http://www.gingerlime.com/20090901_securing_sage_notebook.pdf
Functions to delete worksheets/USER/*/BLAH where BLAH is cells, code, data, or snapshots? Does this affect the size of .sws files? Admin pane showing usage for various things, e.g., snapshots. Allow easy trimming of old snapshots, configuring how their kepts, etc.
- Balancing server_pool:
I managed to do a little of this by exporting the directory that the notebook is running in via NFS to the other machines and maintaining the same permissions and file structure for everything else. However, this raised another issue in that not all my machines are of comparable power. How complicated would it be to add something that allows you to balance how many processes go to each server? I'm thinking something along the lines of distcc's host list.
- Account approval: Possible solution -- just have an interface like Google groups where new users can be "moderated by default".
> We have a small server and would like provide SAGE (in form of the > notebook) for the students. However, it maybe a bit > "risky" (especially, we have no experts to manage it) to open it up to > everyone. So we would like to have some kind of "account approval" > procedure. Can that be done, if so how?
Users
- "It could be really useful to have Sage generate RSS feeds when sharing or publishing worksheets. There is a firefox extension for reading RSS feeds called Sage which could also be developed further to work with Sage software." -- Serge A. Salamanka (on sage-devel)
See http://routes.groovie.org/ to handle URLS (which is basically all twist.py is doing a lot of).
- Sage could (and should!) ship copies of the jsmath fonts, and explain clearly what to do to install them whenever they aren't already installed. The current system, which involves visiting the jsmath website in response to subtle hints is not very good.
Fix TinyMCE issues, as mentioned here: http://groups.google.com/group/sage-devel/browse_frm/thread/4cd1cc188470c723/c2477e1bdba68028?q=tinymce+bug+group:sage-devel#c2477e1bdba68028 and http://groups.google.com/group/sage-devel/msg/e2eb3f848a21faa3
- Move preparsing to the worksheet (not server). This (1) solves implicit multiplication problem, and (2) fits well with the "notebook server computers the least possible" philosophy.
- Improve handling of multiple users using the same worksheet.
- Trivial to set implicit multiplication option for the notebook. On a per worksheet basis with a user default. Same for typeset option.
- Reorganize the notebook help page.
- Automatically have worksheets save their state and restore when started later. Something like "vmware resume saved state", "pause".
- Update the titlebar from the notebook: just a little javascript wrapper function to do this.
set_title_status("almost done!")
- Auto-updating interacts and cells (like notebook hack but official).
Optimize fulltext search (could be moving everything to database). Use SQLalchemy? Whoosh full-text search (codenode-devel).
Chat system for students/users - Google gadget?
- Implement %timeit block in notebook.
Worksheet tags. (Brian Granger)
- Embed cells, including interacts, in other web pages.
- Prevent text movement by a pixel on cell frame focus. (Ondrej)
- Completions link for iphone.
- Improve the introspection / completion interface. (boothby: contrary to my previous claims, it may be possible to display a floating div below the cursor -- otherwise, I think that moving the div to the right-hand side of the screen is the right thing to do).
- Could you please elaborate about these ideas? Google suggest?
Notebook input bug - #6729.
Python debugger in the notebook: basically pylons implements something like this which could be inspiring. At least try it to see their design! Check this out: https://developer.mozilla.org/En/Pylons
- Make it possible to delete published worksheets.
- Slideshow mode.
- Interactively zoom, pan, and annotate plots. SVG? Png's? FLOT? Canvas + matplotlib?
Powerful editor with command-line history, syntax highlighting, context-sensitive completions, etc. - BeSpin.
Syntax highlighting for published worksheets - pygmentize.
Fix MoinMoin.
Update some output cells after the new output arrives. For example, smoothly update Jmol via its JS interface.
- Publishing notebook pages to selected users or groups. (This *is* share, but with groups added.) -- No, publish means "read-only" too, which is part of the feature request.
- Account tokens:
A preliminary patch for this is available at http://www.math.leidenuniv.nl/~wpalenst/sage/account_tokens.patch . It is a patch against 4.1.1 with tickets 4552 ('trac_4552-notebook_account_email.patch'), 6843, 6856 applied. (TODO: add doctests, implement token-generation page to the interface added by ticket 4135, allow enabling/disabling the token feature from that page too.)
- The 'forgot password' feature (enabled by enabling the 'email' setting of the notebook) currently allows anyone to reset the password of anyone they know the email address of, since it currently directly resets the password and mails the new password to the email address associated with the account. It would probably be better to instead generate a second password for the account, that would only become permanent once it has been used once. Or, alternatively, to email a link with a secure token to a password-change-page.
- Make it possible to use the notebook as an IDE for the instance of sage that's running.
- Make it possible to download zip files of multiple worksheets, even if accounts=True
- Make it possible for Sage servers to sync worksheets between each other (i.e., let me sync all of my worksheets on a given server, with a given username and password). This helps tremendously with keeping backup copies. Should each user directory maybe be an hg repository with the worksheet.txt files and the files in DATA checked in? That would maybe make pushing/pulling changes easier.
Parens matching: Has there been any progress on this? http://www.mail-archive.com/sage-support@googlegroups.com/msg03975.html One of the often heard comments from lecturers is that they are wasting time on basic syntax, when students mismatch parenthesis. In the simplest instance, when a closing ] or ) is typed it helps to highlight the correct (nested or not) matching left one. See http://trac.sagemath.org/sage_trac/ticket/3646
Build / Test
Notebook testing infrastructure - automated, cross-browser and platform, focused on functionality, consistency, concurrency, and scalability - Selenium, Testled, WebDriver. For example, execute 10 sessions of virtual calculus students in a loop. WebTest, which is included in Pylons, is what mhansen recommends.
- Make it so Sage binaries don't use SSE3, etc. -- make them FAT!
- Windows build farm.
- Sagelite - separate the current notebook from Sage. Windows port.
- Windows port.
VirtualBox Sage.
- andLinux Sage.
- Improve documentation/testing and refactor code.