Valence roadmap

35 views
Skip to first unread message

Panos Astithas

unread,
Dec 22, 2014, 11:27:37 AM12/22/14
to dev-developer-tools
Hey fellow devtoolers!

I know that eggnog and Christmas trees is all that everyone is thinking
about right now, but I'd like to take a minute before we all indulge in our
holiday festivities, to talk about Valence. And 2015.

2015 will be the year when Valence becomes something more than a promising
experiment. It is the year that will (hopefully) see a version 1.0 that has
feature-parity with Firefox, for features where the Safari/Chrome debugging
protocol aligns well with the Firefox RDP. This is a proposed roadmap of
how we'll get there from where we are now.

There are two main themes in this roadmap: do more and do better, and I
think we should address them in reverse order. Do-things-better contains
what I think we need for cutting a 1.0 release:

Improve existing features (do better)
-------------------------------------

- Get the bundled ios_webkit_debug_proxy working on Windows & Linux
- Implement support for the network panel
- Handle format specifiers in console.log and friends (%s, %c, etc.)
- Display inferred names for functions
- Evaluate expressions in the selected frame when execution is paused
- Support source-mapped CSS
- Break on DOM events
- Fix some longstring-related bugs that we currently work around by using
plain strings
- Fix every XXX and TODO comment in the code
- Implement every todoMethod in the actors

Most of these tasks have a well understood scope, so it is just a "small"
matter of time and available resources. However, another angle on the
do-better theme is not to just fix known problems, but also to make them
stay fixed and provide a reliable experience to the user. These tasks
belong in that category and should probably be done in parallel with the
above:

Improve reliability (do better for realz)
-----------------------------------------

