Real Project Management for Real Businesses

Browsing Posts published by Keith Casey (caseydk)

While there hasn’t been a huge amount of public discussion about it, we’ve been working on a license change for web2project. At present, web2project is available under the GNU Public License v2 (or GPLv2). While there’s quite a bit of fear, uncertainty, and doubt surrounding its use, there are a few concerns that result from the various interpretations and legal analyses:

  • There are numerous conclusions on if there even can be non-GPL-compliant components that are wholly dependent on GPL’d software. The majority opinion – according to projects like WordPress, Drupal, and Joomla – is that these components are derivative works and therefore also must be GPL.
  • To protect against this, there’s the concept of a “shim” which is a small piece of code that sits between the GPL application and your module that would allow more flexible licensing, but that concept is also an area of contention.
  • On the plus side, including one line of GPL code in a non-GPL project is unlikely to cause a problem because Fair Use is still Fair Use. More specifically, one of the factors assessed in Fair Use determination is “the quantity or percentage of the original copyrighted work that has been imported into the new work. In general, the less that is used in relation to the whole, e.g., a few sentences of a text for a book review, the more likely that the sample will be considered fair use.” [Source: Wikipedia]

So what does this mean for Web2project?

Under this reasoning, all web2project modules would have to be and remain GPL. If this module interacts with or is wholly dependent on web2project and differently licensed systems, it has to be GPL.. but we’re not sure what that means for the other systems. What we know, as far as web2project is concerned, is that the license may place infeasible restrictions and rules on your code.

The GPL puts rules on the code of our contributors that are against our vision of Freedom and the spirit of Open Source. It attaches strings – both seen and understood and implied and unclear – that we aren’t willing to deal with any further. We won’t let our users to get tied down by the same unclear rules that have plagued other communities.

Therefore, to protect the integrity of the project, the work of our community, and the growing integrations being built on web2project, we’re changing from the current GPLv2 back to the original BSD license.

There are really only two ways to change licenses legitimately:

Get all contributors to agree to the change.


Remove the code of any contributor who doesn’t authorize the change.

For the past few months, we’ve been working on exactly that. Digging into the ancient past of web2project and dotProject, we found the details of something we all knew: dotProject itself changed from BSD to GPL between v1.0 and v2.0. Unfortunately, there are no records to who made this decision, how, when, or any discussion, etc, but based on SVN records, the license changed on March 10, 2005. From the beginning of dotProject through the date of our fork (November 2, 2007) and then into web2project, we have a total of 33 contributors:

  • There are four individuals who contributed 4 lines of code or less, we’ve excluded them.
  • There are seventeen individuals who contributed exclusively to dotProject 1.x (aka prior to March 10 2005). Since they were contributing to a BSD project, we assume that they agreed to the BSD license.
  • Of the remaining twelve:
    • One is contributing exclusively to web2project and agrees.
    • Four individuals contributed to both dotProject 2.x and web2project and all agree.
    • Three individuals contributed exclusively to dotProject and all agree.
    • This leaves a total of four individuals, two of whom are unresponsive, two oppose.

Of the combined history of the projects, this gives us 888 SVN commits which are not approved. Of those, we’ve reviewed 365 commits which were merges of already approved code or code we’ve since deleted (not replaced, deleted). This leaves us a total of 523 commits that are still under review and/or need work. To put this in context, this is approximately 7% of the 7000 total commits between the two projects.


At our present rate, we will finalize the license change well in time for web2project v3.0.

Going forward, all web2project development should be considered licensed under the Modified or Clear BSD. Anyone contributing more than a line or three of code will be expected to agree to a simple Contributor License Agreement.

With the release of v2.0 this past June, web2project now implements a simple Update Checker. Just like WordPress or Drupal, it will periodically check web2project.net to see if a new version is available. If there is, it will display a message to the System Administrator along with a link to the download area of SourceForge.

With the release of v2.2 this past December, we added a simple module uploader that can validate and deploy modules from a simple web interface. At present, it’s been tested with numerous modules and works 100% but only handles zip files. In the next release, it should handle tarball’s and eventually even the phar file format available to PHP 5.3 users.

The goal behind these efforts is simple:

To provide our community the fastest possible way to know about updates and give them a simple way to deploy them quickly

When we make a release, we want the community to upgrade as quickly as possible. The altruistic fluffy-bunny reason is that we want users to experience as few bugs as possible. The cynical reason is that it wastes everyone’s time when we get bug reports on an issue that’s been closed for weeks or even months. The most tangible and important reason was demonstrated in the WordPress community recently:

Version 3.0.4 of WordPress, available immediately through the update page in your dashboard or for download here, is a very important update to apply to your sites as soon as possible because it fixes a core security bug in our HTML sanitation library, called KSES. I would rate this release as “critical.”

Source: WordPress 3.0.4 – Important Security Update

Within minutes of being released – granted, I saw the news on Twitter – the Admin Dashboard of web2project.net (a WordPress site) told me an update was available. Upgrading the site took a couple of button clicks and watching the result. It was quick, painless, and didn’t require shell, ftp, or anything else. All plugins worked flawlessly… and in fact, when new versions of plugins are available, the Dashboard tells you about that too.

Our goal is to get web2project to the same point. Whenever a new version of the core system – or supporting module – is available, the system should handle the rest.

Of course.. that means some of you need to stop hacking core. 😉

As of 19 December 2010, web2project v2.2 is officially live. You can download it from SourceForge now.

