I am happy to hear this. XDEBUG definitely has its use-cases but for
many tasks it is too heavy, restrictive or cumbersome to use.
The Companion will include a fully-featured interactive XDEBUG client in
future which will integrate tightly with FirePHP so you can use the two
tools together with the same UI during the same session.
> Although I have expressed that initial setup of this tool is a bit
> involved and there may be an issue with Developer Companion refreshing
> log output from the server, I am incredibly impressed by the quality
> of the design approach for this app. The client tools will continue
> to improve and is at a strong starting point for developer adoption.
> In fact, Christoph Dorn, the developer of this library, has made
> himself accessible and has proactively engaged with me regarding my
> experience. This is one thing I truly appreciate as a developer. The
> online support is already rich with documentation, which I know first
> hand isn't easy to accomplish. Christoph indicated a more simplified
> setup process will be released in a few months to help make this
> easier for less experienced developers to adopt. However the 30 minute
> video is a great alternative to follow in the meantime.
The design I have chosen aims to standardize a chained console logging
API across programming languages. Now that PHP is supported I will be
bringing the same API online for client and server-side JavaScript.
After that we can look at ruby, python and other languages (scripting
and compiled).
The Companion tool (on the client) is language agnostic and designed to
work on top of open protocols and interfaces. As these evolve I
anticipate alternative clients and IDE plugins that support the same
intelligence protocols and a subset of the UIs. To ensure this is
realistic 80+% of the client code is MIT licensed and will be documented
for embedding into any JavaScript environment. This will allow easy
integration into most IDEs.
The client has evolved internally over the past year and is due for a
major refactoring. I have started this process by pulling together all
my research and prototypes into a state-of-the-art CommonJS based
JavaScript module loader that will provide the infrastructure for a
client tool composed of many hundreds of code packages (some shipped
with the release, others downloaded dynamically when needed). You can
find the loader here:
https://github.com/pinf/loader-js
I expect the refactoring to be complete within the next couple of months
with the following changes:
- Firefox 4 support (required)
- Use of the PINF JS Loader on top of Jetpack [1]
- Use of ExtJS 4 for the UI [2]
- Use of the Ajax.org ACE editor [3]
- Reduction in release file size
- Much faster UI loading
- More efficient internal data handling
- More extensive project explorer features
- Isolated live remote code editing for production applications
- Relaunch of FirePHP and DeveloperCompanion sites & docs
[1] - https://github.com/pinf/loader-js/tree/master/demos/JetpackExtension
[2] - http://www.sencha.com/products/extjs4-preview/
[3] - http://ace.ajax.org/
Once this work is done I will be shifting focus to new features in
various areas.
> I'm also pleased to see the provisions made to restrict access to
> logging information to a specified set of IP Addresses and to specific
> clients with approved authorization keys. The configuration policies
> are straight forward, but is very manual and format sensitive.
The configuration will be automated via the Companion Explorer in
future. The goal is to remove the need for any manual configuration for
all common use-cases. Everything needs to work out of the box.
> When evaluating this tool, I recommend doing more than just logging
> simple messages. That would be like evaluating how well iPhone sends
> text messages. Yet there is so much more to review that goes beyond
> the basic tool. In the case of FirePHP, I'm quite impressed with the
> following features:
This is a good point. My focus has been on providing a complete base
featureset that we can build on top of. Now that this is mostly complete
we can spend time on abstracting the API and providing domain-specific
APIs for various design patterns and frameworks/components. The library
has a powerful plugin API that can be used to accomplish this. I hope
the community will pick up this responsibility in time so we have
components that work out of the box for all major frameworks. I will be
working on one reference implementation for Zend Framework 2 later this
year that showcases all integration points and what can be done with the
system overall.
Thanks for the kind words and feedback. It's nice to hear someone else
pick up on design choices and the thinking behind features that I
arrived at after much experimentation and refining.
Christoph
Thanks for the encouragement.
Seeing how quickly FirePHP gained popularity after I completed the Zend
Framework component I realized the potential of this approach to assist
debugging and development for any application/frameworks/libraries. The
challenge was to come up with a design and API that is language agnostic
and flexible enough to accommodate various requirements.
My focus is PHP and JavaScript right now to get the system running end
to end after which I will be actively supporting server library
implementations for various languages and platforms you mentioned.
> I can only imagine what you have in mind with the Ajax.org ACE Editor.
> Perhaps live code execution / debugging via Companion? Do you have any
Right. That will be the first feature after I complete the refactoring.
You will be able to connect to any application, even on production
servers, create a live editing session to make changes and when done
take them live on the site or commit a diff to git etc... This way you
don't need a local dev environment. This will work for most sites that
run on single servers. For larger systems there will be more advanced
integration points to support various workflows.
> other community contributors helping you with this now? Although I'm
I have various offers of assistance but nobody helping yet (other than
bug reports and testing). It is still a few months too early to get
involved in any of the core code. Part of the refactoring will involve
rebooting the open source core projects to make it easier to contribute.
> knee deep in getting a release out for a project I'm working on now, I
> would not mind evangelizing and perhaps jumping in on some development
> to help out.
Thanks for your offer. At this time evangelizing would probably be the
most effective in the form of tutorials and screencasts. Also taking the
core API and documenting various abstractions that are useful when
integrating into a larger application. This is an area I have not
explored much.
I think currently new users are overwhelmed as the docs are quite
technical and there are no real examples of how FirePHP can be used to
solve real problems.
As soon as I can generate a sufficient revenue stream I will be hiring
developers to expand on every aspect. Any assistance to get to this
point would be greatly appreciated as I can only do so much myself.
Christoph
If you like a challenge you could try and fix this:
http://groups.google.com/group/ace-internals/msg/f2eeb19e52824747
It would allow me to focus in a different area.
Christoph