PHP Classes

The Urge to Kill Older PHP Versions - Lately in PHP podcast episode 31

Recommend this page to a friend!
  Blog PHP Classes blog   RSS 1.0 feed RSS 2.0 feed   Blog The Urge to Kill Olde...   Post a comment Post a comment   See comments See comments (9)   Trackbacks (0)  

Author:

Viewers: 6

Last month viewers: 1

Categories: Lately in PHP Podcast, PHP community, PHP opinions

As PHP 5.5 is getting ready to be released in the next months, the end of line for PHP 5.3 is being planned, while the original MySQL extension is being deprecated in PHP 5.5 to be killed in a later version.

Whether this is a good or a bad thing for PHP developers, was one of the main topics of debate between Manuel Lemos and Ernani Joppert in the episode 31 of the Lately in PHP podcast.

They also discussed new PHP 5.5 features such as class variable type hinting and accessor functions, the apparent lack of interest of core developers to participate in the PHP FIG standards group, and what PHP developers have been searching for in 2012 by looking at the PHP Zeitgeist initiative.

Listen to the podcast now, or watch the podcast video, or read the audio transcript to learn more about these and other interesting PHP discussions.




Loaded Article


Contents

Listen or download the podcast, RSS feed and subscribe in iTunes

Watch the podcast video, subscribe to the podcast YouTube channel

Read the podcast transcript


Click on the Play button to listen now.


Introduction music Harbour used with explicit permission from the author Danilo Ercole, from Curitiba, Brazil

View Podcast in iTunes

RSS 2.0 feed compliant with iTunes:

http://www.phpclasses.org/blog/category/podcast/post/latest.rss

In iTunes, use the Subscribe to Podcast... item of the Advanced menu, and then enter the URL above to subscribe to this podcast.

Watch the podcast video

Note that the timestamps below in the transcript may not match the same positions in the video because they were based on the audio timestamps and the audio was compacted to truncate silence periods.

See the Lately in PHP podcast play list on YouTube and Subscribe to this channel there.

Show notes

Introduction (0:21)

PHP releases of versions 5.4.10, 5.3.20 (1:15)

PHP 5.5.0 alpha 2 and The Deprecation of the MySQL extension (2:12)

The Urge to Kill Older PHP Versions (9:14)

Class Variable Accessors and Type Hinting (13:58)

(No PHP) Core liason with PHP FIG (framework standards group) (19:07)

PHP Zeitgeist: What PHP Developers have been Searching for in 2012? (32:49)

Latest JavaScript Objects Published in the JSClasses site (55:37)

PHP Innovation Award Winners of October 2012 (1:02:50)

Conclusion (1:07:52)

Introduction (0:21)

[Music]

Manuel Lemos: Hello, welcome to the Lately In PHP podcast. This is episode 31. And finally, we have back here Ernani Joppert.

Ernani Joppert: Hello, Manuel.

Manuel Lemos: He's been back from the desert. 

Ernani Joppert: Yes.

Manuel Lemos: Ernani, where have you been? Have you been in the desert?

Ernani Joppert: No, not in the desert. I wish I would be. Just struggling with my move out of address and have been here and there. Crazy stuff.

Manuel Lemos: Well, today we have a busy show, lots of things to talk about. We're going to start right away.

Ernani Joppert: Happy New Year for everyone.

Manuel Lemos: Oh, yeah. Yeah, actually, we are recording a bit late. Usually, we will record by the end of the year, so you're right to wish Happy New Year to everybody.

PHP releases of versions 5.4.10, 5.3.20 (1:15)

Manuel Lemos: And as I was saying, I'm going to start right away with the latest topics, things interesting that happened in the PHP world. Let's start by the latest release of the PHP 5.4.10 and PHP 5.3.20.

Well, basically, this is a release just made of bug fixes. There is not much to say about this. So just a few are using these versions and just take a look at the change log page.

They tell you exactly what were the bugs that were fixed and you can check it out if it was anything important to your applications, anything that affects the way your applications work.

PHP 5.5.0 alpha 2 and The Deprecation of the MySQL extension (2:12)

Manuel Lemos: So this is one kind of regular release that is happening particularly once a month, but now we are getting closer to a release of the PHP 5.5.0.

And this time, there was a release of a second alpha version. Basically one of the things that was already introduced in this alpha version was the extension of MySQL that was from now on deprecated and this is an interesting topic that I think we should comment a bit in detail because as you may see here in this page.

There was a vote that took place on December 10, and it was not exactly a consensual decision. I think it was like 2/3 of the people that voted for the approval of this deprecation.

This is a topic that, we already discussed this in 2011, about the plans to eventually deprecate the original MySQL extension that has been with PHP since, well, practically, the beginning since it was introduced.

I'm not sure if it was in PHP 1 or PHP 2. Well, anyway, it was one of the first extensions to access SQL databases to be introduced in PHP and many, many applications used this extension to access that databases.

So I think this decision to deprecate now in PHP 5.5 will have a great impact. Ernani, what do you think about this decision? Would you vote in favor or against it if you were to vote for this proposal?

