[wp-hackers] WP Roadmap Project

Chris gaarai at gaarai.com
Thu Oct 30 13:32:39 GMT 2008

Once again Viper, you have great information. Thus one of the many 
reasons why I always read messages you send on the list.

I suppose I haven't made a very good case for what I'm working on right 
now; you're right about that. I'll see if I can't justify what I'm doing.

If you want to see the very rough front-end that I've put together, you 
can find it at (http://new.gaarai.com/roadmap/). I've only generated a 
few page views on 2.6.3 as of now, I'm not displaying any backtrace 
information, some of the stored data needs a lot of clean up, and the 
presentation leaves a lot to be desired, but it should give you a taste 
of what I'm going for. Also, some of the line numbers are going to be 
slightly off. I'm getting that fixed up currently.

Currently, I intend to offer the following with WP Roadmap:

    * A full list of all page includes (include, require, etc) combined
      with other relevant function calls in their order of execution.
    * Provide detailed information at each roadmap entry. This
      information includes the source file containing the call, the line
      number, the arguments passed to the function, and a full backtrace
      on each call.
    * Be able to select an entry in the roadmap to pull up the full
      source-code listing that automatically scrolls down to the
      specific line of code and highlights it. This would be invaluable
      to quickly figure out how the WP core coding team did it.
    * Provide this information on any WordPress version with a large
      selection of specific page views. The execution stack changes from
      version to version and page view to page view. Providing
      information about the specific differences of the execution stack
      can quickly provide needed information on why a certain hook
      doesn't work properly on a specific page view or version.
    * All the core customizations are done via a script and not by hand.
      I also intend to write a script that can automate all the page
      views. This means that I will be able to install a newly-released
      version, add the roadmap code, and traverse all the page views to
      generate the data moments after the new version is released. In
      other words, this would be a very reliable source of information
      about any potential changes in new releases.

Here are some other ideas of what I would like to create if I can and 
have time to:

    * A backtrace source view. This would be similar to the source view
      mentioned before except that it would pull out complete functions
      from the source of each backtrace step in order to give a quick
      code view from start to finish for specific points of execution.
      Each point along the backtrace execution path will be highlighted
      for quickly tracking the calls.
    * I mentioned before that I would like to create a generated tree
      image of the calls. I think producing a number of different
      quick-reference cards from this data could be beneficial for many
    * A version compare ability. This would allow you to quickly see the
      differences of the execution stacks between two versions. Out of
      all the ideas that I have, I think that this will be the most
      difficult to implement. Anyone have experience with generating
      difference sets?

I know that not all of this information will be useful or relevant to 
every programmer. I do think that all the information will have value to 
someone however. One of my frustrations with the documentation that 
currently exists is that it is typically either inaccurate or 
insufficient for my specific needs. This results in me going to the 
command line and doing a series of grep queries to find what files I 
need to look through and then wading through a sea of code. If I could 
have a tool that would give me quick access to detailed information from 
the surface level down to the deep internals, I wouldn't have to spend 
so much time searching through code.

I wouldn't be able to generate a reliable execution stack, backtraces, 
or version-specific and page-specific data without modifying the core or 
by using a plugin. I'm not sure if I've provided sufficient reason for 
you to think that this tool should exist. I know that I will find this 
tool very valuable, and as such, I'm sure that others will find value in 
it as well.

- Chris Jean

Viper007Bond wrote:
> I'm pretty sure there aren't any hooks before plugins are loaded. As you
> said, what would be the point of having them there if nothing could make use
> of them?
> As for includes/requires, PHP has you covered -- no core editing required:
> http://www.php.net/manual/en/function.get-included-files.php
> You still haven't offered a valid reason of why this couldn't just be a
> couple line plugin. :P

More information about the wp-hackers mailing list