DevTools/Features/Workspaces
Status
Scratchpad | |
Stage | Complete |
Status | Complete |
Release target | Firefox 6 |
Health | OK |
Status note | SDR: C SIR: N |
{{#set:Feature name=Scratchpad
|Feature stage=Complete |Feature status=Complete |Feature version=Firefox 6 |Feature health=OK |Feature status note=SDR: C SIR: N }}
Team
Product manager | Kevin Dangoor |
Directly Responsible Individual | Kevin Dangoor |
Lead engineer | Mihai Sucan (msucan), Rob Campbell |
Security lead | Curtis Koenig |
Privacy lead | ` |
Localization lead | ` |
Accessibility lead | ` |
QA lead | Alex Lakatos (AlexLakatos) |
UX lead | ` |
Product marketing lead | ` |
Operations lead | ` |
Additional members | ` |
{{#set:Feature product manager=Kevin Dangoor
|Feature feature manager=Kevin Dangoor |Feature lead engineer=Mihai Sucan (msucan), Rob Campbell |Feature security lead=Curtis Koenig |Feature privacy lead=` |Feature localization lead=` |Feature accessibility lead=` |Feature qa lead=Alex Lakatos (AlexLakatos) |Feature ux lead=` |Feature product marketing lead=` |Feature operations lead=` |Feature additional members=` }}
Open issues/risks
`
Stage 1: Definition
1. Feature overview
After input from the localizers, this feature has been renamed "Scratchpad".
The Workspace concept began with Smalltalk environments and has been ported to a Firefox add-on. We believe that Workspaces provide a more pleasant way to experiment with code than the current tools which mimic a command line environment.
The prototype will allow us to get experience with this different work style and also give other people a chance to comment on it.
The basic idea behind creating a Workspace is that the Workspace gives you a convenient mechanism for running and rerunning snippets of code. If you're writing a new function, for example, you can keep redefining that function until you have one that works correctly. Then, you can just copy and paste it into your editor to become a part of your application.
Another example use would be to have a collection of utility functions that you use in debugging your application. Those functions aren't really a part of the application, and you don't want to deliver them to your users. You can keep them in a file that you load into the workspace whenever you're working on that particular app.
Most often, the files you save from a workspace are not complete script files and the snippets of code in a workspace may not run in all contexts (they may depend on variables that are defined on the page for which the workspace was created).
2. Users & use cases
Handy snippets: When working on an application, it's not uncommon to have a collection of common bits of code that you run against the page to test things. The Workspaces feature lets you load and save JavaScript files, which is a convenient way to keep track of these snippets.
Working on new code: You can use Workspaces to work on a new function. Write a little code, execute it and repeat. Once it works, you can copy/paste that code into your main program files.
Basic Use Cases
- Run JavaScript against your web content
- Run JavaScript against your chrome content
- Develop a new feature of your already online webapp without having to close it down for maintenance.
- Test a fix for your addon without having to repackage and re-install it.
- Inspect the outcome of a code snippet without having to actually run it against the page.
- Better comment your code using Display, without running the code against your content.
3. Dependencies
`
4. Requirements
- Convert the add-on into a browser feature with tests
- Add a pref to remove the content/chrome switch from view
Aurora backout strategy: there is a pref to turn off the feature (devtools.workspace.enabled)
Non-goals
For this initial step, we're leaving off some obvious features:
- a better editor (Ace)
- external editor integration of any sort
- autocompletion
Stage 2: Design
5. Functional specification
`
6. User experience design
`
Stage 3: Planning
7. Implementation plan
`
8. Reviews
Security review
Date Discussion occurred: 2011.04.14 Security Concerns:
- Feature could be used run arbitrary code
Responses to concerns:
- Interaction is one way and code only runs in a sandbox
- Sandbox inherits from content window
- Chrome settings preferences are off by default
- No collaboration built-in, scripts have to be shared out of band
- Scripts can not autorun
- No built-in interaction with web console
Outstanding issue / Next steps:
- None at this time
Privacy review
`
Localization review
`
Accessibility
`
Quality Assurance review
Operations review
`
Stage 4: Development
9. Implementation
Stage 5: Release
10. Landing criteria
` {{#set:Feature open issues and risks=` |Feature overview=After input from the localizers, this feature has been renamed "Scratchpad".
The Workspace concept began with Smalltalk environments and has been ported to a Firefox add-on. We believe that Workspaces provide a more pleasant way to experiment with code than the current tools which mimic a command line environment.
The prototype will allow us to get experience with this different work style and also give other people a chance to comment on it.
The basic idea behind creating a Workspace is that the Workspace gives you a convenient mechanism for running and rerunning snippets of code. If you're writing a new function, for example, you can keep redefining that function until you have one that works correctly. Then, you can just copy and paste it into your editor to become a part of your application.
Another example use would be to have a collection of utility functions that you use in debugging your application. Those functions aren't really a part of the application, and you don't want to deliver them to your users. You can keep them in a file that you load into the workspace whenever you're working on that particular app.
Most often, the files you save from a workspace are not complete script files and the snippets of code in a workspace may not run in all contexts (they may depend on variables that are defined on the page for which the workspace was created). |Feature users and use cases=Handy snippets: When working on an application, it's not uncommon to have a collection of common bits of code that you run against the page to test things. The Workspaces feature lets you load and save JavaScript files, which is a convenient way to keep track of these snippets.
Working on new code: You can use Workspaces to work on a new function. Write a little code, execute it and repeat. Once it works, you can copy/paste that code into your main program files.
Basic Use Cases
- Run JavaScript against your web content
- Run JavaScript against your chrome content
- Develop a new feature of your already online webapp without having to close it down for maintenance.
- Test a fix for your addon without having to repackage and re-install it.
- Inspect the outcome of a code snippet without having to actually run it against the page.
- Better comment your code using Display, without running the code against your content.
|Feature dependencies=` |Feature requirements=*Convert the add-on into a browser feature with tests
- Add a pref to remove the content/chrome switch from view
Aurora backout strategy: there is a pref to turn off the feature (devtools.workspace.enabled) |Feature non-goals=For this initial step, we're leaving off some obvious features:
- a better editor (Ace)
- external editor integration of any sort
- autocompletion
|Feature functional spec=` |Feature ux design=` |Feature implementation plan=` |Feature security review=Date Discussion occurred: 2011.04.14 Security Concerns:
- Feature could be used run arbitrary code
Responses to concerns:
- Interaction is one way and code only runs in a sandbox
- Sandbox inherits from content window
- Chrome settings preferences are off by default
- No collaboration built-in, scripts have to be shared out of band
- Scripts can not autorun
- No built-in interaction with web console
Outstanding issue / Next steps:
- None at this time
|Feature privacy review=` |Feature localization review=` |Feature accessibility review=` |Feature qa review=* Test Plan |Feature operations review=` |Feature implementation notes=* Workspaces Status |Feature landing criteria=` }}
Feature details
Priority | P1 |
Rank | 999 |
Theme / Goal | ` |
Roadmap | Developer Tools |
Secondary roadmap | ` |
Feature list | Desktop |
Project | ` |
Engineering team | DevTools |
{{#set:Feature priority=P1
|Feature rank=999 |Feature theme=` |Feature roadmap=Developer Tools |Feature secondary roadmap=` |Feature list=Desktop |Feature project=` |Feature engineering team=DevTools }}
Team status notes
status | notes | |
Products | ` | ` |
Engineering | ` | ` |
Security | sec-review-complete | ` |
Privacy | priv-review-unnecessary | ` |
Localization | ` | ` |
Accessibility | ` | ` |
Quality assurance | Ready to land in Firefox 6 | ` |
User experience | ` | ` |
Product marketing | ` | ` |
Operations | ` | ` |
{{#set:Feature products status=`
|Feature products notes=` |Feature engineering status=` |Feature engineering notes=` |Feature security status=sec-review-complete |Feature security health=OK |Feature security notes=` |Feature privacy status=priv-review-unnecessary |Feature privacy notes=` |Feature localization status=` |Feature localization notes=` |Feature accessibility status=` |Feature accessibility notes=` |Feature qa status=Ready to land in Firefox 6 |Feature qa notes=` |Feature ux status=` |Feature ux notes=` |Feature product marketing status=` |Feature product marketing notes=` |Feature operations status=` |Feature operations notes=` }}