Posted on 27 January 2009 by Demian Turner
A new version of the Seagull framework has been released, download it here.
This is mostly a bugfix release but with some important improvements:
- Improved preferences management
- Better handling when DB connection is down
- Updated FCKeditor to 2.6.3
- Added German utf-8 support
- Updated Horde_Routes lib
- Consolidated translation features (SGL_Translation, SGL_Translation2) into new SGL_Translation3 PHP5 only package
- Added media2 module which makes ajax uploads easier and provides media features to the CMS module
The Seagull framework release coincides with a new release of the CMS module, and an announcement of Doris, our new productivity app. You can read the announcement here if you’re not on the mailing list.
This will be the last release of the CMS module as a mainly developer-focused download. Version 2.0 of CMS will get its own website, improved developer and enduser documentation, and a Pay as You Go format for those who need the convenience of a hosted service. Read more about the improvements and try the preview here.

Posted on 23 September 2008 by Demian Turner
I didn’t get a chance yet to blog about our last TechCrunching, but Kindo, the startup I co-founded in March 2007, today announced its sale to MyHeritage, the biggest player in the family tree space.
Kindo is a PHP social net app built on the Seagull framework and other open source software. At peak popularity our users were building 38k profiles/day and we acquired more than 1m profiles in our first 10 weeks. More details on my CV.
Hats off to the Kindo team and to the Kindo devs who don’t appear in the TC photo.
Posted on 25 June 2008 by Demian Turner
Posted on 25 January 2008 by Demian Turner
Well the title says it all, but I don’t think this is a reason for anyone to have a heart attack, aside from me but I’m recovered now
Please download Seagull 0.6.4 which includes the small fix required to solve the file disclosure problem. 0.6.3 is no longer available.
As the release has only been out <24 hours I doubt there are many production sites running on the vulnerable code, but if you were svn updating a live site, a very bad practice by the way, then svn up again
The problem: very simple, some recent code we introduced to merge, compress and cache CSS and js files was accepting arbitrary paths from GET – ouch. The checking is now much more stringent.
Thanks to the gentleman over at milw0rm.com who posted the flaw less than 24hrs after the release went out. While he didn’t inform me or anyone I know of, Google alerts notified me of his announcement. In my view this is open source (with a little help from Google) working at its best.
Finally, please note that the title of the exploit article is inaccurate, it claims versions <= 0.6.3 are affected, this is not true, the affected optimizer.php file was only introduced in 0.6.3.
Posted on 23 January 2008 by Demian Turner
Well it took a bit of time but after quite a few months a new release of Seagull is finally out, 0.6.3. Things have been keeping pretty busy with the startup I’m working on, but it’s been a great opportunity to refine some features of the framework and optimise the performance.
The early indications are good, after less than 10 weeks of going live Kindo users are creating up to 20k profiles/day and the server load is staying comfortably below 0.5.
The latest Seagull release has a long list of improvements and new features, now it’s just a case of bringing the wiki documentation up to date to reflect this
Should happen in next few weeks.
Here’s an overview of what’s new:
- CSS and JavaScript reorganization and optimization
- emails can now be stored in a queue managed by the db
- caching support has been extended to include javascript, css, PHP libraries and method calls
- we integrated Horde_Routes, imo one of the better PHP routes libs available
- Zend_Cache, which had clearly overtaken Cache_Lite is now wrapped by SGL_Cache, so devs have easy access to a memcached backend
- Dmitri developed an alternative array-based navigation driver, same flexibility as former driver but lightning fast
- out-of-the-box RTL support thanks to our work on the Arabic translation of http://kindo.com/
- the test suite now runs end-to-end in CLI
- the translation module has been greatly enhanced and was key in allowing us to release 14 languages in 10 weeks, including Arabic, Chinese and Russian
- full support for stored proc multiple resultsets in the SGL MySQL db driver and for storing DDLs for procs, views, functions, triggers and default or test data in your modules
- many performance improvements
- support for multiple attachments in SGL_Emailer
See the CHANGELOG for full details.
Posted on 22 January 2008 by Demian Turner
Thanks to Fabio Bacigalupo for the following article, part of an upcoming mini-series about successful startups built on the Seagull platform.
Running a successful website is a constant balancing act between achieving good performance and scaling smoothly. Read how we have used the Seagull framework to build our portal podcast.de. As a start-up we provide a web-based service to find, comment, play and recommend audio and video podcasts. At the moment the service is intended for a German speaking audience only but we are prepared for internationalisation thanks to Seagull.
Posted on 06 October 2005 by Demian Turner
update: forgot to post the photos, there’re a few on Flickr and masses over at Pierpaolo’s site – was a great weekend, got to meet some interesting folk, shared some really innovative Seagull projects, and finally saw Venice!
Speaking of IRC, regulars from #seagull will be meeting up in Padova, Italy this weekend for SeagullDay2005. To use Werner Krauss’ phrase, we’ll be working on an IRC2RealLife gateway
So if you’re in the neighbourhood of N. Italy please do drop by, or drop us a line on #seagull – we hope to get a webcam + skype going for devs that live too far away to attend.
Posted on 01 June 2005 by Demian Turner
After more than a month in development, a new Seagull release is out. It is recommended you upgrade, a lot of annoying bugs have been fixed, not to mention a few new features added:
- FCK editor now replaces the discontinued htmlArea: it’s better, faster and smaller, with good image upload functionality
- blocks are working better
- navigation is easier to create
- the instant messaging module had an overhaul (Louay Gammo)
- the newsletter module is greatly improved (Rares Benea, AJ Tarachanowicz)
- an SGL_Locale object has been added, this integrates the extensive functionality provided by PEAR’s I18Nv2 (Jacob Singh)
- functionality to import users from CSV file added
- lots of html/css cleanup (Riccardo Magliocchetti)
- homepages (index.php) can now be set to any type of framework content
- the module generator has more functionality (Werner M. Krauss)
There are also some exciting things in CVS that will make their way into the next release (or perhaps the one after)
- a very functional shopping cart solution (Rares Benea)
- integration with PEAR’s Translation2 package for full internationlisation support, including GUI, content, and navigation (AJ Tarachanowicz)
- XML/RPC web service integration – drag and drop authenticated services to be exposed by your Seagull installation
Posted on 05 June 2003 by Demian Turner
This tutorial presumes you’ve had a look at the PHP Seagull app framework.
At the moment the PHP Seagull offers a fairly simple API for creating a range of navigation widgets. The three main approaches are as follows:
- Using a wrapper for PEAR’s HTML_Treemenu:To create a menu like the one used in the admin section under Publisher you can use the wrapper method getGuruTree() in the CategoryManager class. You can customise the defaults set in the method, basically the data is grabbed from the category table which follows an id-parent id structure and is simple to build. Of course you can use Publisher, hit the categories button and use the web API to build up the tree, so far it does everything you’ll need except node ordering, this is coming soon.
The main reason for using getGuruTree() should be when you need to constantly update the category information, like in an admin role updating the nodes, so there’ll be quite a big DB call for each request (depending on how many nodes are in your table) and obviously no caching.