Skip to main content

APIs matter

Victor Moholy:

A bad API, like a bad novel, feels like a trick: key information is withheld and simple relationships are hard to deduce.

I had one of those "a-ha" moments reading this. ("A-ha," I thought. "I feel a rant coming on.") This is exactly why, after building probably one of the largest web applications done with OpenACS 3.2, I never managed to like the 4.x (and now 5.x) series of that toolkit.

OpenACS 4.x and later suffer from Second-system syndrome. The effect is rather Zope-like: instead of a learning curve, you have a vertical cliff to scale before you can accomplish anything interesting.

Add in bizarre and arbitrary api changes, it's no wonder nobody except the core team really got on board with the later OpenACS versions. (I suspect that the "everything must be a named parameter" had its genesis in the proliferation of functions taking over a dozen parameters. Deprecating all functions that don't require named parameters is both taking things too far, and fixing entirely the wrong problem!)

Which is a shame. OpenACS solves a much larger problem than most web toolkits attempt, giving you registration support, permissioning, etc. out-of-the-box. The 3.x series may have solved only 90% of the problem, but it did so in a much more approachable way than 4.x. (Or Zope, the only other framework that really tried to tackle this problem in that era. Don't even get me started on J2EE systems.)

Ah, well. RIP, OpenACS. It looks like Django is trying to solve some of these same problems (e.g., its permissioning support and "pluggable applications") while retaining a more lightweight approach. In this respect, Django is much more than a me-too "Rails for Python." Of the would-be Python Rails killers (and Rails itself), Django alone impresses me for attempting more than the same old, same old.

(Which reminds me -- I haven't seen this fellow's django-and-rails comparison linked anywhere, even though it's a month old. Guess I don't follow the right blogs. It's worth reading if you don't know much about one or the other, despite his lamentable lack of taste in prefering Ruby.)

Comments

JacobHarman said…
3dcart improvement stage is a facilitated answer for Web based business administrations to fabricate appealing and proficient shopping basket on in an internet based store. It is not difficult to create and coordinate with your internet based site with next to no need of mastery in web advancement. To utilize the high level elements of the 3dcart Web based business stage, you can employ 3dcart designer effectively in the commercial center at reasonable costs>> ecommerce developer company

Popular posts from this blog

Why schema definition belongs in the database

Earlier, I wrote about how ORM developers shouldn't try to re-invent SQL . It doesn't need to be done, and you're not likely to end up with an actual improvement. SQL may be designed by committee, but it's also been refined from thousands if not millions of man-years of database experience. The same applies to DDL. (Data Definition Langage -- the part of the SQL standard that deals with CREATE and ALTER.) Unfortunately, a number of Python ORMs are trying to replace DDL with a homegrown Python API. This is a Bad Thing. There are at least four reasons why: Standards compliance Completeness Maintainability Beauty Standards compliance SQL DDL is a standard. That means if you want something more sophisticated than Emacs, you can choose any of half a dozen modeling tools like ERwin or ER/Studio to generate and edit your DDL. The Python data definition APIs, by contrast, aren't even compatibile with other Python tools. You can't take a table definition

Python at Mozy.com

At my day job, I write code for a company called Berkeley Data Systems. (They found me through this blog, actually. It's been a good place to work.) Our first product is free online backup at mozy.com . Our second beta release was yesterday; the obvious problems have been fixed, so I feel reasonably good about blogging about it. Our back end, which is the most algorithmically complex part -- as opposed to fighting-Microsoft-APIs complex, as we have to in our desktop client -- is 90% in python with one C extension for speed. We (well, they, since I wasn't at the company at that point) initially chose Python for speed of development, and it's definitely fulfilled that expectation. (It's also lived up to its reputation for readability, in that the Python code has had 3 different developers -- in serial -- with very quick ramp-ups in each case. Python's succinctness and and one-obvious-way-to-do-it philosophy played a big part in this.) If you try it out, pleas

A review of 6 Python IDEs

(March 2006: you may also be interested the updated review I did for PyCon -- http://spyced.blogspot.com/2006/02/pycon-python-ide-review.html .) For September's meeting, the Utah Python User Group hosted an IDE shootout. 5 presenters reviewed 6 IDEs: PyDev 0.9.8.1 Eric3 3.7.1 Boa Constructor 0.4.4 BlackAdder 1.1 Komodo 3.1 Wing IDE 2.0.3 (The windows version was tested for all but Eric3, which was tested on Linux. Eric3 is based on Qt, which basically means you can't run it on Windows unless you've shelled out $$$ for a commerical Qt license, since there is no GPL version of Qt for Windows. Yes, there's Qt Free , but that's not exactly production-ready software.) Perhaps the most notable IDEs not included are SPE and DrPython. Alas, nobody had time to review these, but if you're looking for a free IDE perhaps you should include these in your search, because PyDev was the only one of the 3 free ones that we'd consider using. And if you aren