Where code meets community
ALPHA

Overview

It is important to have a rough idea of how FirePHP 1.0 works to leverage all features FirePHP has to offer.

The discussion below assumes FirePHP is included via the configuration-based approaches (via the FirePHP/* files). See Install.

The most important aspect to realize is that FirePHP sits between the browser page and the PHP application on the server. More specifically:

  • On the server: The FirePHP Server Library is included as the first code to run for EVERY request to the application. The FirePHP library wraps the request allowing the application to use the Insight API to record internal data while executing. When the application has finished executing FirePHP injects some data into the HTTP response headers to identify the specific request.
  • On the client: The FirePHP compatible client parses the HTTP response headers and makes a secondary request to the /<ServerScript.php> on the server which FirePHP intercepts and responds to. Once all data arrives at the client it is directed to the appropriate targets.

Any client is FirePHP compatible if it implements the Insight Intelligence System.

Request Flow

The Push Server is not yet implemented.

Request Flow Overview

  1. The browser issues a request.
    • The Insight system on the client creates a context for the request and injects an identifier into the HTTP request headers.
    • The request is intercepted by Insight system on the server which creates a corresponding context for the request.
  2. The application responds to the request.
    • The Application uses the Insight API to record internal data while executing.
    • The Insight system on the server pushes recorded data to the client via the Push Server if available. (Not yet implemented)
  3. The response goes back to the client.
    • The Insight system on the server finalizes the request and writes a pointer message to the HTTP response headers. The pointer message includes a full URL to /<ServerScript.php>.
    • The Insight system on the client parses the pointer message to get the URL needed to fetch the internal data with a second request.
  4. The browser displays the application response.
  5. The internal request data is fetched (if the Push Server was not used).
    • The Insight system on the client makes a secondary request to fetch the internal request data from the server.
    • The Insight system on the server (responding via /<ServerScript.php>) returns the internal request data and stops executing meaning /<ServerScript.php> can point to any URL (that includes FirePHP) of the application.
    • The Insight system on the client parses the returned internal request data and directs it to the appropriate targets.

Targets

There are two primary targets involved when recording internal data. The targets control how data is aggregated and where it is displayed.

  • page - The page target is intended to aggregate data in the context of the Web Page being displayed by the browser. Data logged to the page-based console (FirePHP::to('page')->console()) will be directed to the Firebug Console as Firebug is a tool that acts in the context of a Web Page comprising of one page request and multiple resource requests.

  • request - The request target is intended to aggregate data in the context of One Request only. This may be the page request or subsequent resource and action requests. Data logged to the request-based console (FirePHP::to('request')->console()) will be loaded into the DeveloperCompanion Request Inspector when a request is inspected.

There are other targets and more will be added in future. See Insight API.

Terminology

TODO

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.