Wednesday, January 21, 2009

symfony 1.2.2 - Doctrine service release

The symfony team sat together on a bugfixing day on Tuesday, resulting in over 40 closed tickets for 1.2.2. Pretty much for a bug-fix release. So wait no more, symfony 1.2.2 is now available. The main bugfixes included in it take care of issues in the sfDoctrinePlugin and its admin generator. We also include the fresh Doctrine 1.0.6 release, so you are getting the newest and best support for your favorite ORM.

The other batch of bug fixes takes care of Form framework related issues, like file uploads or presets, and some testing facilities were fixed.

If you use neither Doctrine nor the Form framework, a few performance improvements which were put into symfony for 1.2.2 might be of interest for you. Especially Ticket #5356 could be of interest for users with many small files cached. Feel free to run the tests on your box and append your results to the ticket.

The whole list of closed tickets can be found in the Trac Roadmap for 1.2.2 or the Changelog file

Upgrade

Please upgrade your existing projects by updating the reference to the 1.2.2 subversion tag or by running the PEAR upgrade command:

$ pear upgrade symfony/symfony-1.2.2

If you use the 1.2 branch from our SVN repository, just run the svn update command to upgrade your project.

Last but not least, don't forget to clear your cache by running for doctrine:

$ php symfony doctrine:build-model
$ php symfony doctrine:build-forms
$ php symfony doctrine:build-filters
$ php symfony cache:clear

or when using propel:

$ php symfony propel:build-model
$ php symfony propel:build-forms
$ php symfony propel:build-filters
$ php symfony cache:clear

and enjoy your shiny new symfony 1.2.2!

symfony 1.3

As a side task, I created the symfony 1.3 branch, which will now be the main development stream. Kris Wallsmith will be taking over the responsibility for this branch, I will try to keep 1.2 in a good shape.

Blog to it - The social blog directory

Blog to it is a social blog directory developed using 100% contrib modules. Well, there were a few tweaks to one module and a few more tweaks in the theme. This case study has been written to give an insight into how and why Blog to it was developed.

What is it?

"Do you have a blog that you would like to share with others? Do you enjoy reading blogs but don’t know where to effectively look for them? If you’re in this predicament, drop by Blog.to.it and take a look at what they have for you to enjoy.

Blog.to.it is a website that allows users to import all of their blog posts via RSS or start a new blog directly on their site. The site has eight different blog categories including technology, business, science, gaming, lifestyle, entertainment, sports, and other. Whatever you want to write or read about is easy to find, just look through the categories that interest you most.

Once posts are in they can be voted on, commented on, and sorted by rating, category, or date. Blog.to.it hopes to be a great place to find new blogs to read. The site merges loads of features from current sites and brings them to a new audience, the personal blogger. There are many blogs world wide and it is often hard to get noticed between all the corporate blogs out there, this site is trying to help bloggers come together in a space that’s just for them."
From Killer Startups

Features

  • Hosted user blogs - Just like on Blogger or Wordpress a user can start blogging on Blog to it, this isn't a key feature but was more or less there, so why not use it.
  • RSS user blog import - This is the key driver of the site by allowing users to add their existing blog posts automatically to Blog to it.
  • Blog post commenting - It was never fully decided if this should be on the site or not, should comments be on Blog to it or on the original blog. Maybe one to work on?
  • Blog post rating / voting - This also another key feature. The main way to view posts is by number of votes. (Digg like)
  • Browse posts by rating
  • Browse posts by date
  • Browse posts by category
  • Browse posts by user / blog
  • Browse blogs by tag
  • Personal and site wide Twitter updates - This is a really great feature to have. It both helps the user integrate more with the site, and is a great marketing tool. A lot of the traffic is coming from Twitter and Twitter aggregation.

How was it done?

Modules

Blog to it screenshot
The whole site was developed using Drupal 6 and then moved to Acquia Drupal once live. It is heavily based around the core blog module because user blogs are created in the default Drupal way, and RSS imports are imported into the Blog content type.

By using the DrupalMU Helper module which is part of the Drupal MU install profile it helped turn the core blog module into a multi-user blogging system and gives vital functions that were used when creating views and the theme.

One of the other key modules was the FeedAPI module which is used to import an external blog into the blog content type via RSS feed. The Content Profile was used to add the RSS feed URL field to the user's profile. Simple feed was also looked into as a way of importing feeds, but it didn't seem to attach the imported nodes to the user who setup the import. This may of been a development error rather than a fault with the module, but FeedAPI was suggested a better module, and it worked.

Posts can be voted on using the VotingAPI and Plus1 modules. Voting API was an obvious choice when creating a site that requires voting, but which module to use with Voting API was a harder choice. Drigg seems the most advanced to allow +1 and -1 voting, but this was not available for Drupal 6 (it was tested once the first 6 release and seemed too specific), so after spending a few hours installing, testing and uninstalling Plus1 seemed to offer what was needed for the Blog to it use case.

This site is not very complex, but works well. The uptake has been good and by adding Twitter integration this helps with marketing. The Twitter module allows each user to import their Twitter posts, and announce their new posts on Twitter. It also allows the announcement of all new posts via Triggers and Actions on http://twitter.com/blogtoitnew.

Views also plays a big part in this site, much like it does in other sites. It allows many pages to be developed showing the posts in different ways. There is one main view for the site which creates three pages for each category.

Theming

The theme was based upon Raincity's Basic theme, this really helped speed up development. There was very little special development in the theme. The only exciting aspect is the use of the Drupal MU helper functions. The function returns the UID of the user whose blog or profile is being viewed. This allowed custom theming for user pages such as hiding the Blog to it logo and displaying the site name.

Infrastructure

The site was developed on a budget VPS from VPS Empire who has now merged with VA Serv. After launch and after a lot of hunting a hosting partnership was found with Castlegem, so far the site has been running very well, and Castlegem were great at getting the server setup, including custom nameservers, DNS and backup.

What next?

Blog to it screenshot
Blog to it has currently been released as an Alpha version so many of the bugs can be ironed out. Development will continue until the beta version is ready early 2009.

So far very few bugs have been found, the hardest aspect seems to be perfecting the usability. For example, should anonymous users be able to vote and comment? what should be displayed on each page? what is a "top post"?

Also because there are so many posts being imported cron needs to run every 2 mins. This means that on each cron run there is only 1-2 posts and twitter updates being imported, where as if cron was run every hour there many be 50+ posts and twitter updates being imported. This also helps the site stay very up to date, but puts a big strain on the server

There are many ideas of how to move the site and project forward, and by using an array of contrib and custom modules it is planned to add more social features to the site. Such as friends and / or followers, what posts your friends have added, other people who have voted on this post. It is also planned to launch a more feature rich profile page displaying a user's friends and what posts they have voted on.

Please head over to Blog to it, register, add your blog and vote up posts you like.