- Deploy some testing infrastructure (probably based on ted's work)
- Port existing Firefox devtools tests and/or write new ones
- Fix stability bugs in Valence

I believe the above lists should be enough for a v1.0, but there are many
more things we could do to provide value to our users. Here are some
obvious features we could add for a v2.0:

Expand our feature set (do more)
--------------------------------

- Support for the performance panel (profiler and timeline)
- Support for the storage panel
- Support for the canvas debugger
- Support for debugging embedded web views on iOS and Android, which would
let us become a sort of unofficial development environment for
Cordova/PhoneGap
- Support Firefox Developer Tools in the pipeline (memory profiler, worker
debugger)

Not all of these tasks have been scoped or had a feasibility assessment,
but there are some indications that we should be able to pull them off with
some effort. These features would make the value proposition of Valence and
(Firefox Developer Edition by extension) really enticing for many more
developers.

But when you have all this, why stop there? The adaptability of Firefox
Developer Tools that Valence affords can take us to a whole new level of
debugging functionality that developers have always dreamed of:

Full-stack debugging (do way more)
----------------------------------

- Support debugging server-side node.js applications, with console,
scratchpad, debugger and profiler
- (Adding async stack support in Firefox Developer Tools would let us
combine server- and client-side stack traces for debugging ecstasy)
- Research the framework ecosystems of languages that compile to JS and can
run on node.js and assess the feasibility of supporting them directly via
source maps
- Implement adapters for JDWP (to debug Java) and Xdebug (to debug PHP)

Only some preliminary research has gone into these tasks, so their
feasibility and effort required is still TBD. Most of the above are further
out from a priority standpoint and some may well be in the pie-in-the-sky
domain, but I think we should at least investigate node.js debugging in
2015. It would be an exciting engineering accomplishment and could provide
a concrete value proposition for Valence and Firefox Developer Edition.

Prioritized shortlist
---------------------

Given all of the above, and taking difficulty and usefulness into account,
I think a reasonable, prioritized, shortlist of Valence tasks for 2015
would be the following:

1. Get the bundled ios_webkit_debug_proxy working on Windows & Linux
2. Display inferred names for functions
3. Implement support for the network panel
4. Fix stability bugs in Valence
5. Deploy some testing infrastructure
6. Port existing Firefox devtools tests and/or write new ones
7. Support debugging server-side node.js applications
8. Support for debugging embedded web views on iOS and Android
9. Handle format specifiers in console.log and friends (%s, %c, etc.)
10. Evaluate expressions in the selected frame when execution is paused
11. Support source-mapped CSS
12. Break on DOM events

Of course, depending on broader organizational priorities, this list may be
too short or not much of a shortlist, for an entire year. Not to mention
that planning that far ahead is usually futile and an exercise in
frustration. Still, this should hopefully provide a useful base for a
discussion about what we want Valence to be and how we want to go about it.

Any and all feedback is welcome (before or while you enjoy your eggnog)!

Cheers,
Panos

Axel Kratel

unread,
Dec 22, 2014, 11:45:27 AM12/22/14
to Panos Astithas, dev-developer-tools
I really would love to see support for Node.JS at some point. Out tools
would get a lot of mileage if we support the Node.JS community. This would
be especially timely to be delivered alongside project agnosticism in
WebIDE.
> _______________________________________________
> dev-developer-tools mailing list
> dev-devel...@lists.mozilla.org
> https://lists.mozilla.org/listinfo/dev-developer-tools
>

Russ Thomas

unread,
Dec 22, 2014, 12:26:48 PM12/22/14
to Axel Kratel, Panos Astithas, dev-developer-tools
The dream list - wow. I'd add one thing: Let me place *any* expression in
the watch window of the debugger. If the expression is invalid in any way,
just print "not available" (or whatever, like Chrome). If the expression
result *would change* based on the selection I have made in "Call Stack",
update the result, *live*. Devtools debugger is the only debugger I know
that wipes my watches based on (I'm guessing) the current stack frame.

If this is addressed in the list, apols.

Thanks!

Hallvord Reiar Michaelsen Steen

unread,
Dec 23, 2014, 2:19:13 AM12/23/14
to dev-developer-tools
Very exciting roadmap indeed. One feature I would love to see, which would
be possible once you have adapters to connect to other browsers, would be
dual debugging capabilities. For example:
- connect devtools to two browser instances, make the tool highlight
differences in the DOM or applied CSS. Be able to filter differences (two
interesting modes might be "high-level DOM structure - w/o inline
elements", "full DOM but ignore property values other than class=''")
- connected to two browser instances, being able to step through script
execution in paralell.
- have a "break when script execution diverges" mode to help pinpoint
exactly when the two engines handle a given script differently.

This is probably a tall order, and perhaps especially tailored to our site
compatibility needs - but it would be awesome to see such things on the
long-term roadmap :)
-Hallvord

Panos Astithas

unread,
Dec 23, 2014, 9:37:37 AM12/23/14
to Russ Thomas, dev-developer-tools
This is a Valence-specific roadmap, so bugs or features about specific
tools are not in there. Your request is about a debugger-specific issue and
seems partially related to bug 876655. I don't know if anyone is planning
to post a debugger roadmap soon, but I would encourage you to comment in
that bug or file a new one if you consistently see watch expressions
disappear (which has never been my experience so far).

Thanks,
Panos

Panos Astithas

unread,
Dec 23, 2014, 9:41:46 AM12/23/14
to Hallvord Reiar Michaelsen Steen, dev-developer-tools
This is a very interesting feature! It's definitely not something that we
could tackle in the near future (got to have something solid first!), but
it seems valuable enough to be considered for a future version. Care to
file an issue for it so it won't get lost in the meantime?

https://github.com/campd/fxdt-adapters/issues/new

Thanks,
Panos

Soledad Penadés

unread,
Jan 5, 2015, 6:42:28 AM1/5/15
to Panos Astithas, dev-developer-tools
Sorry for the delay in picking this thread, but hey, holidays O:-)

As a node.js dev and since we're working on node-firefox, Valence is
something that I'm tracking somewhat closely. But in all honesty the part
that is most interesting to me right now is taking advantage of the testing
infrastructure you develop so we can use that for testing node-firefox too
:-P

You mention Ted has done some work on this already? I would be interested
to get in touch with him and whoever else is working on this so we don't
duplicate efforts. I'll appreciate it forever!

thanks!

Panos Astithas

unread,
Jan 5, 2015, 9:58:33 AM1/5/15
to so...@mozilla.com, dev-developer-tools
Holidays indeed! \o/

Ted is still working on the test infrastructure in bug 1064253. The
progress seems solid, but I don't believe he has had the time to tackle
Valence integration yet.

Cheers,
Panos


On Mon, Jan 5, 2015 at 1:42 PM, Soledad Penadés <spen...@mozilla.com>
wrote:
Reply all
Reply to author
Forward
0 new messages