355
edits
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 == | |||
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 | ||
== 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 |
edits