Ernani Joppert: I understand that PHP has to proceed with the future implementations, et cetera, but I am against removing compatibility to the backward versions just because there are a lot of products even on the Open Source world that provides facilities to the user.

And having them, those teams which are Open Source teams, where people dedicated to work on those solutions, they won't have enough time to deliver some new functionalities just because they will have to adjust their code to the earlier versions, the newer versions of PHP. 

So in my opinion, I think that you can deprecate and then mostly to warnings just to make sure that the developer is aware. But I don't like the idea of having people removing functionalities.

I know it's hard and tough to maintain and sometimes there are bugs that affect older versions, et cetera, but I believe that the PHP group should motivate other developers throughout the world to make sure that they maintain those versions.

And I believe that there is a lot of C developers they willing to contribute. And I think that the more contributors available, the better. But I don't think that's the key thing of PHP since it has been a closed group and very hard to assist, in my opinion.

Yeah, I believe that this is a very political decision and I vote against it. That's my take.

Manuel Lemos: The reasoning behind this deprecation is to encourage people to use the MySQLi extension, which is very similar but just has a change in function names and also it introduces the support to prepare statements that, that somehow help people to avoid security attacks.

And this is the main motivation towards pushing people to use the MySQLi extension instead or eventually, the PDO MySQL driver.

But it is not clear for me in the future version it will actually be removed completely from PHP. For now, it's just a few notices, warnings that will appear for the deprecation.

Ernani Joppert: Yeah. I see on the release on the documentation, they already went there and updated it.

Manuel Lemos: Right. It seems they are very eager to announce this deprecation.

Ernani Joppert: Yes, and they stated very clearly here that this extension is deprecated on as of PHP 5.5.0 and will be removed in the future. So that kind of states very clearly that they will be removing it.

Manuel Lemos: Right. Let me show it here. Well, it's very clear as you said. And they encourage people to use other versions.

So I think one on the side it has a constructive purpose which is for people to use different extension that pushes the use of prepared statements and eventually, will make people write code that is more secure, but that does not mean that people that use the old MySQL extension would not be secure. It's just an assumption that things will be different.

Well, for now, it should just be an annoyance to see any deprecation statements on newer versions. And I'm afraid this probably may not work as they intend to discourage people to upgrade to newer versions that issue all these warnings.

As happened with PHP 5.0, it was rejected for a long time. People avoided it because they did not want these warnings. But let's wait and see how the PHP community will react.

Ernani Joppert: Exactly.

The Urge to Kill Older PHP Versions (9:14)

Manuel Lemos: Now, actually, moving on to another topic, and I was trying to also share the screen here, it's a topic that's pretty much related with all this push to newer versions.

There is a proposal discussed by Pierre Joye of the PHP Core. This proposal is not exactly new but now with PHP 5.5 and the alpha versions, it's getting closer to be released, the intention is to release it in no later than June, they are planning to determine the end of line of support of PHP 5.3 already.

They want to push people to use newer versions and it seems they are very eager to do so. They are trying to put a lot of pressure because PHP 5.5, it's not a very old release. It's still being maintained and lots of people are using it.

Ernani Joppert: You mean, 5.3, right?

Manuel Lemos: Right. The end of 5.3, practically, you'll be pushing people to move on to a newer version on which they will have to deal with backwards incompatible changes and there are several of them in PHP 5.4. And this is a very problematic topic.

Ernani, what do you think? Would you feel comfortable to be pushed to use newer versions or you are fine with it and you don't mind to be upgrading regularly? 

Ernani Joppert: I mean, PHP is a community and since it is a community we have to go with the flow of the community. But I'd prefer to make something work as it is because the idea here is to focus on the achievement of the solution.

And if it works, and it probably have bugs but those can be addressed as the bugs are identified, but the idea here is to make things work. And if it works on older releases, why would we have to lose time or put focus on new functionalities instead of having to address changes?

OK, they aren't exactly big changes. It's kind of if your code is well-structured already, you can make changes very clearly and very easily, but the idea is it's always sometimes a waste of time. 

And on companies looking for profits or communities having developers, Open Source developers, taking their time, dedicating their time to work on these solutions, these products, of course, that there will be a time that will be taken into consideration to make these efforts changed to at least be compatible with newer versions.

Manuel Lemos: Right. And as you said, there is a cost associated to all these updates that you need to do on good basis. And if our products that have logical basis, the cost may become very significant and it may not be the right moment to upgrade.

So that's what I see people doing if they figure that they need to invest a lot on the cost of upgrades will be very high, what may happen is that they avoid upgrading PHP altogether. Well, I mean, when they control the version that came, they can use and.

Well, we have to see how the community will react to all these pushes towards newer versions. For instance, one large community that I'm curious to see what they will do is the WordPress one. Probably the largest community of the PHP application because there are blogs based on WordPress everywhere and we have to wait and see.

Class Variable Accessors and Type Hinting (13:58)

Manuel Lemos: But I'll also talking about the new features moving on to the next topic, I'm going to... OK, let me screen share here. There are several proposals that are sort of tied with each other.

