Enterprise plaforms – teaching new dogs old tricks
Oren is talking about building a substrate for an enterprise platform. This has been something I’ve wanted to do since I first got my hands on c# and the rest of the .net framework in 2001. I’ve never done it because it always seemed that a one size fits all solution would be unworkable.
At the time – the best web architecture I knew of was the ArsDigita Community System (still available and maintained as OpenACS). What Oren is describing sounds similar in many ways.
The ACS architecture is based on the days when Oracle and TCL were good options for building web based systems…. but the underlying design is still very very good (e.g. it was the first place I every saw the Party pattern). They were focused on designing good data models and separating concerns.
They have the following available in their kernel:
- Parties, Users and (nestable) groups
- A permissions system which supports per “object” (think row) permissions.
- A package manager which allows you to install (and remove) modules of functionality into an existing system (including schema changes, new routes etc). e.g. adding a e-commerce, blogging or threaded discussion module is a matter of clicking in a web ui.
- Scheduled tasks
This thing was and is pretty scalable (it runs the photo.net community).
It’s over 10 years old still a source of good ideas. I recommend taking a poke around their documentation and seeing what you can learn.
(I remember reading once that Philip Greenspun – the original ACS designer was asked by Microsoft to build a new version while the .net framework 1.0 was in development as a showpiece. For some reason he didn’t but I always felt that it was a shame this never happened).
No Comments Yet