Labs/Bespin/Roadmap: Difference between revisions

Jump to navigation Jump to search
no edit summary
No edit summary
No edit summary
Line 1: Line 1:
The Bespin project is a dynamic area where the community decides the direction. However, there are large pieces that we are all working on and this is a good place to share the high level roadmap:
The Bespin project is a dynamic area where the community decides the direction. However, there are large pieces that we are all working on and this is a good place to share the high level roadmap. The goal of this document is that you should see the vision of Bespin and where we want to take it, but also the short term needs of the project.


==== Full Editor Implementation ====
By the end of the year, we would be thrilled to see Bespin used by many developers to create compelling Open Web products in a productive way, having fun while doing so.


The 0.1 release had a lot of editor functionality, but is missing basic editor functionality. We will have an ongoing amount of work to clean up and add in this functionality. Some examples include:
Version 0.1 was our initial launch release, and now we are moving on to new themes.


* Firming up navigation
== Roadmap Themes ==
* Adding project and session data into the UI, so you can easily get between files
* Implementing the Apple-T "Go to file" Textmate use case
* Implement "go to declaration" so you can jump from a method name to where it was declared
* so so so much more.


==== Internationalization ====
We currently have a few themes in which to group the future releases:


We need to sweep through and abstract out and fix the i18n problems that we have.
* '''Usable''': We need to eat dogfood, and from time to time we will come back to releases that rein in the innovation and make sure that the whole experience is highly usable
* '''Extensible''': We want to make sure that Bespin gets easier and easy to extend
* '''Productive''': We want to make sure that we create features in Bespin that make developers more productive
* '''Fun''': If it isn't fun to use Bespin, then why are we doing this!


==== Search ====
== Current Focus ==


Search throughout the entire project and give jump of points. The server does the hard work here.
The current focus of April is the "Usable" theme. We want to sprint to make the Bespin editor a usable tool for developers!


==== Collaboration ====
What is part of the first burst in this theme?


SubEthaEdit on the Web. We've put some effort into designing the social side - that is the mechanics of sharing your projects with others, allowing editor sharing and protecting privacy. You can see the [[Labs/Bespin/DesignDocs/Collaboration|social side of the design work]].
* Solidify / clean up UI on all features
** toolbar
** Outline / syntax checker
** Polish scrollbars (usability of last line, painting)
** Go through defaults
** Background / Progress bar notification
* Convert to Th
** Move themes over from themes.js to white.css, black.css etc
* VCS Integration
* [[Labs/Bespin/DesignDocs/Collaboration|Collaboration]]
** backend functionality and scalability
** UI changes
** Undo / redo (server side and client side)
* Rock solid keyboard support
* Help system that helps
** New design that does more than list a growing list of commands
* Search (in file, in project)
* Dashboard
** dashboard features: create new files, delete files, show open file, etc.
** Rethink dashboard / editor integration
* Command Line
** save the history
** multi-level completion
** Re-think which commands should be default?
** Get popup right / move to history viewer?
* Stretch: VCS Candy
** smart support for diff, status, overlay


As for the technics of sharing bits, Neil Fraser's [http://neil.fraser.name/writing/sync/ excellent work] looks like it will come in very handy.
This theme will likely result in a number of releases:


==== Revision Control Integration ====
* 0.2 - VCS Release
* 0.3 - Collaboration teh Social Release
* 0.4 - Tasty Dogfood (Once we get the other features to a point where the editor is full usable. Bug fix bug fix bug fix)


We want to pair Bespin to revision control. You should be able to easily edit and fork code, and we need nice merge tools and the like to make this really fun and snappy. Want to make sure that this is an open architecture that people can plugin to various rcs backends (e.g. git/hg/svn/...)
== Future Themes ==


==== Plugin model ====
Let's also look at what other themes and features are on the horizon to whet the appetite. If people implement any of these we will certainly take them!


This one is a little meta. There are many ways to extend Bespin. You can edit your config.js file (can type: editconfig) and start accessing anything you like. You can easily listen in on the world via the bespin.publish/subscribe eventing system. You can create your own commands using the cmd* commands themselves.
==== Extensible Theme ====


We want to make it even easier though. We want to have a simple plugin API.
* Initial [[Labs/Bespin/DesignDocs/PluginAPI|Plugin API]] (NOTE: This will actually get rolled into a Usable release)
* Public vs. Private API
* Clean up multi-instance editor vs. one instance
* Plugin repository (AMO?)
* [[Labs/Bespin/DesignDocs/UbiquityIntegration|Ubiquity Integration]]
* Embed component at a place where we can have people use it a la YouTube


Read the [[Labs/Bespin/Roadmap/PluginAPI|Plugin API Design Document]] to learn more.
==== Productive Theme ====