Starting with this one, we already commented on the previous episodes, but this is a proposal that has been improved to address several concerns about the implementing Property Accessors done with a different syntax which basically allows you to define functions for Getter/Setters as well as Set and Unset functions if you need to actually have those functionalities wrapped on functions.

And this was something that has been in discussion for quite a long time and the original proposal already evolved a lot, but there has been a newer proposal that is different, addresses a different concern which is the type hinting of class variables. 

And this prompted the creation of a new proposal that combines both proposals of having a new syntax for Property Accessors with type hinting. So there is this proposal here by Nikita Popov that combines the proposals to consider both things.

As you may see here, we have this, for instance, in this case, DateTime class declaration for this date variable and then you have the Getters and Setters for this variable. And so, this proposal combines the two. From what I could gather this will be what is at least closer to a final implementation.

It is interesting that you can define automatically to have generated Getters and Setters for these functions without having to explicitly write the code for it. I think this is a positive thing because it would be tedious, but still, in the default case when you have public variables with Getters and Setters that do exactly what is the default which is the same as accessing the variable directly, you still have to explicitly state that you want the Getters and Setters. 

Ernani, you've been working a lot in the Java world. In the Java world, this is a common practice to go through the bureaucracy of defining Getters and Setters. Do you see this a positive feature, measure, do you think it will reduce the bolierplate enough to justify this new feature as it is defined? What is your take on this?

Ernani Joppert: Yeah. Of course, that implementing Getters and Setters allows you to provide a better code and benefits from reflection in situations like that, but as well its new functionality and it's kind of a standard object-oriented approach, so it's nice to see that PHP is catching up on that area as well because this enriches the language.

Another thing is I see having this feature it can help you and can bring problems. The only thing here that I foresee is some developers are not used with these kind of two situations and they will have to learn. But learning is always good. Knowledge is something that nobody can take out of you once you have it.

Manuel Lemos: It may take your time as well.

Ernani Joppert: Yeah, that's the key thing. Time is also currency sometimes, but it's nice to see this going through. I don't have anything against it, I like to see what I see, but as well, I'd like to see the future of the language as a backward compatibility situation. And I hope that they don't break other things just because of those benefits.

Manuel Lemos: Right. Now, well, in this case, what they are having is not backwards incompatible. What will be incompatible is the new code that you will use this syntax, but that's up to the developers to use it or not, so it's not a big problem.

(No PHP) Core liason with PHP FIG (framework standards group) (19:07)

Well, anyway, moving on with the podcast. Now, I'd like to comment also briefly about a discussion that went on the PHP internal's list. It is interesting the developer name Lars Strojny questioned the PHP Core about if they would be willing to participate on the PHP- FIG.

FIG is Framework Interoperability Group, which is basically a group that was formed to define a common standards for PHP code. And this group has been defining several specifications PSR-0 mainly for namespaces used in your code.

Ernani Joppert: And this is a, to make up to reaching here, Manuel, this is something we tried saying at the beginning when we started doing PHP Classes podcasts that we should have such group which tries to document proposal requests as well as standards and stuff and it's nice to see that this is going through. 

Manuel Lemos: Well, but in practice, this is not exactly what you requested. You probably want it something more like you what happens in the Java world which are groups that define specifications for APIs and things like that.

And for now what this group has been defining is just coding styles. You should come out this code, the code this way and that tab versus spaces, brackets where they should appear, where should you put your function arguments and things like that. We do not see yet the level of specifications that you see in the Java world.

Ernani Joppert: Yeah, there is always a beginning, right?

Manuel Lemos: Right, but they have ...

Ernani Joppert: It's nice to see ...

Manuel Lemos: They're not beginning.

Ernani Joppert: It's nice to see that at least ...

Manuel Lemos: They're already there for four years.

Ernani Joppert: Yeah, but they are trying to improve it and they are trying to grow it. There is always an effort there, but the idea is to see companies, good companies like Oracle, like the proper Zend Company, and other companies like IBM, other companies, software providers, having members of their interests, and their products on top of this, proposing other things such as design API applications.

Manuel Lemos: Yes, that would be great, but that's not what is happening. They had been years discussing the way you format your code which is a major waste of time because there will never be a consensus because it's too late to define these things and they're already here defining these coding styles. 

And from where I can see it, there are no companies in there. There are only a few developers of frameworks because this is mainly focused on frameworks. Having frameworks defined as the same coding styles, so in the hope that they could interop better, but that's all they have done for now.

And the problem here is that they have been here for three years and they are not moving on to the level of standards that are defined in the Java world which are, for instance, if you want to have a specification for an API for sending email, which is something that PHP needs a lot, the basic functions of PHP for sending email are very basic.

And you need a lot of components to format emails, I mean, not visually, I mean, composing different parts of the mail and there should probably a specification to define a common API and then you would have different frameworks to implement the very same API. And this is what does not happen with frameworks. 

If each framework will implement their own API for sending email, their own API for accessing databases, their own API for things, so that is probably what should happen and happens in the Java world that is not happening at least until now.

Yes, we are wasting a lot of time in the external discussions about the way they should format code. And the reason why I brought this here is not because of that point, it's because somebody went in the PHP internals list and asked somebody at the PHP Core to go there and also participate.

