Log edited with Logedit 2.7.0pl on Sat Oct 25 19:07:20 CDT 2003 Word-wrapping at 76 ----------------------------------------------------------------------- Debian Hall(#2548RaJ) / /^\/^\/^\ \ |"""""""""""""""""""""""""|~~~~~~~~~~~~~~~|"""""""""""""""""""""""""| | LECTURER |~~)~~~~~~~~~(~~| TOPIC | | |~~) (~~| | | Trispis |~~) ___ (~~| Core Notions | | | |~~) Y (~~| | | | |_________________________|\___ | ___/|_________________________| | |/ (_ (_ (_ (* (_ \|==\_____/==|/ _) *) _) _) _) \| \ (_ (_ (_ (_ (* \|___|/ *) _) _) _) *) / (_ (_ (_ (* (_ _) *) *) _) *) (* (_ (_ (_ A _) _) _) *) (_ (_ (_ / \ _) _) *) (_ (_ / \ _) *) (_ / \ *) / \ do: -help lecture Present: Chimera, Javelin, Blue_Guest, Demae, Alric, Walker, Mystery8, Luke, Territan, Grinna, Huz, Nymeria, Balerion, Zebranky, Cheetah, China, Viila, Gallahad, Tyr, Tammy, Elvira, Pozzo, Colputt, Ellis, Boris Trispis carefully walks up the narrow stairs to the stage. Trispis has left. Trispis has arrived. China says, "also, most all of us like rping and building text mushes for others to enjoy." Cheetah says, "Ender, you mean where we come together FOR nonsense? :)" Boris takes a picture of richard Zebranky says, "dude i m lvl 241 u sux i m leet" Trispis says, "thank you, richard." Zebranky coughs. Tyr says, "Zeb, shush." Ender nods to China. "This is where we come to learn and socialise. Alright, Trispis has begun!" Walker asks for an autograph ;). Grinna woots for T. Trispis says, "NOTICE: This presentation is via a quoted script (already running, so it can't be adjusted). If it runs too fast for your reading speed, just keep up as best you can... there will be a log." Trispis says, "NOTICE: The following three URLs will be referenced in the latter portion of this presentation if you want to load them in advance: http://www.elsemu.net/~nemo/cron_bits.txt (and cron_alphanum.txt, and cron_both.txt)." richard signs an autograph. You know it's genuine because you can't read it. richard has disconnected. Trispis says, "NOTICE: Now, the presentation..." Trispis says, "I have some good news and some bad news." Trispis says, "The bad news first..." Trispis says, "I'm not here to discuss the WARPEDcore project. The WARPEDcore Manifesto (http://www.elsemu.net/~nemo/warpedcore), less than 2 years old, is already beginning to show signs of age. Why? Mostly due to an abundance of features added to the Pennmush codebase." Walker acks, and scared away the guy. Trispis says, "The good news, however, is..." Tyr says, "Walker's a scary guy." Trispis says, "I'm here to discuss the impact of these new features upon the WARPEDcore project. Numerous new possibilities exist, and I'm going to highlite some of them." Trispis says, "My hope is that, by the time I'm finished talking today, someone here will be thinking to themselves... Self . o O (Eureka! All the pieces and parts are here and someone has even made a rough diagram for how to piece it all together... I'm gonna do this!) ... possibly even being motivated sufficiently to follow through on that thought." Luke says, "Or is he just pretending to be a scary man?" Ender says, "We are so evil. Thankfully, Trispis is a shell script." Chimera has arrived. Trispis says, "So, let's start where the manifesto ends... We have this notion of a modular, centralized dohicky which automagically does some cool stuff to help manage and maintain a MUSH (if you haven't read the manifesto, that's about as well as I can describe it in 25 words or less)." Zebranky /bin/bashes Ender Trispis says, "When I finished writing the manifesto, I started working on code. I wrote a few draft pieces, then realized that a common installer was useful when trying out different versions of the same code. So, I put a couple weeks into writing an installation package which is sorta self-cleaning, and which I applied to a couple of my other softcode widgets, packaging them up for distribution." Trispis says, "I then got sidetracked into a few other projects, and just as I was about to return to working on the warpedcore code again, my life drifted away from MUSHing. But, during that time, I did have a chance to pick out a few key goals for what I wanted to get accomplished -- i.e., if I ever have an abundance of time and motivation for this sort of thing, this is where I would pick up this project." Trispis says, "First and foremost would be a cron. In fact, I had begun discussing a cron with Raevnos around this time (that discussion prompted me to set up licensing for WARPEDcore). So, I guess to summarize at this point -- my previous work on this whole thing led me to believe that a cron system seems to be the 'most central' element of the coded portion of a 'core' (a belief which I still maintain)." Trispis says, "Or, to say it another way, if I were to make a prioritized list of what needed to be coded for the core, it would have 'a cron system' at (or near) the top." Trispis says, "The other matter that was present in my mind (as indicated earlier) was that of an installer or, more generically, 'installation issues'." Trispis says, "And, equally important, is the notion of the core's registry." Trispis says, "Combine all these together and you can see one of two things:" Trispis says, "a) a coding paradox (if the cron is a module that needs included in the registry, and the registry requires the cron in order to be self-maintaining, which should be installed first? ... the registry needs the cron which needs the registry which needs the... d'oh!!)" Trispis says, "or. . ." Trispis says, "b) a solution to the question of 'what to install first?' -- install the cron and the registry first (simultaneously) and make them an interdependent, inter-defining couplet (the demands, needs, and possibilities of one shaping and evolving the life of the other)." Trispis says, "Ok. Cool. So basically, I knew what I would be doing if I ever went back to work on this project." Trispis says, "Or, did I . . . ?" Trispis says, "Around this same time, Penn added a bunch of new goodies. Things which immediately resolved a lot of little nagging issues that I haven't even mentioned yet." Trispis says, "For example: where's the master room? (if I'm going to install this 'cleanly', it needs to be put in place -- most packages leave the person installing to do that bit)." Trispis says, "Pennmush added config(). I can now not only find out the #dbref of the master room, but I can find out if side-effects are enabled without having to do code tests... I can find out all kinds of interesting stuff ... not only with my installer (which now needs rewritten), but with the operating core as well." Trispis says, "And that cron system I mentioned? It is now easier due the addition of @wait/until. The old days of 'doing on-the-fly math to figure out how many seconds till HH:MM' are gone forever." Trispis says, "Attribute Trees (not yet part of all codebases, but as the manifesto indicates: it's a penn-centric project initially) hold all kinds of potential for dramatically enhancing and expanding the core. The registry, globalized functions, and standardized attribute naming protocols all stand to benefit from this new feature." Trispis says, "@flags can be introduced to further enhance processibility of certain datas. This feature could also dramatically enhance certain core identifications and delineations (~ == warpedcore module?)." Trispis says, "ctime() is now visible and mandatory, so there is a new element of reliability and trustworthiness in identifying core elements. And sha0() provides a type of confirmation integrity previously unavailable." Trispis says, "terminfo(), width(), lports(), etc., all add small expansions to the amount of usable information available not only to the core, but potentially to any coded systems." Cheetah . o O ( LOCAL_MUSH`Softcode`Microsoft`Mush_explorer ? ) Trispis says, "Ancestors -- ultimate parents -- this SCREAMS 'modular global room and exit parent' (anyone besides me casting sidelong glances at 'places/mutter'?)." Trispis says, "And wrapping this all together, we now have @config/set, thus making it possible to code things which can: 1) check current configs with config(), 2) report findings and recommendations to the user, and 3) prompt the user with options for changes like commercial installers do with radio buttons for 'small, medium, large, and custom' install options." Ender . o O (PennMUSH API Call Library?) Trispis says, "A somewhat whole picture can easily be drafted at this point... globals modules services \\ || // +----CORE----+ | cron | | registry | +------------+ // \\ administrations users " Trispis says, "Ok. That's a conveniently oversimplified diagram, when the fact of the matter is: none of that exists... at least not in the context depicted." Trispis says, "But how far away is it? How difficult would it be... how much work would be involved in assembling all these pieces and concepts into an operational core?" Trispis says, "Not as much as one might think." Trispis says, "Let's go back to that cron for a few minutes to see why..." Trispis says, "We need an optimized cron. Something which provides maximum potential to both the core, and the game in general. Yet which also must be inter-connected with a registry (a MU* portions maintenance and accounting widget)." Trispis says, "Are there cron systems available? Of course. Myrddin has a nice one. Raevnos wrote a pretty nifty one for M*U*S*H a couple years ago which even uses an internal registry. So why not use one of these? Especially Raev's... which superficially appears almost to have been written specifically for the warpedcore design (described above) ??? why not?" Trispis says, "The simple fact of the matter is: I drifted away from MUSHing (as I indicated earlier). There was no 'reason' per se." Trispis says, "So, is there any reason not to just pick this up right here and push forward? Raev's a good guy,... surely he'd be open to some sort of contribution negotiation..." Trispis says, "But wait..." Trispis says, "Javelin recently implemented a cron of a wholly different type. A chat channel broadcast based cron. Objects can connect to this channel and listen for the various and sundry broadcasts." Trispis says, "Jav's also has a very intrigunig side-effect -- systems using the cron all happen to be conveniently connected to a specific chat channel <-- or, phrased a bit more organically: objects using the cron have created a sort of registry of their own via the cwho() function." Trispis says, "Raev's has an added benefit of having objects registered in various 'intervals', but Jav's is a simpler implementation which doesn't need any maintenance after a purge." Trispis says, "Jav's can also be easily extended to do broadcasts as frequently as once a minute (Jav's currently is only once an hour) without any noticable increase in overhead or workload." Trispis says, "A channel based system could be expanded to have multiple channels for the various frequencies (hourly, 2hourly, whatever).. plus channels for other broadcasts (core system messages, if such a need arises, perhaps?). But is channel proliferation desireable? probably not." Trispis says, "But, a channel based system does allow for a significantly larger amount of information to be broadcast each 'tick'." Trispis says, "Jav's version does multiple emits for hours which fit multiple categories." Trispis says, "example... <-Clock-> HOURLY: Wed Oct 22 20:00:04 2003 <-Clock-> HOUR20: Wed Oct 22 20:00:04 2003 <-Clock-> FOURHOURLY: Wed Oct 22 20:00:06 2003 like that. This isn't bad on an hourly basis. But if broadcasts were every minute, the ticks on the hour would be hugely spammy... especially if a wider variety of less frequent intervalls were included (5min, 10min, etc.)" Trispis says, "So, in the last 2 weeks, since committing to give this presentation, I played around with the channel concept and came up with some modifications and enhancements." Trispis says, "First, I dabbled with a bit-based system which uses 1's and 0's to indicate whether or not a given broadcast tick was a member of the various intervals (daily, 12hourly, 8hourly, 6hourly, 4hourly 3hourly, 2hourly, hourly, 30m, 20m, 15m, 10m, 5m)" Trispis says, "http://www.elsemu.net/~nemo/cron_bits.txt" Trispis says, "The objections to this mainly pertained to the fact that a bit-based system (strings of 1's and 0's) isn't conducive to human implementation." Trispis says, "So, I dabbled with another version using an alphanumeric (more 'human readable') implementation, using the same intervals." Trispis says, "They each have their advantages." Trispis says, "http://www.elsemu.net/~nemo/cron_alphanum.txt" Trispis says, "The alphanumeric would be easier to document/explain in a help file, and easier for most folks to get adjusted to using.." Trispis says, "But the one with bits allows you to do a few things the other doesn't, such as listen for 5m intervals that AREN'T also 15m nitervals (*0?1)." Trispis says, "So, I combined them and added a snippet of code which tells you the number of the weekday (3rd Monday in October, for example)..." Trispis says, "http://www.elsemu.net/~nemo/cron_both.txt" Trispis says, "The only questions I haven't investigated too deeply so far are: Which timestring to include (local or utc)? whether or not it's desirable or necessary to broadcast both local time and utc time? .. and ... Do 8 hour crons happen at 00:00:00: local time or UTC time if I'm in tz -5?" Trispis says, "Nonetheless, this particular cron design appears to fulfill the core's needs quite nicely... flexibly... thoroughly... efficiently, so for now I have dubbed this 'corecron0' (anticipating the potential for a 'better' version to emerge sometime in the future)." Trispis says, "The most important thing to note at this point, though, is that it makes our diagram seem MUCH more easy to implement. globals modules services \\ || // +----CORE----+ | cron | | registry | +------------+ // \\ administrations users " Trispis says, "And since there's a high likelihood that I will drift away from MUSHing again before I finish any of this, I'll close by saying this..." Trispis says, "As I said when I started, my hope is that, now that I am done speaking, someone among you (or maybe someone who reads this log) will be motivated to snatch all this up like a set of virtual tinker toys and start piecing it together. It's all there now. All of the major dilemmas have been confronted, identified, and potentially resolved in most cases." Cheetah says, "corecron0(8)" Trispis says, "Go forth and write bountious and fertile modules." Trispis says, "... oh, and speaking of modules..." Trispis says, "If you do decide to pick this up and run with it, I have a suggestion/request..." Trispis says, "Once you get a core system running, make your first module be a 'to do list' manager with multi-list and multi-user capabilities." Trispis says, "I will take questions now." Colputt says, "What version patchlevel is this -Cloc- channel in?" Trispis says, "Javelin's currently running one? I have no idea. You'd have to ask him (not sure if it even has a version system). Mine? Mine's not implemented, so it's version 0." Javelin says, "The -Clock- channel is a M*U*S*H thing, all in softcode." Colputt says, "Ok Thanks" Cheetah says, "Of course, next thing to implement would be a general 'cron broadcast parser' parent or something, I'd presume? :)" Viila says, "Trispis, you could output both the bitmask and human readable version of the timestring." Trispis says, "Cheetah first..." Viila says, "Never mind." Trispis says, "no." Viila wasn't paying enough attention :) Trispis says, "the cron broadcast parser would be help files. Players simply read the help file for explanation of the broadcast output and implement ^listen or @listen based systems." Trispis says, "Viila: 3rd URL." Viila says, "Yes. *feels sheepish*" Trispis says, "Any other questions?" Boris nods no, and is still thinking of the ramifications of all that. Trispis says, "if there are no other questions, I'll turn the stage back over to Javelin." Boris claps Viila applauds. Trispis says, "thanks for your time and attention." Ellis claps China applauds. :) Javelin applauds. Cheetah claps. Grinna applauds. :) Trispis goes down the few steps to the seating area. Trispis comes down the few steps from the stage. Trispis has arrived.