Philip Greenspun: «A naive implementation from these specifications would result in the creation of six database tables: articles, comments_on_articles, news, comments_on_news, questions, answers. From the RDBMS's perspective, there is nothing overwhelming about six tables. But consider that every new table defined in the RDBMS implies roughly 20 Web scripts.»
A few days ago, I suddenly realized how prototype chaining could solve the problem Greenspun describes in the right way for Helma. In its current primitive stage, only functions and properties are inherited over Helma prototype chains. Database mappings are not, and this makes it necessary to define database storage with a separate table for each prototype. By making also the db mapping inheritable (just extend a relational prototype and don't define a separate db mapping), it will be very easy to define specialized prototypes by just overriding what needs to be overridden. For instance, on helma.org there could be prototypes called "question", "answer", "faq", "comment" which all inherit from the story prototype and are stored in the same story table, but override some functionality in story - either just the way they are displayed, or also the way they're edited, by whom they may be edited, created etc. Since objects with different prototypes are stored in the same table, there has to be a way to keep them apart, which can be done by defining a _prototype column in the database table where the name of the prototype is stored for each row/object.
I think when we get there the whole prototype hierarchy stuff that started with the one-for-all hopobject prototype will finally make sense.
From the triple-true department: «Let's go back to 1993. That's when we started developing the domain knowledge that led to the ArsDigita Community System product. Most people who've made money in the software business are those who wrapped their minds around a problem earlier than others. You can't base a business on "we'll be better programmers than the folks at Microsoft and Oracle"; each company has enough computer science PhDs and expert software engineers to bury 100 competitors. You can, however, base a business on "we'll attack this problem a few years before Microsoft and Oracle notice it and recognize it as a problem."» - Philip Greenspun again, via LNGR
Health update: I hope to be back working full time in about a week. Right now I do work a few hours each day, but I'm not yet fit enough for programming.
Als Erster die Ideen und die Technologie zu entwicklen - fein, aber i.A. nicht besonders lukrativ. Als Erster eine Wertschöpfungskette (inkl. Kunden sogar) einem mehr oder weniger neuen (bzw. unbearbeiteten) Markt zu implantieren - winner.