Labs/Bespin/DesignDocs

From MozillaWiki
< Labs‎ | Bespin
Jump to: navigation, search

Features should have design documents, and here is where we will put them. The Roadmap contains plans for when features are aiming to ship, and also a list of future features. If you like a feature and there isn't a design over here, create one and get hacking with us!

Core Editor

There are many many features that the core editor needs. As designs come up, let's put them here:

Proposed
  • Snippets is a feature that allows you to type in magic commands right into the text, hit tab, and then it gets expanded
  • Go to declaration is a feature that allows you to jump to the declaration of a class or function. Ideally this will be a mouseclick / key stroke away, and optionally via a command.
  • Search has two parts to it, searching within the visible file, and searching across a set of files (e.g. across the entire project)
  • Key Handling defined the underlining view of the world wrt key handling. First, we define the various actions and key combinations and how they should work on the various platforms.
  • The Help System needs to be cleaned up to display more than just a huge list of commands.
  • Bespin's time machine for looking at older versions of the current document might be called Carbonite and then again, it might not.
  • See what others are doing is a feature to help developers be more aware of how their work affects others.
  • Meta Data We're going to need to store meta-data on the data that we store
  • Code Completion will try to help you by telling you which methods are available
In Progress
  • Pie Menu and Not is the next stab at using the pie menu when appropriate, and NOT when appropriate too
  • CommandLine2 is the revised specification for how the command-line should work in the pie menu version of Bespin
  • DebuggerIntegration is the specification for how Bespin allows the user to control a remotely attached JavaScript VM
Completed
  • Quick Open Files is like Apple-T in Textmate.... quick access to the files in your project

Collaboration

There is the Main Collaboration doc, and then sub documents:

Server

Security

Extensibility

Dashboard

The Dashboard was originally conceived as a place to display all kinds of top-level project information in a unique way. That original vision will return. For now, the plan is to eliminate the Dashboard page and move file navigation into the editor.

Component

The editor component that anyone can link to and use Bespin.

Inline Documentation

This section discusses possible interfaces for having helpful documentation that web developers typically need such as: HTML, CSS, Javascript and Javascript libraries.

Refactoring / Cleanup

It may not be sexy, but it gotta get done... and you get a great feeling when you make something better!

Here's the list:

  • Fix Event System Usage: Pub sub is awesome, but we use it for too much. Keep items that truly are "this happened" but move out the "do this" and make real method calls
  • Key Handling Component: Refactor the key handling out of editor.js and other sprinklings and put into one component (works with focus handling)
  • Focus Handling Component: One focus handler that you can register with
  • JS Docs: Take out the WikiCreole and put in JSDoc instead, and a build system to generate the docs from it
  • Conventions:
    • JavaScript File Locations: Instead of module/module.js, move back to module.js which can include subfiles from module/*.js.
    • Code Hitching: Rules for when you should dojo.hitch() versus "var self" and clean up code to do it

Time Machine

Our Time Machine allows you to look back over the history of a file to see visually how it changed over time.

Fun

You gotta have fun.

Brainstorming

We had a brainstorming session that brought about it a ton of ideas. Here's a place to keep them:

  • Project history code churn view
  • Preview toggle for UI elements
  • Replace view source with Bespin
    • Add "edit source" to browser
  • Rich documentation that ties to code and auto detects if out of date
    • integrated docs a la Coda
  • VCS for graphical assets
  • Automated security analysis
  • Integrate with Wordpress (plugin)
  • Certified Open Web Engineer program
  • Crowdsource the management of crowd produces suggestions
  • Open Web book imprint
  • Wizards to inspect code and recommend better ways to code
  • Find utilities that are re-written everywhere and find ways to prevent re-write
  • Design
    • Blank design elements
    • Design sharing tool
    • UI/GUI template tools
    • Visual UI editor
    • Font browser
    • CSS3 Tool
  • Analyze common mistakes
  • "Create new Bespin project" bookmarklet
    • spiders a website and imports it as a project
  • Coding via mobile phone
  • Index all open web project - search engine
  • leadershipboard for web developers worldwide (#lines of code / usage)
    • code quality scores "you broke the build X times"
  • Code fragment library / cookbook
  • Easy project startup wizard
  • TestSwarm integration
  • Installer for internal deployment (.deb etc)
  • Review tools
  • Visual test generator
  • Standard project description file format for Web projects (a la Maven)
  • Integrate with continuous integration services
  • Code flow visualization
  • Zoomable code UI
  • JEP-like program for proposing new Open Web APIs
  • Open Web code validator
  • "Live!" "On AIR" graphic
  • Audio chat
  • Replace textarea with Bespin
  • Build a new DVCS that is all in JavaScript
    • Make browser a DVCS itself
  • 3D cube editor
  • New layout experiment == generates CSS+JS
  • Open Web awards (e.g. webbys for devs)
  • Open Web Cruises
  • Live cam integration for video conference
  • CSS3 design example repo
  • Publishing tools for AMO/Jetpack
  • Integrate with Bugzilla
  • Auto-layout / styling preferences
  • Open Flash IDE (canvas+bespin)
  • Documentation microformat
  • Run offline and be able to edit local files
  • Hook into desktop editors
    • Prism/Titanium
  • TODO list management in Bespin
  • Allow websites to link themselves to a backend so Bespin can edit
  • Make the cycle between editing code and seeing changes in a webapp as short as possible
  • Make coding life a video game
  • Real-time help/mentoring
  • Integrate runtime support for PHP/Python etc
  • Make it easy to see where other people have editor code that I touched
  • Make it easier for developers to use DVCS without knowing DVCS
  • Team up with sites like Topcoder
  • Run Bespin contests
  • Deployment angle; hosting environment
  • Recommendations
    • projects like mine
    • developers like me
  • Finding contextual code snippets
  • Analytics
    • What code is running, heatmap