And the basic response there from the several PHP Core members, that it should be defining how their code should be formatted because what the PHP-FIG group is defining does not represent what at least the majority of the PHP developers want.

And that's something that is probably impossible because it just came very late. And you are not going to change the formatting style of the code the people that have been programming PHP for a decade, and that is the problem.

And so, basically, there will be no liaison of the PHP Core with the PHP-FIG because one thing they comment is that they do not want to seem as if the PHP Core is endorsing this specific coding standard.

And if you are going to think about popularity, you probably should give preference to WordPress coding standards because WordPress is much more widely disseminated than any of the PHP frameworks that are being supported by people in the PHP-FIG.

Ernani Joppert: Exactly.

Manuel Lemos: And they have this coding standard for years. And this coding standard is basically just for people to contribute to WordPress. And as you may see, it's just a bunch of conventions that are also not consensual but that probably being used by the majority of the PHP developers that use WordPress if you want to define plug-ins and submit them to the plug-in repository of WordPress and that is the goal of that.

Well, this is basically to repeat something that we already commented before, which is we are spending a lot of time defining coding standards that probably are irrelevant because if you format your code differently you see it will still work, it will not prevent interoperability.

And even, for instance, naming styles of functions; in PHP, it's irrelevant because PHP, the function name case is insensitive. This means if you use CamelCase or studily caps, it doesn't matter.

You can have a different name formatting in the code that calls a framework that is different from the naming formatting of the framework.

And so, well, this is just my opinion and I'm sure my opinion is just mine and many people will not necessarily agree with that, but just to summarize, that's basically it.

Other than that, I also like to know from you, Ernani, I think you already mentioned something in the past about this, but probably to just for our listeners to listen to a different opinion or not, what is your point of view?

Is it really worth to invest all these four years they are there to define a coding standard for all the coding's formatting? Shouldn't we be moving on to actual coding standards for specifications? What do you think? 

Ernani Joppert: Yeah, first of all, I love to see people working towards the benefit of the community. That's the main thing. And I respect the effort, truly. The only thing I see here is there is a lot of people wasting their time on the specific details, details like syntax. OK, they are required to have a standard or a convention. Conventions are always good because then, everybody can have their code more maintainable. That's also one point.

The only thing I'd see as a true effort, not trying to minimize the effort already done, but you see companies getting involved into this and we here in PHP Classes, we don't just criticize others. The idea here is to see what your strongest podcasting try to give them the ability to do better things as well. And I'd see as a better thing, as an improvement to try to also focus on standards, like you said, an email API, a standard for sending emails.

We can see the complexity that sending email brings just by looking at the classes that you already provided and lots of people use. Although some other people criticize PHP Classes, PHP Classes has provided a lot of improvements on the PHP functionality and a lot of users use your forms classes and your email-sending classes, and your SSL API.

Manuel Lemos: Like thousands of contributors.

Ernani Joppert: Right. But since you've been ...

Manuel Lemos: By far, it's not just me.

Ernani Joppert: Yeah, no, no. Yeah. But since you were one of the first, those classes were one of the first ones like the MIME e-mail Classes, et cetera, they began to be used by users from a long time.

So the idea here is just to try to approach people, regular developers to what is an RFC standard and how to adapt your PHP language to an RFC standard, and try to bring the RFC standards to what PHP is, and how to do it in PHP, and why doing it is a benefit.

And that's the key point. And try to provide a big group of people and companies willing to vote to improve the whole ecosystem, not only just the small types like conventions and things like that, but more broad perspective of PHP.

Manuel Lemos: Well, what already happens is that these for core functionality there are RFCs, but the core functionality does not allow different implementations.

And I think it's one of the greatest things in the Java community is that, for instance, you can define an API for application servers. And you have different companies, different providers to implement the same APIs so the market can choose the provider. 

Ernani Joppert: Yeah, exactly.

Manuel Lemos: You can switch from one provider to the other. Well, in theory, there may be some minor issues but the original idea that's that. And for me at least, that's what I like to see. I don't know what is your opinion on that. Is that something that you'd like to see?

Ernani Joppert: Let's take for instance SQL language, there is the ANSI language, there is a standard. So throughout that standard, the other vendors like database vendors, Oracle, MySQL, Microsoft and other providers can do their own implementation of the standard.

And having a good standard and well-defined code convention and, et cetera, would bring other products for PHP world. And we would like to see products coming through as well.

So one aspect of this is if you see on API as you already stated, the application server world, RedHat has acquired JBoss, which was an independent group and that brings some kind of benefits to the brand, the RedHat brand, but throughout the JBoss, you see application servers, you see rules engine, you see every other things that is tied to the application server. 

And now, JBoss' ecosystem has a whole set of ecosystem that can be used as a single product to deliver those tools to the world. And what I'd like to see on PHP is not just particular frameworks, particular HTTP servers, particular database vendors and try to combine them altogether, but to see companies and Open Source groups also focusing on a more professional and scalable architecture as well. That's one of the things that I'd like to see on the PHP.

PHP Zeitgeist: What PHP Developers have been Searching for in 2012? (32:49)

