Where code meets community
ALPHA

Welcome to the new official home of the FirePHP documentation.

Some external links to FirePHP information are still included as not everything has been consolidated here yet.

Status

FirePHP 1.0 is currently in public BETA and will go STABLE very soon. Your feedback is important to get us there.

FirePHP 1.0

Welcome to FirePHP 1.0, the result of 3+ years of learning and experimenting on how to build a PHP development and debugging solution that can save you some real time and frustration.

FirePHP is an advanced logging system that can display PHP variables in the browser as an application is navigated. All communication is out of band to the application meaning that the logging data will not interfere with the normal functioning of the application.

Traditionally, if you are not using an interactive debugger, you would typically debug your application with:

var_dump($variable);
// or
print_r($variable);

The problem with this approach is that:

  • The debug output is intermingled with your response data leading to broken page display and ajax responses
  • It is difficult to distinguish between many printed variables
  • It is impossible to determine where a specific debug message was triggered
  • The debug statements must be removed again when done
  • Larger object graphs (especially cyclical ones) cannot be printed or are too large too navigate intelligently

Previous attempts to solve these shortcomings have resulted in:

  • Interactive debuggers
  • PHP libraries that make printed variables more easy to navigate on the page
  • PHP libraries that log variables to files for later inspection

Each of these solutions have their place but overall the shortcomings make for a less than ideal day-to-day development and debugging experience for the average developer in many/most cases.

The original goal of FirePHP (back in 2007) was to provide another approach by sending debug data in the response headers (no interference with response data) and display this nicely in the Firebug Console. The approach seems to solve some real problems and is getting some good attention as FirePHP has become and continues to become more popular.

The FirePHP 1.0 system is the next incarnation of this approach and built from the groud up based on the latest research and technology to provide the foundation for a new kind of development and debugging approach that combines the best of:

  • Error Reporting - PHP native and used to detect syntax errors and API usage violations.
  • Print Statements - Deliberate var_dump() or print() statements by developer used to track execution flow and variables.
  • Logging - Deliberate logging to a file or other facility used to track events, execution flow and variables.
  • Interactive Debugging - PHP extension used by developer to directly interact with a running script to track live variable state.

FirePHP integration with Xdebug is planned.

With FirePHP 1.0, variables are logged using the Insight API:

$console = FirePHP::to('page')->console();
$console->label('The Label')->log('Hello World');
$console->label('A Variable')->log($_GET);

The traditional FirePHP API is still supported.

And displayed in the Firebug Console or the DeveloperCompanion Request Inspector respectively:

Firebug Console Image DeveloperCompanion Request Inspector Image

FirePHP 1.0 is all about getting all types of meta and debug data from the server/application to the client in an intelligent way. Now that variable logging is pretty much complete further development will be adding support for displaying server log files, PHP configuration information, application source files and much more in the client.

We welcome your interest in FirePHP and hope that it will save you time and frustration.

Next Step: Install

Homepage: Sourcemint.com

Status

Sourcemint is incomplete ALPHA technology and continuously evolving in sync with underlying and related projects. Production ready aspects will be documented and made available in time. Your Feedback is welcome and appreciated!

Who

Sourcemint is one of the results of intense focus by Christoph Dorn over the past several years and continuous exploration throughout Christoph's interest in software development over the past 15+ years.

Sourcemint is the love child of one person guided by the voices of passionate developers at the top of their game who are leading the industry into a new era of software development.

What

Sourcemint is an integral part of Christoph's work intended to realize his dream of one global toolchain under which components may be arbitrarily combined into maintainable mission critical systems by providing an all-encompassing and organized package repository from which consistent and autonomic systems may be built.

Sourcemint provides an automated software building and integration service as well as an intelligent software delivery network to distribute built software to all deployed systems and Internet users.

This means an arbitrary (code, configuration, network, ...) change may be made to a software system which can then be automatically built, tested, distributed and deployed. Every change constitutes a completely new system made possible by the fact that changes, any changes, are cheap and fully tested in every way before going live.

Just imagine what this means in your daily work.

Why

Automated software builds, continuous integration processes, streamlined issue trackers, community supported software, source control, online collaboration and automated cloud deployment have wet our appetite but hardly scratch the surface of what it actually means to have a completely automated production cycle from idea to delivery. The full potential is only realized once these separate solutions addressing different areas work together harmoniously.

What has been missing is new ways of looking at how to build software.

How

Christoph's work provides a new way to build software that is not necessarily new in the sense of ideas or technology but rather arrangement and timing. Christoph has through exploration and experimentation distilled current cutting edge technology, knowledge and wisdom into a toolchain platform called PINF available open source under the MIT license to realize a new breed of software.

Imagine software and systems that just work and are a pleasure to maintain.

Sourcemint is built entirely on PINF, as is all of Christoph's work, and can be used by any developer to tap into the power of the PINF approach to build open source or commercial libraries, frameworks, applications, systems and services.

Christoph's hope is that PINF and related projects will provide a foundation for developers to cooperate more widely and experiment with new ideas by eliminating some of the major constraints imposed by traditional toolchains. Traditional toolchains create systems that typically rot because they are practically impossible to refactor. We need a toolchain such as PINF which has refactorability designed into its core.

Let's create software that breathes with life and is in large part self-sustaining!

You

Join Christoph in his mission to help you, the developer, and help yourself by broadly applying the tools and approaches you know work to all of your work. Lean on PINF, your mind is begging you. Learn it, teach others, and let your inspiration soar!

Follow Sourcemint and PINF on twitter to watch for news of cutting-edge tools, tutorials and services coming online. You can also follow Christoph's work directly.