Sunday, November 11, 2007

What's keeping us busy...

I was hoping to be able to make a first release of APDT before the end of the year. But unfortunately my engineering studies didn't gave me enough time to realize this objective. I have big examinations coming up and I decided to put on hold the project until the end of January, when I'll be performing my next internship.
I'm taking advantage of this break to give you an update about the project.

Summer of love

This project has been created thanks to the Google Summer of Code 2006 and this year I wanted to work on the tool side. Fortunately my proposal to create APDT during the Google Summer of Code 2007 got accepted and I have to say that the benefits of this program are huge.
You're getting paid to work on what's passionate you with a great freedom regarding the way you want to do things and the ideas you want to follow. It brought me a lot of awareness about open source development: laugh at me all you want but I never committed code on a subversion server before this program... ...and never wrote a test...
Thanks to this program my open source involvement goes now beyond the PHPAspect project, notably with the Parse Tree pecl package and small contributions on the PDT project.
The Summer of Code gives you exposure on your project that allows you to connect with people having the same interests about programming an open source development. You have lots and lots of opportunities to talk about what you do, which is, for a student, a priceless way to be trained to talk to people about technology and try to make them excited about it.
The opportunities to give talk about your project are increasing dramatically: this is due to the all barcamp/unconference phenomenon and the number of meetups with programming interests doesn't stop to grow.
If I look back to all the professional and social connections I have made during these event, I can't suggested you enough to go out there and talk about what you do or what makes you excited.
And of course there is the sweetness of summer: you receive a t-shirt acknowledging your successful participation to the program and goodies.
This year we received signed copies of Karl Fogel's book "Producing Open Source Software".

What about love? Well love was definitely involved this summer... ...but I don't blog about it...

APDT: Aspect PHP Developement Tools

The goal of APDT is to deliver a user experience that is consistent with the PHP Development Tools (PDT) when working with PHPAspect projects and resources. This plugin provides an integration layer between the PHPAspect weaver, runtime and Eclipse/PDT extension points.
Thanks to PDT great extensibility, APDT integration goes really smoothly.
PHPAspect Builder

One done part of the plugin is the builder. The PHPAspect Builder is an extension of the PDT Builder. It provides checks of aspect syntax and it also weave each PHP file.


Another done part the plugin, the launch capabilities. It provides a way to launch the weaved application with the PHPAspect runtime.
In the future, users will be able to use standard PHP debugers to debug PHPAspect applications.


APDT provides two wizards. The first is the PHPAspect project creation and the aspect creation.
Of course you have the capability to convert existing PHP projects into PHPAspect projects.
We have plans to add PHPAspect projects examples as wizards (like in AJDT).


The APDT editor is subclassing PDT editor. The following features will be implemented: code folding, code completion and formation.


The current release is very unstable, it was just an experiment or more a proof of concept that we were able to weave PHP code using XSLT.
With APDT, we're taking advantage of this project to rewrite a new version of the weaver from scratch. We're excepting to have a code base much more stable, weaved code human readable and tools to ensure the reliability of generated source code.
AST & Grammar

The new grammar of APDT is extending PDT grammar and AST. It's very handy to have a base supported by the PDT project and because we serializing PHP source code to XML format, I use the XStream library to get XML AST and transform them back into Java AST.

You'll noticed the difference with the current release which need the installation of a pecl plugin that was source of issues for a lot of users. We're dropping the use of this extension.

The weaved code in the current release is really dirty and not only we came with a we weaving process that will make the code human readable and testable. I have to say that I'm really excited about this.
Runtime Library

Because PHPAspect Runtime API is widely inspired from AspectJ and because we have to adapt to the changes of the PHP language, we're developing the Runtime Library from an EMF model. Acceleo is used to generate PHP code.
I hope this model can be used by people who would to implement AOP for other dynamic languages (who said Ruby ?).
There is an highly educative value for me since I'm learning about MDA and I start to realize the true power of this technology.

Documentation & Testing

The documentation isn't updated yet but it will be for the next release.
So far there is no testing framework for the project but we plan to do a lot about test.

That's it for now, I keep you in touch in the next few months ;-)

Of course the development is 100% open so feel free to checkout the development version of the project to play with it. There is a googlegroups created if you have any questions. I uploaded screenshots of the current state of APDT.