Differences between revisions 14 and 26 (spanning 12 versions)
Revision 14 as of 2009-09-05 13:17:42
Size: 6013
Editor: qed777
Comment:
Revision 26 as of 2009-09-09 00:33:07
Size: 8099
Editor: was
Comment:
Deletions are marked like this. Additions are marked like this.
Line 11: Line 11:
 * Use Sphinx for sagenb.org docstrings.  * Use Sphinx for sagenb.org docstrings
Line 13: Line 13:
 * 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.
     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:
    2. %rest in cells, and get rest output.  * 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.
Line 20: Line 25:

 * Live introspection cells.

 * Introspection cross links.

 * Tear-out docstrings - [[http://trac.sagemath.org/sage_trac/ticket/6001 | #6001]].
Line 27: Line 38:
 * [[http://en.wikipedia.org/wiki/Captcha | Captcha]] for notebook sign-up - [[http://recaptcha.net/ | reCAPTCHA]].  * [[http://en.wikipedia.org/wiki/Captcha | Captcha]] for notebook sign-up - [[http://recaptcha.net/ | reCAPTCHA]].  This is *only* needed at registration.
Line 29: Line 40:
 * LDAP authentication. (tdumont)  * 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 41: Line 52:
=== Users ===  * 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?

Line 62: Line 79:


=== Users ===

 * See http://routes.groovie.org/ to eliminate twist.py

 * 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

 * Trivial to set implicit multiplication option for the notebook. On a per worksheet basis with a user default. Same for typeset option.
Line 99: Line 127:
 * Syntax highlighting for published worksheets - [[http://trac.sagemath.org/sage_trac/ticket/5653#comment:2 | pygmentize]].
Line 101: Line 131:
 * Publishing notebook pages to selected users or groups (to make this effective, groups of users probably needs to be implemented as well).  * 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.

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

  • LaTeX doc mode.

  • Use $ instead of back ticks for math in reST - #6892.

  • 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)
    1. 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.
    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.
  • Document pexpect interface for users.

  • 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.
  • Reduce data loss possibilites. (dataloss.txt)

  • 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?

  • 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:

> 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

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.

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.

  • 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.
  • Upgrade Sage for 66-bit processors.