Andrew's Wiki
Online File Manager

<toc>

Online File Manager (better name forthcoming)

Proposal

In order to instruct composition students using Ruby and computer programming instead of the English Language and paper writing, one of the primary problems is in familiarizing students with various aspects of computer programming in as brief a time as possible.

While it would be easier to force students to learn to use the command line, this may suck too much time away from actual instruction in the classroom. Therefore, some sort of Integrated Development Environment (IDE) that would assist in the bootstrapping of programming knowledge should be provided. There are two ways, it would seem, to go about doing this. Either a standalone IDE could be provided (by evaluating IDEs or writing a new one (possibly extending Eclipse)) or providing an online environment for development.

An IDE would create problems in that it would involve supporting a number of computers that may or may not be in a fully operational state (in addition to dealing with OSX, Windows, and (possibly) Linux, the possibility of determining what software students are running is quite a challenge). An online environment means that students must have access to Firefox and an internet connection. While this may present some security problems, utilization of secure technologies (SSH and HTTPS) should minimize risk of exposure.

By providing an online programming environment, we can also maintain backups of student work, should they accidently delete something.

The only major problem with an online programming environment is that students would not be able to make GUI programs (this could be a big problem, actually).

Server Environment

  • Ruby on Rails
  • Mongrel (for serving rails in HTTPS)
  • Load balancer (probably mod_load_proxy in Apache)
  • SQLite 3 (My SQL? is, frankly, too unreliable for development. SQLite is a more reliable solution for a non-enterprise database)

Features

Necessary Features

  • Navigate user’s file structure
  • View user’s files
  • Edit user’s files
  • If a file is a Ruby script, user should be able to execute the script and interact with the program.
  • Version Tracking
  • Create project directories from files provided by instructors.
  • Restore damagaed project files

Optional Features

  • Database editor (transparently frontends SQLite)
    • A database library that masks the nature of SQLite might also be a good idea.
  • A Ruby on Rails environment.
    • This would need to be more thought out, but the basic idea is to allow students to create Rails projects and then “connect” a single Rails app to a server (somehow) and interact with it.

Software Libraries

  • Dojo looks a lot cooler than YUI (and a lot easier to use … I couldn’t get YUI working)
  • YUI (this is a BSD-license UI library from Yahoo! that does a lot of interesting AJAX / DHTML stuff)
  • Java SSH2 Library
    • A java applet is probably the best means of executing Ruby content in online environment.
    • Our applet will use RSA public key authentication to log into the development server and execute a user’s Ruby script

Alternatives

  • Mondrian – This is a 100% Ruby IDE that may be extended to include the features we need for class.
  • FreeRIDE – This is another Ruby IDE that looks pretty spiffy. Both this and Mondrian use FXRuby as a GUI library.
  • foxGUIb – An interactive Fox GUI builder.