BuBOL Development Frequently Asked Questions

Q: Why didn't you use PEAR::DB, PEAR::HTTP_Session, PEAR::PurpleMonkeyDishwasher, etc. ?

A: First of all, I think PEAR is an excellent idea. By day, I'm a mild-mannered Perl hacker, so I know how indispensable CPAN is to the Perl community, and I think it's fantastic that the PHP community is doing something similar. However, there are a few reasons why I chose not to use several PEAR packages that seemed like they'd be a perfect fit for BuBOL:

  1. Dependency Hell: There have been a couple of PEAR reliant PHP apps I've gotten in the past that had a dependency hell situation going on. Example: Application Y requires PEAR Package A, B, and C (each with specific minimum version requirements). Turns out I didn't have Package A at all, so I installed it, but then I discovered in order to use Package A, I needed to update my version of Package D. So after doing that I found myself in a similar situation with Package B, and so on, and so on. I realize this can be gotten around by simply distributing required PEAR packages with your application, but one could argue that defeats the point of breaking software into re-usable, distributable modules (and that's another discussion beyond the scope of this FAQ ;-)). This leads into...
  2. Reliance on a single infrastructure package: From what I've seen, all (most? some?) PEAR packages rely on the top level PEAR package. While I'm no expert on PEAR, it seems that the PEAR package itself provides several shared/infrastructure methods for the rest of PEAR. While this seems like a good idea in theory, I personally don't really care for it in practice (see the previous point on dependency hell). Of course you could throw it back in my face by saying "But Russ all (most? some?) classes in BuBOL rely on a single infrastructure class!". And you'd be right, but in my defense: a.) BuBOL is basically a package in its own right, so who cares how the internal class hierarchy is structured and b.) I consciously chose to design BuBOL that way, that none of the pieces of BuBOL could be incredibly useful without the others. It was my choice and I made it ;-P
  3. Purely academic/pathological reasons: I'm a geek, there's no denying it. And like many geeks, I get impulses to take it upon myself to do some totally round-about, reinvent-the-wheel, pain-in-the-ass project simply for my own twisted sense of self satisfaction. Why didn't I use PEAR::DB? I woke up one morning and told myself, "I'm gonna write my own abstracted data persistence layer in PHP, and I'll have a damn good time doing it!". And there you have it.

And (for the moment) I'm quite happy with my choice of packaging, architecture, design, etc. So before you ask, no, there aren't any secret future plans of using any parts of PEAR. I've made my choice, and isn't that what FOSS is all about? :-) -rmt_4 (aka russ)


Q: What tools do you use/recommend for BuBOL development?

A: The following is a list of tools that I personally use and I think are incredibly helpful for developing PHP/MySQL apps. While many of them are listed for Win32 only, some of them are Java based (and therefore fairly cross-platform :-)) there are probably versions of similar tools for other platforms as well.


Q: Recommended Reading?

A: Here's a list of books I've found helpful for PHP and design/development in general. All the links go to Bookpool.com, which if you don't know, offers some very nice discounts on technical books. I'm not getting paid by them in anyway, I just think they're a great store more people should know about :-)


$Id: development_faq.html,v 1.1.1.1 2005/01/01 19:48:07 russ Exp $