The idea is to encourage contributors to submit classes that do new things, as opposed to classes that are meant for purposes for which there are already other classes in the site.
Every author nominated to the innovation award may be entitled to prizes provided by sponsors. Other than that, each author accumulates points that are accounted at the end of each year.
The author that accumulates more points is declared the winner of the year. The winner of 2011 was Richard Keizer from the Netherlands.
As mentioned above, each nominated author may be entitled to a prize provided by sponsors. The sponsors are well known companies that dedicate to the PHP market. They provide interesting prizes for PHP developers.
These sponsors have been very important to help encouraging more and more developers to participate in this award. Some of them have been sponsoring the award since the beginning in 2004.
Therefore they are being listed here, so you know which companies are sponsoring the award and you can check out the nice prizes they are giving away.
This award is such a nice initiative that the list of sponsors keeps growing. Just recently it got two new sponsors that are also helping to make this initiative more compelling for the participating authors.
The new sponsors are PHP Solutions that is giving away a subscription of their PHP magazine, and CodeLobster Software that is giving away a license of the CodeLobster Professional IDE.
Besides the special prizes that the award winner has accumulated during the year, he is also entitled to a special prize from the PHP Classes site, which is the plush toy with the PHP elephant. It is a rare item that many PHP developers would like to have but they breed very slowly.
In the past years the PHP elephant plush toy used to be produced by a company that does not seem to be able to deliver them anymore for reasons they did not disclose.
But the award winner must get the PHP elephant prize that he is entitled. Therefore, starting this year, the PHP Classes site is producing our own PHP elephants. It is no longer based on the nice PHP elePHPant designed by Vincent Pointier. It is rather based on the new elephant created by Ifat Amit of Intergraphics Designs, the winner of the Web Site Design Award.
At the time of the writing of this article, the new elephant was sent out for production and we are eagerly waiting for the first test prototype. But basically it will look like this picture. If we get the prototype as soon as we expect, this picture will be updated with a photo of the prototype.
But at least Richard was able to provide nice insights by e-mail.
PC: PHP Classes (Manuel Lemos)
RK: Richard Keizer
PC: Richard, first congratulations for being the PHP Programming Innovation Award winner of 2011.
RK: Hello Manuel, thank you very much, it's an honor to be nominated!
PC: It would be nice if you could tell us a bit about yourself, where do you live, what are you working on and how you have been involved in the PHP development and its community.
RK: First, my name is Richard Keizer, I'm 37 years old and I live in Hilversum, the Netherlands.
I've had a deep interest in computer sciences since I was a little boy, and started programming at a very early age. I moved from CPM to DOS to Windows to OSX, until several years ago I thought it would be a good idea to get some experience with platform independent programming on the Web.
At the moment I am working on an Internet startup that's working with social media.
PC: Did your participation in the PHP Classes site and in particular in the Innovation Award helped you somehow to get better opportunities in your professional life?
RK: I think the site and the nomination are both good ways to show what PHP can do, and what an author is able to with PHP.
Especially the nomination is very helpful for me to get in contact with (inter)national employers, because of the portfolio on PHP Classes.
PC: You have won the 2011 Innovation Award edition with 5 very nice packages. Can you please give an overview of what those classes do and what motivated you to develop them?
This has been a fascination for me since I started developing for the web some years ago.
Over the past years I tried several approaches to implement a solution for a file uploader able to show upload progress without needing CGI, Flash or other non-PHP solutions.
I have failed because of several limitations, until last year. For me this is a way to say: It can be done, while everybody else said it couldn't.
This autoloader has it's roots at a project I worked on, but would have become obsolete after PHP introduced namespaces if I didn't refactor it in what it is today.
For me this is a class I use in all my projects, because of it's flexibility. For me this class makes it very easy lazy-loading classes without having to place them in predefined directories and/or files.
This class is part of a project in which I needed to be able to parse complex SQL queries.
PHP is lacking a good parser generator like ANTLR or Yacc and I didn't feel like porting such complex code to PHP, it was just not in the scope of the project, but still I wanted a methodology that was pragmatic, small and fast.
This resulted in the Pragmatic Parser, a class that is able to generate complex parse trees from a language and a formal grammar in very few code lines.
This was written in I think 3 hours after I was surfing the web and bumped into a far too complex way to decode a swype stream. It resulted in a nice KISS-approach way to decode swype encoded strings and a graphical frontend to show it off.
It shows that with very few code lines it is able to get good results.
This, again, is an example of 'it can be done' where others have said 'it's not possible'.
I was looking for a way to abstract elements in a DOM-tree with normal classes without implementing stuff like DI-containers etc. I wanted just the 'normal' thing.
It seemed that there was an issue extending the DOMElement class, because for some reason an extended DOMElement degraded to a DOMElement immediately.
I figured out that this unwanted behavior happened because of a problem with the reference counting mechanism for the objects. The solution was quite easy: I made an extra self-reference in the extend so the object wouldn't degrade.
I use this class a lot when handling XML documents.
PC: So far you submitted 7 packages to the PHP Classes site, 5 of which were nominated for being innovative and 1 was even the winner of their month.
That is an impressive record especially given that you have come to the site only in the recent years.
Did you intentionally submitted those packages because you enjoy participating in the innovation award or it was a coincidence?
RK: Of course I enjoy participating, that's where it all starts: sharing your thoughts.
On the other hand: I like to have a good competition and therefore I have been aiming for 1st place with every package.
This however was not easy, because it seems very hard to predict what the community is waiting for.
PC: Besides your classes, can you name a few of other authors also nominated for the Innovation Award in 2011 that you were most impressed with?
This is a very well written class! I haven't seen it implemented in PHP before. Certainly very useful when rendering tree-based structures.
I have an obsession for recursive and/or stack-based iteration, so this will become very useful in expressing resulting trees. For me this was number 1 for that month to be frank.
This class does what I like most: data-abstraction in a truly abstract way. I think APIQL and Pragmatic Parser would work well together.
PC: What you would recommend to other authors interested to get this level of recognition and opportunities and being successfully nominated for the innovation award so many times like your did?
RK: Difficult question. Being nominated is not just about being innovative. As I said before, you should examine the needs of the community because those are the people that are going to vote or not.
Secondly I think quality is very important: people are not just looking at the output of your code, they are in fact looking for a usable piece of code.
Think about your design: what's the scope of my class? Is it doing what is should do? or is it just a bunch of merged functions operation on several tasks? Can I rewrite my 20 lines of code to 5 while others are still able to understand what it says?
PC: Finally, besides the Innovation Award, can you mention one good thing about the PHP Classes site, and another thing that is not so good and you would like to see being implemented or improved?
RK: First, PHP Classes is a very good international initiative supporting thousands of developers. I know how important it is to get ideas about implementations by looking at other peoples code. This is exactly what PHP Classes does: building a solid repository of code of all levels for those willing to learn.
I think however it would be a big win for the site to make it possible to join a development group. So instead of single authors we could think about teams submitting code.
PC: Interesting, but how exactly that would work?
RK: It could work like this:
- Someone contributes a package to the site.
- Another person thinks it's interesting to also contribute to the same package and asks to form a team or join an existing team.
- In the site stats the team is mentioned instead of the original author, of course team members can be made visible.
- Using an external code-repo like GIT would be very handy for committing and user role management, the PHP Classes site would take care of rating and stats.
PC: Well actually, I think you can already make it work like this. During 2011 the PHP Classes site implemented a long standing feature requested by many developers, which is the ability to import packages from version control repositories such as those based on Git, SubVersion or CVS.
So now, developers are able to quickly import or update packages with many files from version control repositories.
So far over 2500 files were imported into 59 packages from version control repositories of many remote sites, some private, but others are public like SourceForge, Google Code, GitHub, etc.. 38 were from Git repositories, 14 from SubVersion and 7 from CVS.
Some authors added links in the related links section of theit package pages to the respective remote repository sites, inviting other developers to to join them in the development. This seems to address your suggestion.
RK: Manuel, I also think closing down the forum would be a good idea, I think you should focus on the repository.
PC: Really? Which forum do you mean?
RK: I mean the 'PHP specialists forum'. I think there are better places to get answers for PHP questions, I also think there are too few 'specialists' answering questions.
Personally I think your site does a very good job in what it's best at: being a repository, rating packages etc. Giving support on a package is what I think is within scope.
Asking questions about general PHP issues is out-of-scope. (unless a lot of effort is put in user-specialist conversion).
PC: Oh, I see. I think you are right. The original intention of the PHP specialists forum was to lead more consulting customers to developers that have great capabilities, like those that are nominated to the innovation award.
It turns out that the best way to provide such kind of consulting is not answering questions about the potential customers in public because more than often the problems cannot be commented in public.
So, the PHP Specialists forum is awaiting for a new opportunity to be redesigned. As a matter of fact this is something that was planned last year and it is expected to finally happen this year.
In 2011 several contributors were asked to vote on several features they would like to see implemented in the site to make their participation in the site more fun and rewarding.
Most of the proposed features are already implemented. One of the remaining features is the integration of the login system with Facebook and other sites. That is meant to make it easier for the users to login without so much registration bureaucracy. This will be made available in the next days.
The other major feature remaining to be done is to have a unified points and privileges systems that will encourage more users to participate in some positive way and be rewarded somehow for their participation.
Adding points and privileges to users that participate in forums much like many other question and answer sites that you see out there is just one of many things that are being planned.
This is actually very exciting but I cannot comment much on all that is being planned because I am still on the design phase. Later the best contributors of the site like yourself will be invited to provide feedback, so what is designed is something that addresses the needs of the most interested contributors in order to make it as much compelling as possible.
What I can tell you right now is that what is good is going to get better. All your past contributions will be accounted, so keep contributing.
There will also be many new things that will make it even more fun than you can imagine. Meanwhile please be patient, I hope to release this all still in 2012. Anyway, thanks for the feedback.
PC: I know you are very busy with your own company, so thank you for your time and participation.
Is there any question I did not ask or anything else you would like to mention?
RK: At the moment I'm very busy indeed. I have, however, a new class in development which I hope to submit very soon.
The PHP Programming Innovation Award is an initiative that worked very well and will continue to work to motivate more and more developers to submit innovative components.
If you are a developer that has been hesitating to send your components to the site because you are not sure they will be considered innovative, do not hold yourself any longer.
Whether it is considered innovative or not, you will always have the chance to get great feedback and recognition by the means of different rankings that measure how your work is being accepted.
Once you send your first contributions the site starts giving you advice on how you can get better acceptance, so you can always improve at the same time you can have fun sharing your knowledge with a large community of many thousands of PHP developers.
Even if that is not enough, you even will be at the risk of getting nice prizes from sponsors for contributing innovative packages.
And remember, there is also the year award prize, which besides the monthly prizes you may win, you can also win a nice PHP elephant plush toy and get an exclusive interviewed to feature in the PHP Classes blog like the one Richard Keizer gave above on which he had opportunity to share his thoughts and influence in the future of the PHP Classes site community.
So go ahead, send your PHP classes to the site now.