==== Ubiquity Integration ====
* Dashboard showing project metrics
* Code completion
* Code folding
* Code linking -> go to a declaration from a call
** explore fun ways to keep track of context as you drill into code
* Auto declaration popup
** When you mouse over a function, a gesture pops up the declaration of that method (a cousin to a gesture that takes you to the code directly)
* [[Labs/Bespin/DesignDocs/OfflineSupport|Offline Support]]
* Mobile version
** E.g. iPhone, Palm Pre.... interesting quick key access to coding


We love command lines, and Ubiquity is the mother of them all. Social features built in. We made the Bespin command line as close to Ubiquity as possible to allow for us to fully integrate them two.
==== Exciting (or Goofy, you decide!) Theme ====


Imagine being able to:
* Collaboration "Follow Brendan" and "screencast" mode
* Fun dashboard concepts
** See what other people are doing
** Commit, commit!
* Built-in chat per file
* Integrate Bespin with jslint
* Heatmap
* Emacs / VI key modes
* Visual function debugger
* Templating
** Easy to include JS libraries
** createproject foo rails -> load up a Rails project
** Smart grokking of JS libraries
* Gaming and coding experiments
* Deployment
** App Engine
** AWS
* Timeline / tree for a file
** braaanches
** blame info
* 3D Pixel Shader editor
* Visual diffing
** on a changeset, or per file
* Submit patches to queue
** e.g. reviewboard + visualizations
* Snippets a la TM
** Including smart conditional editor
* Find usages
* Support for a documentation format
* Smart comments
** Have areas in the comments that are shown, and others than are hidden unless you ask for them to save space
* Word wrap
* Code Freshness (so fresh and so clean!)
** since the comment was made, how much code has changed
** show which code in the project / file is oldest / newest, etc.
* Code Isolation
** pick a function and play with it, seeing visually how internal data mutates and what side-effect changes are made
** tie into server-side recording of last run information
** integrate with auto test creation
* Code Memory
** create an infrastructure for recording information about code state across executions (and figure out how this is even possible)
** "Code Isolation" uses this to show past values of arguments for past executions
** "Code Hotspots" uses this to show which parts of code are executed the most
** Interface latency report may be related to this
* Abstracting Code Style from On Disk
** "I want to see this file in foo {} but my company format is foo\n{"
* Automatic test creation
* Most Common Path View
** De-emphasis code paths that aren't as common (e.g. error paths, wrong side of an if check)
* Safe Invocation
** Takes chained invocations and changes them to be safe
    e.g. foo.bar().baz() -> if (foo && ....)
* Pie Menu
** Mobile: Make it sane to input code via mobile interface
** Desktop: Make into an a12y feature by making it huge on desktops
** Audible: Make sure voice recognition packages can drive it on desktop
* CSS Selector Helper
** visualize selections on HTML page
* Rich Accessibility / Internationalization support


* Subscribe to peoples commands
==== Infrastructure Theme ====
* Have a place to find commands at the Herd
* run Ubiquity commands directly from within Bespin?


This is exciting indeed for us.
* Create test suits for Bespin code
 
* Auto report on interface latency
We also want to research using the same Ubiquity parser to make it super smart. Completion is key, and we only have one layer right now. A short term project it to get multi-level completion.
 
==== AST on the server ====
 
We want to experiment by having the server grind and create AST that is shared with the clients on a project
 
==== Offline support ====
 
We all love being connected, but we want to have access to our code when we are on the go. We have a few use cases here that we want to pursue as a community:
 
* VCS Integration: When we have VCS integration, then at least you can do an update/clone/checkout to your system and you can run local editors on that. This is similar to Gmail before it got offline support.... you could download the email via IMAP and look at it if you needed too in another client. Not ideal at all.
 
* HTML5 Offline Support / Gears: We would like to have as much functionality as possible available when offline without having to do anything. We use the offline store to cache the web resources of Bespin, and a DB API to store local work.
 
* Bespin Local: You can run a local application that runs a Bespin server instance and serves up the data. This has the pros and cons of running locally.
 
Would you like to help build a Prism/Fluid/Adobe AIR wrapper on Bespin? We could use your help. The key is that the embedded Gecko/WebKit engine has to support Canvas and Canvas text support. To test this you can use [http://hg.mozilla.org/labs/bespin/file/3a3e312f02a0/frontend/tests/canvas/text.html our canvas text test page].
 
It is trivial to have a wrapper shell on bespin.mozilla.com, but we want to go further than that.
 
With Prism, we want to tie into the [https://developer.mozilla.org/en/Prism/Scripting scripting APIs] to give us local file access, clipboard support etc]. Ditto for Adobe AIR.
 
== Actual Roadmap ==
 
Above are the high level features, but what is coming soon? It feels like the next versions will be:
 
* 0.2: Version control release
* 0.3: Collaboration release
355

edits

Navigation menu