While in many releases we might focus on cleanup or functionality or developer aspects or similar, this one is a mishmash of a bunch of useful updates on numerous fronts. This isn’t all the updates but a bunch of the important ones:

For the Project Managers:

  • We reworked much of the Gantt Chart logic. We’ve added a few icons to better represent the status of tasks and milestones. Further, to make the charts easier to read and understand, we’ve added a legend and shaded alternate lines.
  • Gantt Charts are now exportable as single-page PDFs. You can print, email, share, or whatever with just a click.
  • We updated Token Tasks – which represent Subprojects – to prevent direct editing. Further, more of the Subproject data synchronizes as expected.
  • Dependency Tracking is now ON by default. This provides for better cascading updates as their predecessors move.

For System Admins:

  • If System Timezone or System Admin Email are not set, the system provides warning messages with links to the specific fields in the System Admin screens.
  • If filesystem permissions are properly configured, the Module screen supports direct uploading.
  • The Reports module has a permissions check applied. Previously, it did not.. though the underlying data was filtered appropriately.
  • The core system supports configurable pagination for the Project List screen and a few others.

For Developers:

  • We replaced our old Javascript library (Mootools) with jQuery. It’s faster, easier to use, and widely supported.
  • Added approximately 40 Unit Tests covering areas such as CDate and other classes.
  • Added a call in the Calendar Module to display arbitrary date-related information. A reference implementation is coming in the next release.

For General Users:

  • We’ve added Czech and Russian translations. If the dice rolls work out, we’ll move to Kamchatka next.
  • We’ve set the field focus to the first text box on each screen.
  • Private Tasks are now respected on all screens including Gantt Charts.
  • We fixed a number of visual issues.

Finally, special thanks goes to community member Opto who consistently submits great bug reports, shares useful patches, and provides random insights that help and speed things along. Thanks!

And that wraps our releases for 2010.

This year we managed 1 Major Release, 3 Minor Releases, and 1 Patch Release. Most of the releases were a week or two later than we wanted but we managed to get all of them out on schedule. More importantly, each and every release has managed to provide new functionality and close bugs while collecting and responding to community feedback.

And in case you missed our recent coverage on SourceForge, check it out!

You can download web2project v2.2 from SourceForge now.

For the past couple weeks I’ve had fun asking that of people. I’ve asked it of prominent PHP developers, customers, major enterprise software organizations, and product evangelists. The only conclusion that I’ve come to is that no one has a clue. In order to add to the chaos, I thought I’d offer my opinion.

An enterprise application is a system or products that live primarily to combine and extend an organization’s existing data, functions, and systems to help people do their jobs better.

In terms of attribution, this overlaps quite a bit with the definition given by my friend and colleague Josh Holmes, a Platform Evangelist with Microsoft.

To explain this further, let me put some boundaries on my definition:

First, the size of the team doesn’t matter. Facebook has hundreds of PHP developers on staff, but few would call it an enterprise application. That doesn’t discount the ability of their teams. Some of Facebook’s technology is amazing.

Next, the size of the application (lines of code) doesn’t matter. Most video games – especially MMO’s – have millions of lines of code, some may even have billions.

Next, it’s not the amount of traffic/usage that defines enterprise. The ‘I Can Haz Cheeseburger’ network is something like an estimated 178% of the web’s traffic.

Finally, it’s definitely not the development process. With the advent of cheap/free unit testing, deployment, and infrastructure tools, the most cash-strapped startups can have rock solid processes.

I think the key to all of this is intent. The goal – not necessarily the result – of most Enterprise Development is to make someone’s job easier or more effective by pulling together information and presenting it in new ways. Business intelligence, ERP, CRM, and reporting systems all fit into this category.

So why is this important to web2project?

I’m writing about this concept in this space because this is key to our Vision for web2project. Our goal is to make and improve the system based on real-world feedback, needs, and requests. We already work to pull together different data sources whether you consider the Project Importer to import Microsoft Project XML or the iCalendar feeds to publish data where the team members need it. Further, we support LDAP authentication so people don’t need to remember yet another password. Adding IIS support in January was a small but significant step.

Our Vision going forward is that web2project can be dropped into any organization’s existing infrastructure and simply work. It should be able to authenticate using the organization’s architecture. It should be able to retrieve from and broadcast data to CRM and billing systems. Assuming it is technically feasible with PHP, it should support the database system and web server software your organization already uses. Finally, and most importantly, it should make your team members’ jobs easier and give them better information.

If we fail in those things, web2project becomes a toy, not the enterprise tool it should be.

While we haven’t announced new team members in the past, I figure we should use this blog for something useful…

I’d like to formally welcome Benjamin Young as a Provisional Member of the Web2project Team.

You may not recognize his name, but you may recognize some of his work. In the ancient past, he founded BigBlueHat and started the PHP-based BlueInk CMS. More recently, he accepted a job with CouchOne – the company started by the creator of CouchDB – and is singing the praises of RESTful databases. Of more immediate interest to the Web2project community, Benjamin is known as TheIdeaMan in the dotProject community where he has served as a core contributor leading a great deal of the development on their stable_2 branch for the past couple years.

He brings a number of benefits to the team immediately: First, since Web2project was originally based on dotProject, he joins us with understanding specific to our application’s overall infrastructure and code. Next, his experience in the community gives him insight to what our current and potential users want and need. Finally, his background with RESTful web architectures adds to our expertise for the current and continued API development.

If you’d like to learn a bit more about Benjamin, check him out on GitHub –  BigBlueHat or TheIdeaMan –  or explore his blog.