Startups are getting smaller

Startups today are almost half the size than they were a decade ago. It seems that a lot of the collaborative tools that have emerged over the last year help productivity so you can do more work with less employees. And I don\'t think its just true for startups, I know at work we\'re doing a lot of work with just 3 people in the Digital Media department. Do you think this study accounts for the start ups and open source projects that pioneered the services that make this possible?

Start-ups are now being launched with an average of 4.9 employees, down from 7.5 in the 1990s, according to a recent Kauffman Foundation study. In 2009, new independent businesses created a total of 2.3 million jobs, more than 700,000 fewer jobs than the annual average through 2008, the study found.

HT: With New Technology, Start-Ups Go Lean

Tags: Digital Media, Economics, Open Source, People, Technology

Lightweight UI Plugins for jQuery

One of my newest and persistent obsessions is constantly looking for ways to make dcunited.com load faster.  It\'s a challenge because we want to have a content-rich site, with lots of photos, videos, and interactive elements.  There are a lot of techniques you can try, from optimizing images, using subdomains to trick browsers into downloading in parallel, combining images into sprites, and so on.  Of course, none of these techniques can help you if you choose or are forced to use something that has a big payload.

In this case, I was looking at the javascript libraries we use to do tabs, table sorting, and fancy tooltips.  jQuery itself is 31kb minified, which is a little chunky but not a horrible tradeoff.  Most plugins are svelt, except qTip which weighs in at comparatively hefty YUI-compressed 38kb.  For 38kb you get a ton of features with the plugin, but if you aren\'t using most of them, its just bloat.

I need a compact UI library for websites

I started looking for a replacement plugin, and quickly found jQuery TOOLS, which states :

Websites are not desktop applications. They are different. What you really need is high usability, striking visual effects and all those \"web 2.0\" goodies that you have seen on your favourite websites.

Replacing qTip with the jQuery TOOLS tooltip plugin didn\'t take a lot of time, by mid-morning I was already testing it across our supported browsers to roll it out to the live site. You can still get pretty fancy with this plugin.  However, you can customize your download to only include the tooltip plugin, which clocks in at just over 3kb minified javascript.  

This is a big difference, although 35kB may not sound like much, that\'s 35kb less data that visitors have to download. More importantly, that is less javascript code that a browser has to parse when rendering a page. Javascript parsing can block other downloads and slow page loading.

Tags: jQuery, Web Design

Frustration with Drupal core growing

When a prominent developer and contributor lashes out that Drupal is in dire straits, you better listen.  You ought to read his critique of how Drupal core development is stalling, or at least stuck in the mud.  That can\'t be good news for anyone looking to upgrade to Drupal 7.  My thoughts after the quote.

In addition to the half-baked, single-purpose product features mentioned above, Drupal core still carries around very old cruft from earlier days, which no one cares for. All of these features are not core functionality of a flexible, modular, and extensible system Drupal pretends to be. They are poor and inflexible product features being based on APIs and concepts that Drupal core allowed for, five and more years ago.

Where would Drupal be if they had worked more closely with the PHP community early on?  I have no idea, but a lot of PHP programmers have looked down on Drupal because most of the codebase can be messy, with poor API design decisions, overuse of globals, and leaky separation of concerns. Along with Drupal eschewing Object Oriented Programming and resulting best practices, its no wonder that talented developers would choose to use a framework like Zend, Symfony, or Cake to build a complicated website.  It sounds like a lot of short cuts and idiosyncrasies are now baked deep into Drupal core, and ripping them out too much work for core developers.

I\'ve always thought that Drupal\'s greatest strength is certainly not the great design of its codebase, but the Drupal community and ecosystem. A contrib module usally exists for many common website needs, like managing redirects, creating useful URLs for content, integrating with analytics,  and plugging in 3rd party commenting systems.  On top of that, there are super-modules like Views, Panels, and Context, which let you prototype and build parts of a website without having to write any code at all.  The Drupal community has solved a lot of problems through determination and individual brilliance, but that model can\'t be sustainable in the long run.

Is there a solution?

Drupal core should cater to programmer\'s needs, via coherent APIs and pluggable subsytems.  A complete rewrite of core, or even big parts of core, would be a waste of time. Drupal would stagnate while other frameworks kept improving.  I think Drupal 8 should seriously consider using a framework like Symfony2 as the foundation for core.  I mention Symfony because it has an EventDispatcher component that can replace most of Drupal\'s magical hooks system.  The next release of the Zend Framework will have a similar component. A tested framework, used not just by content management applications would expose developers to a wider range of best practices, particularly around configuration management, deploytment, and unit testing.

Contrib should cater to site builders needs and focus on adding features on top of core that they want.  Modules in contrib can improve faster to meet user needs, fix bugs, and innovate.  This is an idea proposed in the discussion linked above. Moving as many modules as possible out of core also makes Drupal leaner.

Tags: Career, Content Management, Drupal, Oscarm.org, PHP, Zend Framework