Manuel Lemos: Yeah, well, this is a topic that we'll give a lot more to discuss, but we do not have the time. We need to move on and this time, I'm going to talk a bit first about an article that I wrote based on an initiative that happens every year in the PHP Classes site, although you can generalize and relate it to the other PHP community which is what I call the PHP Zeitgeist. 

Basically, this is very similar to the Google Zeitgeist that ... 

Ernani Joppert: It's sort of a retroactive situation about the last year on PHP, right?

Manuel Lemos: It's retrospective of the year and based on the searches that were found to be popular during this year. So I wrote this article basically to analyze what were the results, at first to explain what is the PHP Zeitgeist. And there is a page for the PHP Zeitgeist, not this article. It's the page here on which we can see. Let me see if I can increase the font of the list.

Basically chose a ranking of the top trending searches in 2011. You can also see that during searches on the previous years, but this time it was the 2012 that was published. And you see lots of keywords here and these keywords were the keywords that gained a certain significance during this year.

The way this works very briefly is that every year our pick is top 3,000 searched keywords and then I look on previous years and see which keywords have raised to the top 3,000 that were not featured in the previous year.

Ernani Joppert: Then we can see that migration is one of them as we were talking on the beginning of this podcast. Migration is one of the hundreds if you would see the position 99 or 98.

Manuel Lemos: Oh, yeah. Well, go and figure what that means because maybe I don't know what people were thinking about when they searched this PHP Classes site for migration. Maybe they are looking for articles not exactly packages, articles on the blog.

Ernani Joppert: Or tutorials. 

Manuel Lemos: Maybe. Well, I don't know this. We would have to ask the people. And if it features here in the top 3,000, it's because it was not a small number of searches.

Anyway, what the article shows, this is subjective but at least it is some analysis of what were the top trending groups of searches that users have been doing. And I basically considered like four groups. 

One of the new Web applications that became relevant in 2012 like Instagram, Google Drive, Tumblr, Pinterest, Google+, SkyDrive, although SkyDrive is older, OpenStreetMap, Google Maps. Well, these are not necessarily new applications, they're just applications that became more relevant this year.

Another group is the APIs and the authentication with using social network accounts. Many sites are looking to be able to provide those login with Facebook buttons or login with Twitter buttons, and there are some keywords here that demonstrate that.

Another group that I saw with, well, superficially, because I only found a few groups that may demonstrate that, is some concern with mobile applications like with searches for mobile detection, jQuery mobile, and sending SMS's from Web services, and also the WhatsApp which is an application very popular on mobile devices. 

And what I see here is that more and more developers are concerned on developing Web applications that will also work on mobile devices being either on mobile browsers or native applications that need to access certain APIs. So they need to somehow access them from those applications.

Ernani Joppert: And one of the key changes, I believe, in 2011 and 2012 I'd say is the growth of the need of having an API, a public API or a private API, because from the API, you can grow your product either from mobile perspective as a native application or a mobile application, but as well as a Web application or closed application and the need of public API is very, very increasing. 

And it's nice to see from other developers, I'd like to see from other developers such as I've seen Frapi, which is an engine from PHP world, and it would be nice to invite them here to explain what Frapi does and why it's being implemented that way because Frapi I've been using it and I like what I see.

I just feel that it requires more documentation and more broad adoption, but I'd say that it's something that we don't see very often. It's an engine that generates public APIs and private APIs. And also, PHP developers will require in the future to adjust their systems to provide such facilities.

And have you ever thought... and that's a question that brings to me here to you, the owner of PHP Classes site in that sense of question. Have you ever planned to adopt a public API or have you been trying to move forward in that scenario on your web site to focus on mobile applications?

Manuel Lemos: You mean to provide an API or to access other APIs?

Ernani Joppert: No, no. I mean, to provide more social interaction with your web site as an API provider.

Manuel Lemos: This has already happened this year. And this is something that was also mentioned in this article.

Well, I'm going to talk a bit about that ahead, but just to finish which is the fourth group here which is E-Commerce and payments. We can see lots of searches for things that are related with E-Commerce sites and payment systems.

I think it is even funny that some of these searches are specific for Brazil despite Brazil only represents 5% of the users of PHP Classes site. I can see several searches that are certainly specific of this country.

Anyway, but now that you mentioned about the APIs and things that were related, one thing that I wanted to comment on this article too, because I usually have an article on each, I talk about what has been done in the site in 2012.

But then, when I found time to do it, it was already Christmas. I did not have the time to do it before. So I decided to merge the topic in this article, just briefly comment what were some of the improvements done on the PHP Classes site this year. 

There are some improvements on the friends of this site ranking and for those that want to know more about this, they can read the article. It has some links to the relevant sections.

Another thing that is related to the APIs is to somehow make the registration login of the site less painful. And this requires to use what I call before the social login support, which basically uses OAuth and other APIs to allow users to authenticate using their Facebook account or Twitter or Google, Gmail account or Hotmail, any kind of account of Microsoft, Yahoo, and StockOverflow which is a source of many visitors as well as GitHub. Now, you can use your GitHub account and login in PHP Classes site.

