Skip to content

Instantly share code, notes, and snippets.

@katanacrimson
Created December 23, 2011 20:40
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save katanacrimson/1515305 to your computer and use it in GitHub Desktop.
Save katanacrimson/1515305 to your computer and use it in GitHub Desktop.
why phpbb failed
why phpbb has failed the open source movement
in response to the daydreaming present in http://www.phpbb.com/community/viewtopic.php?f=64&t=2143698
note: this is from the standpoint of the everyday admin, running 3.0.x - changes already patched into 3.1.x are not taken into consideration as they are not readily available for public use. if you want pending changes considered, get off your ass and get a release of 3.1.x out.
---
issues
- contributing
pain to contribute due to systems being heavily fractured
patch process:
- (proposed change, RFC only) discuss the need for the RFC on phpbb.com
- (RFC only) discuss the RFC, specific implementation issues, design, etc. on area51
patch can be mired in political BS for absurdly long, causing frustration for the contributor and eventually abandonment
- create a topic branch on their own fork on github
- format commits with [phpbb3-ticketid1234] and so on for the topic branch
why not link to the issue you're trying to fix directly? the commit should summarize changes /of the commit/, not reiterate the issue you're working on
- link to the topic branch on the JIRA bugtracker
yet another system to login into
constantly unresponsive, slow
ignores already provided systems (github issues) which is already integrated and supports most of the features necessary for contribution
count it. three, or even four separate services to log into, post stuff on, commit to, open new issues on, etc. to just open a patch which fixes a small issue.
the contributor is likely to say "screw this" and find something else more worth their own time.
- design
- integration
integration ends up being a nightmare due to lack of namespaced code (neither php 5.3 nor PEAR namespacing is present) for functions, classes that are defined
causes issues with conflicting function naming, conflicting behaviors of similarly named functions between softwares being integrated together
ex: mediawiki + phpbb, "user" class is defined in both, but is nowhere near the same.
the whole "you want a cms, get a cms" argument becomes moot when you take the time to realize that it either means the user ditches phpbb, has to use two systems with separate logins, or has to bridge them together (which usually isn't reliable because of aforementioned integration issues)
- organization (or lack thereof)
includes/functions.php - that's all. speaks well enough for itself.
code duplication for JS code between styles, admin panel styles, etc.
moderator control panel is a nightmare, still.
- proprietary design
all javascript-based functionality still uses home-brewed javascript (with everyone's favorite workaround basis, browser detection) ....y u no jQuery. seriously, it's not 2003 anymore. jQ uses feature detection, unifies support for most javascript functionality and offloads browser JS bug issues onto someone else
mods are designed using MODx install files and require manual modification of core files. zero hooking functionality for simple behavioral modifications is present, /still/.
- efficiency
lazy-loading, dependency injection, and autoloading are not very well leveraged for minimizing memory use and processing
it is also impractical to lazy-load+autoload due to the lack of an organized codebase
javascript, css files are not provided in both a minified and unminified state, requiring more bandwidth+server time to transmit a bunch of comments and whitespace that no average user actually cares about
style.php for serving css dynamically. y u no generate static css files and serve that instead. seriously, let's pack on the sql queries.
- file modification monitoring
due to the current nature of having to modify core files to modify behavior, users can't simply lock down all files to the "natural" state and use checksum verification (using vendor-provided checksums) of core files to detect any security breaches
also applies to code signing - phpbb cannot be distributed using an openssl-signed phar because of the common need to modify core files (and because there is no autoloading, one cannot simply provide a "new" file in another autoloading path)
- user friendliness
moderator control panel lacks a lot of functionality for mitigating spam - cannot dump all of a user's posts, remove a signature, clear profile details, etc. without an administrator doing so (which proliferates forum spam)
constant functionality duplication in ACP
zero openid or unified external login functionality in core
generic confirmation messages. "Would you like to continue with this action?" == "Okay, I've deleted fifteen thousand posts just now. I hope you enjoy the panic attack that will occur in three minutes, because you weren't provided with a useful confirmation message that would let you figure out that you clicked something you did NOT want to click)
- community
- generic ego-ridden project full of chest thumping "developers" that do very little to contribute, and demand that they be treated with respect because they are a volunteer
said developers will then pick and choose things they want to work on, and ignore everything else. this is the attitude of a contributor, not a developer. if you do not wish to work on the boring stuff, resign your position and just send pull requests in.
- internal politics is given greater priority than getting things done. less drama, more work.
Maybe someday there'll be a decent bulletin board software that's free and open source that we all can use. Until then, we sadly have to "make do" with either the open source software that is already available, or go with paid+proprietary solutions.
Wonderful way to paint open source.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment