Re: More on meta-ness (long)
Will Partain <[email protected]> Tue, 19 Mar 2002 10:44:06 +0000
| Newsgroups | gmane.comp.sysutils.ark.devel |
|---|---|
| Message-ID | <[email protected]> |
I want to chip in a thought or two, keying off Jonathan H's old message; but quite relevant to Daniel H's recent poking... Parenthetical remark first: > So I've got a new syntax for 'once-per': > > <foo> > <code once-per="host:ALL"> ... </code> > </foo> Could that be changed to (I don't know) host=.:ALL, simply because <team>:<thing> has been a "long" way to name a thing for a while...? I am wondering if our "push"/"pull" `problems' do not stem from our `virtue' of "site-at-a-time thinking". Our goal has always been to have a notation that is good for describing a *site*, not just a single thing (host,user, ...) So when we have <foo><code ...>some code here</code></foo> we say "execute the code wherever required to make 'foo' true for the whole site", and the once-per=, proxy-hosts and all that are ways to make the process sane. (e.g. to do a compile just once for a platform, rather than on every host-instance of that platform). Tying in with what Jonathan's been saying: what's so special about hosts for making something right "for a whole site"? If I have hosts, users, websites, and routers as "things", should the semantics not be "execute the code across as many hosts, users, websites and routers as required to make 'foo' true for the whole site"? Put slightly more formally, if I have things of type A, B, C, ..., Z, and 'foo' is a field in a type A thing, then forall B, C, ... Z, (note other A's omitted) make sure that 'foo' is true. (Waves hands furiously...) Aside from the possibility of making things run even slower (every time we look at a field, we have to wander across *all other objects* seeing if there's something to be done...), we still have at least one major horribleness, which we currently have with non-code-valued things: <foo> <constraint><host-spec> hostA </host-spec></constraint> <string>I am String A</string> </foo> <foo> <constraint><host-spec> hostB </host-spec></constraint> <string>I am String A</string> </foo> At present, if you write thing.foo(), it's pretty random which value you'll get. I wish we could define this problem away. (Note to scared readers: don't let these ruminations scare you -- I am actually *pretty happy* with present ARK semantics/behavior. But I can't resist the hunt for something Quite a Bit Better.) Will