And actually, you can also use each to register in this site, the site will use your email that you used then the other site, the social site. So you don't have to go through the pain of verifying your account again.

So the registration and login of the site are much less painful because you no longer have to remember your user name and password as long as you are logged in your social network, be Facebook or Google+, or ... You do not even need to have an account of Google+. So this is one use of APIs now that you are asking.

Another use of APIs that was done in this year is that now you can link your social network accounts with your PHP Classes account. And every time you, for instance, you publish something on PHP Classes site, automatically, the site can post on your timeline, so you don't go through the tedious process of announcing it yourself in your social network accounts. 

And this is great because it also helps the site to bring more users to your components, to your classes in case you are a publisher of components. If you are not a publisher of classes, you can also benefit... participate in this linking of social network accounts to spread about important things like announcements of the classes that won the Innovation Award and other interesting things like publication of blogs in the blog of the site and so on.

So this shows one use of APIs, but I'm not sure if this is one thing that you were asking or were more guided towards the site providing an API for some purpose.

Ernani Joppert: I've been following those changes and those are amazing contributions that you did for the PHP Classes world. And it's almost impressive to be able to do this on your own. And I admire you for your effort on doing this, but the idea here is the future basis.

To see other providers like, perhaps, another PHP portal to interact with your portal or provide RSS feeds as you do already, but in a more elegant way throughout an API or throughout sort of a mobile application.

Do you have any particular things in mind to do in that area?

Manuel Lemos: Well, it certainly depends on what may be the uses for that, but one thing that I have in mind is whenever I have time, I would like to play with PhoneGap or Titanium to provide a native mobile application for very specific things, for users to access their accounts and check information very quickly. And that would have to require the use of some APIs, so that's where I see the use of some APIs.

Ernani Joppert: And now with the mission things and the sorts of author's progresses, there could be also games tied to the PHP Classes world, right?

Manuel Lemos: Well, I don't know because, well, we can always imagine if I am like that but somebody would have to develop them and that takes time.

Ernani Joppert: Right. Let's imagine, let's try to picture this scenario. Imagine I am a developer, I like to develop games, and I have an idea that would require from your perspective, from your being the owner of the site should provide me some access to some data from your web site, then I will require an OAuthf key and, etcetera, to interact with your API. 

Manuel Lemos: Right. That will eventually happen because it will be necessary at least for those mobile applications.

Now, having a general API for people to develop generic applications like for instance, you have here in Facebook that is interesting, this is a matter of having use case. So if there is a developer that would like to implement some application that would benefit from some OAuth integration to access user's accounts on their behalf or with their permission, of course, that can be done and I think it's a matter of time until I will do that. 

Now, between making it possible and seeing that happening, is something that...

Ernani Joppert: Requires efforts.

Manuel Lemos: Because somebody would have to have the motivation to do it. But, well, we have to wait and see but definitely, I will have some support to access APIs with OAuth keys. 

Ernani Joppert: And if there's any good API, it's a sign that it's not very known so far. I've seen some videos here and there how to exactly and in a more elegant way to have a great API, a public API that you can deliver to developers.

And it's nice to see that the PHP world put some focus on this because Frapi guys, those guys from the FRapi engine, have been doing a great work on this. And it's very nice because it can provide also documentation for free.

Manuel Lemos: Right. Well, from what I understood, I did not see that very specifically, but from what I understood, if you are going to use them for some purpose, you probably would better implement all by yourself within your site because that is just something that probably will not do the bulk of the work. Well, at least that was the impression that I got.

Well, anyway, there will be a lot more to say about this and the last thing that I mentioned in that article was precisely about something that was already commented, the system missions and levels that it was implemented right in the end of the year and it was very interesting and anybody that is interested to know more about this can look back and there is a video and there is an article explaining that.

We don't have much more time in this podcast, we are already practically reaching the end.

Ernani Joppert: Probably as things go through and this mission system grows more, we will probably have an episode dedicated to it, right? That's the idea. Is that true?

Manuel Lemos: Yeah, right. Well, exactly. There are some news, but the enhancements were minor in terms of user interface is better, but there will be other new things to be announced later and I will probably get back until we announce that and talk more a bit about that because it is always interesting specifically for those that contribute to the site.

And the only thing that I will say for now is that this is, in fact, it was only released late November. It already encouraged many, many developers to increase their participation. And just so you see an example of something that shows how many developers that have been embracing this system levels of mission, let me just share the screen here, and there is on the status page, that shows ... sorry, I need to log in here very quickly. But basically, the status page shows you something that demonstrates how many users have been joining those missions.

Let me just open here very quickly. As you may see there, there's lots of fine animations. There are some enhancements like as you may have seen there, every time the site needs to point the user to do something, you will be pointed with a circle around the...

Ernani Joppert: That's very cool.

Manuel Lemos: ...the mission. 

But what I wanted to show here is not exactly ... this is actually new. It's something that shows you, for instance, the missions that you have completed.

You can actually see there the briefing of the mission even if you already completed here. And the one you think is that this shows how many users have completed that mission or as in this case, it is the very first mission 270 users have completed this mission.

