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.
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.
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 ;-)
The Google Summer Code deadline is in two weeks, and I wanted to give you some update about the APDT project.
The plugin is working with the PDT Project.
I've posted some early screenshots here.
I'm currently working on the incremental builder that use the PHPAspect parser. This parser extends the PHP 5 one written for PDT.
This plugin will be released with a new version of the PHPAspect weaver. We designed a new weaving process much more simpler in order to make the tool more stable and to generated a weaved source human readable.
After few months of idle time, the phpAspect project is back on track!
The first news concerns the windows developers, the windows build of PHP_Parse_Tree is finally available (click here to download)!
There is some bugs that needs to be fixed and the cvs needs to be updated, I'm working on it.
I'm really looking forward from this extension and phpAspect.
The second news is that my proposal "phpAspect eclipse plugin" for the Google Summer of Code 2007 under the mentoring of Gilles Vanwormhoudt has been accepted!
The aim of this project is to help php developers to uses aspects very easily with an eclipse environment capable to understand the phpAspect syntax and to embed phpAspect itself.
I particulary enjoyed FOSDEM where I met a lot of GSoCers and the lovely Leslie Hawthorn from Google OSOP.
Since last week, students from all over the world can apply for the Google Summer of Code 2007.
I'm of course drafting a little something related to phpAspect for this occasion ;-)
This summer I will perform an internship at IBM Hursley in UK under the mentoring of Alan Ogilvie from IBM et Gilles Vanwormhoudt from school. It just gonna be great :o)
I heard that I will have plenty of occasions at London to practice my new hobbie.
I'm very thankful to the Google Summer of Code and to the PHP community for making this project possible. When I first started this project, I only wanted to create a prototype to experiment AOP for PHP using XSLT. However, the more I interacted with member of the PHP community and GSoCers, the more excited I became about creating a community around phpAspect to support the project and making it widely usable.
Through this perspective, my focus is currently to perform refactoring on the source code so it can be easier to understand by other developers in addition to solving deployment problems.