Behind the Scenes at SitePoint: Code Week

Tweet

You might not realize it, but quietly hidden in our secret sitepoint.com lair, a team of developers are furiously building the next generation of Marketplace and Contests. Our mission is fairly simple: take the current system and build it into a solidly architected platform which we can grow rapidly into something truly beautiful. Initially we planned to also build a SitePoint branded interplanetary rocket, but we grudgingly conceded that it was out of scope.

As an experiment in rapid timeline reduction (the teeth gnashing and pulling of hair from the forums hasn’t gone unnoticed), we decided to ship the team off to a beach house in Rye for 10 days of unchecked productivity. Theoretically. Here in lies the tale of the result.

Makeshift BoardroomSunlight is not the enemy

The team of five is made up of myself (Lachlan Donald), Paul Annesley, Andrew Krespanis, Lucas Chan and James Edwards (our accessible front-end rockstar). All up, its a pretty awesome line-up, and I have high hopes for what we can do, especially if we ever get to build that interplanetary rocket.

Our goals for redeveloping Marketplace and Contests were to get the codebase into a state from which we could base all future developments. Several bullet points were required for this task:

  • Source Managed (via SVN and TRAC)
  • Test-Driven (using SimpleTest and our own Javascript test UI, Testr)
  • Decoupled from vBulletin
  • PHP5 based

Most of this work was done before Code Week, along with the majority of the domain object model, including mappers and finders and other nice abstractions that our internal framework offers for data persistence. The majority of the remaining work lay in implementing user-facing features that the current system offers, along with some nice new features. Our core objectives are to improve the current code platform with roughly the same feature set, but some things just haven’t made sense to re-implement verbatim.

As a bit of a sneak preview, some of the features that will be included in the upcoming release:

  • Search is implemented using the Lucene implementation in the Zend Framework. It provides a number of rich features such as fielded search (allowing you to search by author, by title, etc) and advanced Google-like search operators. I am really excited about this advance and I hope that we will be able to apply similar techniques in time to the rest of sitepoint.com).
  • Creating new listings has been re-structured and simplified. We let Brothercake loose on the markup and structure, and the outcome is pretty spectacular. We have WYSIWYG editing for descriptions, simplified date selection and improved validation.
  • Marketplace threads are now replaced with an HTML listing, which doesn’t depend on vBulletin. This allows for attachments, comments and much better integration with the rest of the Marketplace system.

All up, Code Week was a massive success, resulting in an incredible amount of output, taking the codebase from 60,000 lines of application code to 120,000 lines (excluding libraries, see graph below). We managed to consume a fairly large amount of coffee — I believe it was close to 1.8 kilograms between 5 people. That translates to about 666 lines of code per cup, which in itself is disturbing.

Lines of Code in Marketplace/Contests

Make sure to check the Development Forum for further announcements about the new releases, and look out for some blog posts describing the PHP side of our implementation in a little more detail over the next couple of weeks.

Free book: Jump Start HTML5 Basics

Grab a free copy of one our latest ebooks! Packed with hints and tips on HTML5's most powerful new features.

  • http://www.ilovecode.com ses5909

    I can’t wait to see all of the developments.

  • Frank

    Lachlan,

    Any chance we’ll be hearing more about Testr? It sounds very interesting, and I’d love to know more.

  • http://www.sitepoint.com/ andrew.k

    Frank: Testr is awesome. It would be great to release it under an OSS license, but I’ll leave Lachlan to discuss any possibility of that.

  • http://www.lachlandonald.com Lachlan

    Testr is basically the evolution of our test runner. Our test suites grew to the point that running them all in the one PHP instance was too slow, so we wrote a Javascript UI which takes an XML file listing all of the tests, along with a set of tags for each. The Javascript UI then runs each individual test via an XMLHTTP request (and parsing the results from the XMLReporter in SimpleTest).

    The name was a bit of a joke. Initially it was a plain wireframe interface, but I went on a week of leave and when I came back the guys had dressed it up in a slick black and green interface in a mock web 2.0 style, complete with glossy buttons, wet floor effect, etc. Naturally it’s always in beta.

  • http://diigital.com cranial-bore

    I think I can smell a Sitepoint Project Management book, with lines-per-cup as a key metric for modern PM.

  • Anatoly

    way to measure your output in lines of code. It’s as good as measuring coder efficacy in number of defects closed.

  • Lachlan

    Anatoly, way to completely miss the joke :)

  • keviin6

    Hi guys!,

    The images are not displayed in safari 3.0.2 (win).

  • brent5392

    Ah, I wish I could get away for 10 days to do all my coding work ^_^

    Also, I wish I had a computer fast enough for me to get all the work done in 10 days.