This is a lot of people to embrace the system and it's growing everyday. Everyday there are new authors engaging on these missions. And this is quite interesting.

This ties exactly with the next topic that we are going to talk about this month which is the latest contributions sent to the site starting from the JS Classes that we always tried to mention just to encourage developers also to contribute there. 

So this month as you may have seen, it's like, if I'm not mistaken, it's now like 14 new classes submitted this month. And this is already the consequence of these system levels and missions.

People seemed to have liked a lot of this new system and they are encouraged to contribute more and more good classes, so the original purpose of encouraging developers to send more classes, more not just in quantity but also in quality, I can see it is working well.

And specifically, about the JS Classes, there was this goal to reach 200 published classes so we could start the Innovation Award that we have on PHP Classes site also started in JS Classes site. And then that goal was reached precisely now thanks to many, many contributions that start to be sent right after this announcement of the systems, levels and missions.

So this is great to see this is working very well and it works as an encouragement that is for me to continue to improve on this initiative. And what I can tell you about 2013 is that I have very exciting news, developments that I'm planning to implement.

I'm not going to comment about them right now, but I can tell you that it's certainly something along these lines of motivating more people to submit more classes as with all these encouragement, to make it more fun and engaging.

Ernani Joppert: Right, and even ... let's put it this way, what I see in the future as a sort of lack of creativity, but not a lack of creativity but the opposite of it, to see developers providing games of trying to beat the knowledge of developers and to measure them and to see people trying to assess test involving PHP as well as mobile applications going through your system and trying to increase the social aspect of the developer as well and as the badges as I said. 

Manuel Lemos: Right. That is widely disseminated in fact and the development of sites and also mobile applications to make sites more fun to engage and contribute.

And one thing that I can tell you is that one of the things that I want to implement is it will motivate not only authors of classes but also other users that are not authors, but they can also participate in the site helping other users to execute tasks that they want to execute in the site being searching for great components or other things that in the end make this site more useful and fun to participate after all.

Latest JavaScript Objects Published in the JSClasses site (55:37)

Manuel Lemos: And, well, as I was saying, this ties to the next topic of this podcast, we are reaching the end, but we have time to mention a couple of first classes of JavaScript publisher of the JSClasses site. Ernani, which ones do you think it will be more interesting to comment on in your opinion this month?

Ernani Joppert: Oh, yeah. I already have it on my screen, the two picks of the month. 

Manuel Lemos: Can you increase the font?

Ernani Joppert: Yes, on the JS Classes site, I've chosen the Loader JavaScript file or library. From Lucio dos Anjos, he's from Brazil. And I like the script because we've seen more and more asynchronously loading requirements to load files.

And depending on the situation where you have a mobile application, a mobile HTML website and or with the bootstrap situation, we've seen websites being developed for specific devices. 

And sometimes if you have to load everything altogether, you start to clutter your Web browser memory. And the idea here is to optimize the amount of I/O that your web site requires on every single request.

Manuel Lemos: Right. Also to reduce the time to load the pages which is very important to keep the sites usable. So I think it was a great contribution from Rafael, too, that just sent this component for loading any other external JavaScript component dynamically. So other than that, what would be the other component do you like to talk about?

Ernani Joppert: Right. The second one I try to vary my picks. One is the useful thing and the other one is this one, and then nice innovative situation. This is a Node.js module.

Node has been very, very powerful and the applications that Node brings is amazing. And to see that happening we see a crossword board on a console terminal, so you can create crosswords board from a list of words switching them into different locations and try to put a map sort of a game.

And this has sort of an academic thing because people can then understand how crosswords can be learned in programming as well as a game, it's a complete game, so you can see from screenshots here how it looks. And you can evolve it if you want. You can bring it to different user interfaces and it's very cool to see those things coming through.

Manuel Lemos: Yeah. So that one was from Igor Escobar also from Brazil.

Ernani Joppert: Yeah, I was about to mention the author's name, but since it's so cool, I would speak the same as well on the actual code. Yeah, but as you already stated, it's from Igor Escobar from, also, Brazil. Congratulations. That's very cool.

Manuel Lemos: Yes. It was great. 

And on my part also to mention a couple of JavaScript Classes very quickly. I'm not sure if this is large enough for people to see. Let me try to increase it a bit.

Well, this is basically a jQuery plug-in. Well, everything now is a jQuery, but in practice, it would not really require jQuery. What it means is that people are so used to jQuery that now, they do everything with jQuery. 

And this one by Ikhsan from Indonesia. What he developed is an interesting plug-in that is something that is not very trivial. What it does is ... I was wondering if we have an example maybe offsite. No, well, it doesn't provide any example, but let me describe to you very briefly. 

What it does is, for instance, if you have a form with several fields on which some of the fields are calculated based on the other fields. For instance, if you have several fields and one is the total, you can assign a formula to the total field and this plug-in automatically calculates the result of the value showing the field that is calculated.

And this is not very trivial what is done because he developed a parser that looks at the formula and evaluates the formula at runtime and he used Jison which is the equivalent for JavaScript of the Bison parser, grammar parser generator, and it generates part of the code of this component with Jison. 

