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.
Launcher
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.
Wizards
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).
UI
The APDT editor is subclassing PDT editor. The following features will be implemented: code folding, code completion and formation.
PHPAspect
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.
Weaving
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.