Day 24: What's next?
For twenty-three days, we have been building a web 2.0 application in PHP5 with the symfony framework. Yesterday was the last step of the askeet development, and it is fully i18n compatible. If you browse to www.askeet.com, what you will see is the result of roughly 3 days (24 hours) of work with symfony. As you see it, the application is ready to answer your questions about chocolate, sex, astronomy, or PHP programming.
But more than that, askeet is an open source project, and what comes next is, hopefully, a long story.
The askeet website is open to the public. You can advertise it and talk about it to your friends and relatives. Some of the test contributions will be removed, but most of the existing questions and user accounts will remain. Askeet is a great tool to find answers - provided that many users visit it. So spread the word.
Opening an account is fast and easy, and requires nothing but a nickname, a password, and an email. It allows you to declare interest about questions, to ask new questions, and to rate answers. The email address will not be used for any kind of advertising, ever.
Subscribe to the RSS feeds to keep informed about the latest questions, or about the answers to the questions you asked.
Askeet can also be a way to make some money, since user profiles can be linked to a Paypal account. If a user finds your contributions useful, he/she can thank you by granting you a small donation.
All in all, there is no good reason not to use askeet everyday. It would be our great pleasure if you bookmarked the site, visited it regularly, and contributed questions and answers.
Askeet is more than a website, it is an open-source project. As of today, askeet can already be downloaded and installed anywhere. Today's version is tagged 1.0, it is free to use, adapt, customize, and integrate in third party applications.
This is technically possible because askeet is based on PHP5 and symfony, and this is legally possible because askeet is an open-source project on its own, published under the MIT license.
To install askeet, you have two options:
- Download the 1.0 release as a .tgz archive from the symfony-project website
- Do a checkout from the 1.0 release in the SVN repository into your own
You will have a symfony project, ready to run as soon as you configure your web server.
The full source can also be browsed online in the askeet trac.
The 24 advent calendar tutorials will still be available online in the symfony project website.
If you feel like translating them to a foreign language, you can also find the Markdown version of the tutorials on the symfony Subversion repository. We will be delighted to host any foreign translations of the askeet tutorials on our repository. The symfony site uses a Markdown converter which does the formatting, media inclusion and syntax coloring. So just send us a translated Markdown version, calling the same media, encoded in utf-8, and we will publish it.
Before starting a translation, please write a post in the askeet forum so that two people don't start the translation at the same time. And commit the chapters one by one as you translate them, so that the content can be made available sooner.
After uncompressing the askeet project archive, you will obtain a list of directories which are the classic file tree structure of a symfony project. It is explained in detail in the file structure chapter of the symfony book.
At the time of the 1.0 release, the askeet project contains one application (called '
frontend') and 11 modules:
modules/ administrator answer api content feed mail moderator question sidebar tag user
Askeet is compatible with MySQL, PostgreSQL, Oracle, MSSQL, and all database for which a Creole driver exists. Here is the data model of the askeet application as of release 1.0:
You can find a SQL query that will add these tables to any existing database in
There is a set of test data in
askeet/data/fixtures/. If you want to use it to populate your database, call:
$ php batch/load_data.php
...from the root directory of the project.
The askeet application is a living open-source project. As such, we hope that it will continue to improve, but we need your help for that.
Askeet was developed by Fabien Potencier, who is also the lead developer of the symfony project. As the framework already represents an important amount of work, contributions from askeet enthusiasts are needed to make the project live. And there is much to do! If you are a developer interested in contributing to askeet, have a look at the following to-do list:
- Additional features:
- Alternative site designs to propose more than one presentation. This is mostly a graphical design and CSS coding job.
- User-contributed Captchas, under the shape of a simple question (like "how many fingers in one hand?"), to avoid automatic spam on question contributions.
- Preview of questions before publication to avoid big typos
- Confirmation of user subscription by email (optional)
- Auto login (with a cookie)
- RSS Feed of reports for Moderators
- Ajax Pagination of the contributions/interests in the User profile page
- Popular algorithm so that the questions of the front page can change over the time
- Project strengthening:
- Unit tests
- Code documentation in PHP doc format
- Installation manual
In addition, there are or will be bugs to detect, track and fix.
All contributions are welcome. Regular contributors with a good understanding of the project will quickly be granted a right to commit to the SVN repository.
Fabien Potencier (lead developer of askeet and symfony)
François Zaninotto (writer of the tutorials) would like to thank John Christopher for his great help on rereading each of the tutorials to put them in good English, Bruno Klein for his work on the askeet design, and his wife for the incredible patience and tolerance she showed during 24 days...
That's about it. It's been a pleasure developing and writing this for you, we hope that askeet will live long and that lots of people will start using symfony for their web projects.
Merry Christmas to you all.
This work is licensed under the Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License license.