Labs/Bespin/DesignDocs: Difference between revisions

no edit summary
No edit summary
 
(44 intermediate revisions by 6 users not shown)
Line 1: Line 1:
Features should have design documents, and here is where we will put them:
Features should have design documents, and here is where we will put them. The [[Labs/Bespin/Roadmap|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 ===
== Core Editor ==


There are many many features that the core editor needs. As designs come up, let's put them here:
There are many many features that the core editor needs. As designs come up, let's put them here:
===== Proposed =====
* [[Labs/Bespin/DesignDocs/Editor/Snippets|Snippets]] is a feature that allows you to type in magic commands right into the text, hit tab, and then it gets expanded
* [[Labs/Bespin/DesignDocs/Editor/GotoDeclaration|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.
* [[Labs/Bespin/DesignDocs/Editor/Search|Search]] has two parts to it, searching within the visible file, and searching across a set of files (e.g. across the entire project)
* [[Labs/Bespin/DesignDocs/Editor/KeyHandling|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 [[Labs/Bespin/DesignDocs/Help|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 [[Labs/Bespin/DesignDocs/Carbonite|Carbonite]] and then again, it might not.
* [[Labs/Bespin/DesignDocs/Stati|See what others are doing]] is a feature to help developers be more aware of how their work affects others.
* [[Labs/Bespin/DesignDocs/MetaData|Meta Data]] We're going to need to store meta-data on the data that we store
* [[Labs/Bespin/DesignDocs/CodeCompletion|Code Completion]] will try to help you by telling you which methods are available
===== In Progress =====
* [[Labs/Bespin/DesignDocs/Editor/PieMenuAndNot|Pie Menu and Not]] is the next stab at using the pie menu when appropriate, and NOT when appropriate too
* [[Labs/Bespin/DesignDocs/Editor/CommandLine2|CommandLine2]] is the revised specification for how the command-line should work in the pie menu version of Bespin
* [[Labs/Bespin/DesignDocs/Editor/DebuggerIntegration|DebuggerIntegration]] is the specification for how Bespin allows the user to control a remotely attached JavaScript VM
===== Completed =====


* [[Labs/Bespin/DesignDocs/Editor/OpenFiles|Quick Open Files]] is like Apple-T in Textmate.... quick access to the files in your project
* [[Labs/Bespin/DesignDocs/Editor/OpenFiles|Quick Open Files]] is like Apple-T in Textmate.... quick access to the files in your project
* [[Labs/Bespin/DesignDocs/Editor/Snippets|Snippets]] is a feature that allows you to type in magic commands right into the text, hit tab, and then it gets expanded


=== Collaboration ===
== Collaboration ==


There is the [[Labs/Bespin/DesignDocs/Collaboration|Main Collaboration doc]], and then sub documents:
There is the [[Labs/Bespin/DesignDocs/Collaboration|Main Collaboration doc]], and then sub documents:
Line 14: Line 35:
* [[Labs/Bespin/DesignDocs/Collaboration/Database|Proposed database changes]]
* [[Labs/Bespin/DesignDocs/Collaboration/Database|Proposed database changes]]
* [[Labs/Bespin/DesignDocs/Collaboration/Detail|Command line detail]]
* [[Labs/Bespin/DesignDocs/Collaboration/Detail|Command line detail]]
* [[Labs/Bespin/DesignDocs/Collaboration/Colorization|Colorization]]
* [[Labs/Bespin/DesignDocs/Collaboration/Mobwrite|Mozilla changes to the Mobwrite Protocol]]


=== Extensibility ===
== Server ==
 
* [[Labs/Bespin/DesignDocs/VCSIntegration|Version control system integration]]
* [[Labs/Bespin/DesignDocs/JSServer|JavaScript Server]]
 
== Security ==
 
* [[Labs/Bespin/DesignDocs/OpenIDIntegration|OpenID integration]]
 
== Extensibility ==


* [[Labs/Bespin/DesignDocs/PluginAPI|Plugin API]]
* [[Labs/Bespin/DesignDocs/PluginAPI|Plugin API]]
* [[Labs/Bespin/DesignDocs/ConfigIntegration|Configuration Integration]]
* [[Labs/Bespin/DesignDocs/ConfigIntegration|Configuration Integration]]
* [[Labs/Bespin/DesignDocs/Commands|Commands for dealing with custom commands]]
* [[Labs/Bespin/DesignDocs/Commands|Commands for dealing with custom commands]]
* [[Labs/Bespin/DesignDocs/Security|Security]]: Using Caja to help with both security and keeping a public API separate from a private API
== 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  [[Labs/Bespin/Dashboard|eliminate the Dashboard page]] and move file navigation into the editor.
== Component ==
The editor component that anyone can link to and use Bespin.
* [[Labs/Bespin/DesignDocs/EditorComponent/Packaging|Editor Component Packaging]]
== Inline Documentation ==
This section discusses possible interfaces for having helpful documentation that web developers typically need such as: HTML, CSS, Javascript and Javascript libraries. 
* [[Labs/Bespin/DesignDocs/Inline Documentation|Overview]]
== 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:
* [[Labs/Bespin/DesignDocs/Refactoring/FixEventing|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
* [[Labs/Bespin/DesignDocs/Refactoring/KeyHandler|Key Handling Component]]: Refactor the key handling out of editor.js and other sprinklings and put into one component (works with focus handling)
* [[Labs/Bespin/DesignDocs/Refactoring/FocusHandler|Focus Handling Component]]: One focus handler that you can register with
* [[Labs/Bespin/DesignDocs/Refactoring/JavaScriptDocumentation|JS Docs]]: Take out the WikiCreole and put in JSDoc instead, and a build system to generate the docs from it
* Conventions:
** [[Labs/Bespin/DesignDocs/Refactoring/JavaScriptLocations|JavaScript File Locations]]: Instead of module/module.js, move back to module.js which can include subfiles from module/*.js.
** [[Labs/Bespin/DesignDocs/Refactoring/Hitching|Code Hitching]]: Rules for when you should dojo.hitch() versus "var self" and clean up code to do it
== Time Machine ==
Our [[Labs/Bespin/DesignDocs/TimeMachine|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.
* [[/CoderBadge|Coder Badge]] let's you put your Bespin groovy on
== 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
355

edits