It has been a while since I sent an editorial newsletter like this to the PHP Classes site subscribers.
This year has been intense in terms of the development of new features, the increase in new subscribers, the increase in submitted classes, and consequently, the increase in traffic that the site had, and in the cost to maintain it.
Fortunately, the income generated from the advertising on the site has been enough to keep up with the costs. However, advertising is not a stable source of revenue. Some months are better than others. This circumstance has been making me think which features may be worth developing without blowing up the site budget.
One feature that I have been putting off for years is discussion forums for each class published in the site. Forum sites are usually very busy and advertising is known to not work as well as in moderated content pages.
Users who have subscribed to this site since 2002 may recall that I had considered making discussion forums only available for paid subscription users. I am still thinking of this for the future. The forums would be much less popular, but at least I could cover the increase in site costs.
Despite the fear of out of control costs, I have decided to take a chance and develop a forum system to be made available at no cost to every subscriber to the site. I just hope it will not consume so many resources that I cannot cover the cost with the income generated from advertising.
So, after several months of dedicated work, I am glad to announce the new forum system.
Currently, it only available in the form of discussion forums for each class published on the site. If all goes well and it works without causing too much load to the site, I intend to open other types of forums of general interest.
This forum system has been developed from scratch because I wanted to add unique features, some of which do not seem to be available in the popular open source forum systems.
Despite the extra work compared with integrating an existing system, I think it was well worth the effort due to the value of the additional features that it provides. So, here is an overview of how it works.
- Each package published in the site has its own forum. In practice, to make it more space efficient, each forum is only created when an user posts the first message.
- Each forum may have a set of active threads, each one with its a title subject, a summary description entered by the user that starts each thread.
Currently the forum message composition is very simple. There is no HTML or BB code support. In the future, I plan to add a rich text editor that works in most modern browsers and lets users post HTML messages without the need to enter any special formatting tags.
- Any user may subscribe to a forum. When a message is posted to a forum, subscribers may receive e-mail alert messages to let them know that a new message was posted to that forum.
Forum subscribers may choose to receive alerts when new forum message and replies are posted, or just when a new thread is started.
Additionally, users may subscribe to and unsubscribe from individual forum threads, to keep up only with discussions about their interests.
- Initially nobody is subscribed to any forum. However, by default, each author becomes automatically subscribed to new forum threads.
An author may change this by going to his user options page and changing the option named "Subscribe to my classes' discussion forums" and set it to "Never" or "All new messages".
Users who want to suspend the delivery of any forum alerts, may just uncheck the option named "Discussion forum update alerts".
- Each forum has its own Rich Site Summary (RSS) feed that lists the latest new threads that have been posted.
If you are familiar with RSS, you may use your favorite feed aggregation program to keep up with the latest threads that are started in the forums about your favorite classes.
If you are a Yahoo user, you may also add the RSS feed of forums of the classes of interest to your My Yahoo page. There are links in each class forum page for that purpose.
- To enter each class forum, just use the "Support forum" link in the respective class page.
Despite there are plenty of additional features that could be added, the development effort to put this forum system to work was significant.
Fortunately, I have been investing a lot of time in the development of a code generation tool that has been providing a dramatic reduction in the development time necessary to deploy database driven systems.
You may already have heard of Metastorage. Do not confuse it with Metabase. Metastorage is a code generation tool that I have been maturing for over 2 years. Metabase is a different project. It is a database abstraction system to develop portable database applications that I started 5 years ago.
Metastorage lets you describe in a simple XML document your component data model of classes of objects with variables, validation rules, relationships, and functions that you need in your applications to map your class objects to rows of data in tables of your application SQL database.
From this component data model, Metastorage generates all the code for the classes that are described, so you can use them to store and retrieve your application data objects from an SQL database with just a few calls to the generated classes.
Metastorage can also generate classes for building Web based forms as a user interface to manipulate your data objects, as well as classes to retrieve data to generate reports, and even a special class to install the support database schema with the tables to store the data objects.
You may learn more about Metastorage in the page below. However, the important thing that I would like to mention is that Metastorage has been fundamental in achieving a greater level of productivity, reliability and efficiency of the forum system code as well of any other systems that I intend to develop.
The database access code of the forums system was totally developed with Metastorage. Without Metastorage, I would probably have taken twice as much time again, or even more, to develop the forums system. Metastorage drastically reduced the time that I usually take to write, test and debug equivalent code by hand.
I thought it would be useful to share this information with you because I am sure that many PHP Classes users develop projects for your own companies or for others. The time that you save developing your PHP applications efficiently is directly related to your ability to survive with the profit made from your development work.
I am certainly not trying to sell you anything that is not interesting to you, especially because Metastorage is an Open Source project for which you do not pay anything. It is not even GPL, so there is not even that trick of the dual license GPL/commercial that some companies use to attract clients to their paid products. Metastorage license is BSD, very similar to PHP's and Apache's.
Anyway, my point here is to bring your attention to the power of code generation tools like Metastorage and many others that exist or could be built for the sake of a more efficient software development cycle.
To learn more about the code generation power, I strongly recommend this site. Here you may find articles and solutions for PHP and other languages.
Some time ago, I also reviewed the book, Code Generation in Action. This is an excellent book about code generation techniques. It is interesting to anybody, regardless of whether you are considering using existing generation tools or building your own. More details in the review.
If you were not yet sure about what you would like to get for Xmas, this book is an excellent suggestion. ;-)
As for Metastorage, you may find more about it here:
Here you may find some interesting screenshots:
This letter is already very long, but I would like to take this opportunity to tell you that I plan to keep developing this forum system, as well as adding other site features that have been requested. For that I always appreciate your feedback.
I intend to have a forum specifically for public discussion of the site features. I will announce it later when it is ready.
Until then you can either mail me your comments to firstname.lastname@example.org or post your comments in the PHP Classes site forum that you can access using the link in the top right corner of the site pages, or even post bug reports or feature suggestions in the PHP Classes bug tracking site:
I will probably write to you again before Xmas but in case that does not happen, I send you now my best wishes for a Merry Xmas and a Happy New Year for 2005.