And it's interesting to see that this kind of components that require great maturity from the developer, are being submitted to the JS Classes site and, certainly, will make the site better for everybody.

And the other components that I would like to mention is one that is also more related with fun than with the utility of the component which is that game, the Fifteen puzzle game which is made up of 15 pieces on a 4 x 4 square and you have a vacant space on which you need to move the pieces so you can see how it will work.

As you may see here, the game will end when the pieces are by order. Well, this is just to give you an idea what this component does. 

So it is more useful for people to learn how to do it, not just rendering the pieces and also to elaborate a game based on some JavaScript that you can present on our Web page.

Ernani Joppert: And I don't think like seeing somebody from Armenia contributing to this site before.

Manuel Lemos: Well, there are not many contributors from Armenia, but Mark Rolich is which is the contributor of this component, has been submitted quite a good bunch of interesting classes and I hope he continues to do so because usually his classes are not very trivial to do something that is very interesting, always useful for people to learn from.

PHP Innovation Award Winners of October 2012 (1:02:50)

Manuel Lemos: So with this, we move on to our final section on each we comment on that Innovation Award. Winners of October. They were nominated in October, they were voted on November, then in December, the results came out. 

So moving on right away from these 10 nominations, which would you like to highlight, Ernani?

Ernani Joppert: Right. My picks for the PHP web site goes to Artur Graniszewski, he's from Poland. His component is named as BAST, and it basically analyzes the version of your Apache, your PHP, and other...I don't think there is other things, but it provides you a list of vulnerabilities if there are any. I don't know if it suggests to you to upgrade it, but you can be aware of the vulnerabilities found.

Manuel Lemos: Right. Well, the idea is just that they still tell you if you should be concerned about the vulnerabilities that you have on your PHP or Apache version that you are running. So that's what it does.

It first detects if you are running PHP on Apache and then it tells you what are the known vulnerabilities.  And over time, I'm sure he's going to update the class to tell developers about the vulnerabilities of newer versions. So other than that, which other class would you like to mention?

Ernani Joppert: Sorry, my mute button here was...

Manuel Lemos: I thought there was something odd.

Ernani Joppert: Yeah. The second pick for the PHP Classes web site goes to Gianluca Zanferrari, he's from Netherlands, so I guess he had some Italian relative, but it's nice to see this component because it's very useful. And I can see lots of applicabilities.

Basically, you can capture a person signature through JavaScript, he provides that library. But the thing is the usage of PDF functions here which can then attach the image to PDF using the component. I think it's ... I've seen here as PDI package.

Manuel Lemos: Right. 

Ernani Joppert: It's basically taken from PDF document and then he inserts the image and generates the final document with being sort of signature.

Manuel Lemos: Yes. Well, actually it has two parts: one that works on the browser site to capture the handwritten signature on the screen. So it assumes that it will be using something like a touch screen.

But the PHP part that is what made this class be nominated is to merge the signature in an existing PDF document and that's very useful.

And then on my part also, I would like to comment on a couple of classes if ... let me screen share again.

One of those classes is by Mikhail from United States. Basically, he does something interesting although, probably, it's something not everybody will find useful, but it takes a math formula expressed as a string and it renders it as SVG chart.

It makes rendering the form gives it a visual presentation of all the formula will be rendered on a chart. So this is interesting despite it's not actually something that will be useful for everybody, but I'm sure many people will find it useful.

The other class that I will also like to mention from Luis Martinez Ulloa from Peru, which is basically something ... it's actually a very simple functionality, but I think it's very useful and innovative because I did not find any other class that was on this site for this purpose, which is to be able to generate PDF documents using the FPDF Class, so it is extended.

It makes the documents automatically print, be sent to the printer when they open. So I think it inserts some JavaScript in the PDF documents. So if you want to send a document and want somebody to print it right away when he receives it, this class is very useful. And so, kudos to Luis for his contribution.

Conclusion (1:07:52)

Manuel Lemos: And with this, we practically ended our podcast. We have discussed lots of topics and I know that there are other topics that we'd like to cover but then, the podcast became larger then would be reasonable.

So I think with this, we end our podcast. And on my behalf, that is all for now. So see you back and the rest have to follow 30. So bye.

Ernani Joppert: Bye-bye now.

[Music]




You need to be a registered user or login to post a comment

1,616,380 PHP developers registered to the PHP Classes site.
Be One of Us!

Login Immediately with your account on:



Comments:

3. The worst podcast I've seen - Florin Patan (2013-01-17 01:54)
This is full of misleading stuff... - 5 replies
Read the whole comment and replies

1. php needs backwards compatibility - James Roberts (2013-01-15 04:32)
There is a ton of legacy code out there that will break.... - 1 reply
Read the whole comment and replies

2. MYSQL - coci (2013-01-14 23:09)
stupid thought... - 0 replies
Read the whole comment and replies



  Blog PHP Classes blog   RSS 1.0 feed RSS 2.0 feed   Blog The Urge to Kill Olde...   Post a comment Post a comment   See comments See comments (9)   Trackbacks (0)