Skip to content

Capstone Project Proposal

Mike Medley edited this page Feb 3, 2014 · 1 revision

Motivation

User Scripts are best described as lightweight site-specific browser extensions, written entirely in JavaScript and containing a special block of metadata that tells a user script engine, such as GreaseMonkey, on what site to run the script. The script can do anything that originary JavaScript running on a web can do, such as modify the appearance or functionality of the site on the client-side. Some user script employ special API functions — provided by the user script engine — to do things that normal client-side JavaScript cannot, like cross-domain xmlhttprequests.

People who write user scripts (script authors) want a place to publish them where other users can download scripts for installation. And users want a place to find scripts that will be useful for them. Currently, there exists a de facto user script repository called userscripts.org. The site has many users and contains thousands of user scripts. Unfortunately, userscripts.org is in a state of disrepair and has been all but abandoned by its creators. Many active user script developers have expressed an interest in improving the site, but it remains closed source. Several members have shown interest in contributing to a competing open source user script repository and that is how the idea for OpenUserJS was born.

Functionalities

  • Login and account creation using social network user authentication.
  • Integration with GitHub
  • Script uploading directly to the OpenUserJS site
  • Individualized script issue tracker
  • Script reviews using a simple voting system with automated ticket creation prompt on downvotes
  • Flag capability to enable community self-moderation for spam and malicious activity
  • Collaborative scripts: ability for multiple users to own a script
  • Human readable install links for link sharing
  • Powerful and flexible script searching functionality
  • User script grouping
  • User profiles & settings
  • List of popular and new scripts aggregated at main site homepage
  • Management of script licenses: must be released using an open-source license
  • Beggar’s Corner: place for non-author users to request new scripts
  • Garage: place for script authors to request assistance from other authors
  • Moderator dashboard: flagged objects are sent to moderators for judgement
  • Toolbox: place for script libraries
  • Make scripts forkable by other script authors
  • User Script Sandbox: automatic detection of malicious scripts
  • Graveyard: when objects are deleted then they go to the graveyard, from where they the deletion may be undone and the deleted object resurrected

Implementation Strategy

Our project is developed on the Node.js platform using the express framework and written in JavaScript. The project follows the Model-View-Controller design methodology with the Mustache template language being used for the views. We are using MongoDB for the model portion and the controller is implemented as express routes written in JavaScript.

Challenges

This project is made difficult by requiring collaboration from a diverse group of distant authors who are only working on the project of their own free and good will. Additionally, the project has many functional requirements in trying to replace a popular, but lackluster, competing site. Project scaling and system script sandboxing features for detection of potentially malicious scripts will be very challenging.

Team

sizzlemctwizzle: project creator, technical manager, lead developer; experience with all backend and middleware technologies and languages

DoctorSnowman: web developer, technical adviser; experience working as front-end user interface developer

Clone this wiki locally