Vexon carefully walks up the narrow stairs to the stage. Vexon steps up to the podium, "Well.. we have another little hiccup in this hall's schedule." Raevnos says, "No lecturer?" Vexon coughs, "It would seem that way.. there is one possibility, but the party I need to talk to is currently idle." Chili carefully walks up the narrow stairs to the stage. Chili says, "hey" Chili says, "hmm, it was cancelled.. Hrmf." Vexon says, "Nope... well, here's Chili, speaking in place of Ari about OOMUS. My apologies for the delay." Vexon goes down the few steps to the seating area. Vexon comes down the few steps from the stage. Chili ggigles, "Lets see, i'm a little off guard on this so i'm speaking with no notes or anything." Announcement: Trispis shouts, "Chili will be speaking about OOMUS in Debian hall on behalf of Ari." Chili is getting some info on OOMUS real quick to have some stuff to talk about Chili says, "anyhow, OOMUS is a project that Ari, Rak & I are currently taking part in. Ari is in a sense ahead of the project however." Chili says, "the main freature that we're advertising about it is the extensibility in adding modules to advance the features in it." Chili says, "like lets say you want to add a new parser to it. Which by default it comes with the MUSHParser(well right now its running off of a LISP parser Ari coded until one is done)." Chili says, "anyhow this server was written from scratch in C++, to have a more modern design than the other MU* servers uot there." Chili says, "well, for an example of how it is done.. The mail & chat systems will be both be coded in modules when they are released. OOMUS in itself is GPL'd so when its released you can do as you want with it from that license." Chili says, "anyhow, being totally unprepared & stuff for this i'll just skip right to the questions." Chili says, "alright VExon." Vexon stands and asks, after thanking Chili, "When do you expect a beta version to be available?" Chili says, "at the current rate it is going, we're hoping to have a release out by the beginning of 2000. We haven't done much work the late of september & beginning of october however because the CVS accounts have been messed as well as my linux partitiosn got messed up a little bit back so we have to redo some code." Vexon nods and says, "May I ask another?" Chili says, "oh yes, sorry Raev.." Raevnos is just wondering how much design and planning you did before starting to code. But I can wait till after Vexon's second question. Vexon smiles, and continues on, "What aspects, other than the codebase and modularity, are different than PennMUSH?" Chili says, "well, we're trying to keep it compatible with pennmush. Thats why we're going with MUSHCode as our default parser, but through installing another parser that was completely different from penn's & other such modules it would have no resemeblence of penn what soever." Vexon hrms, "Very interesting. Thank you." Vexon retakes his seat Chili says, "and Raev. We have done alot of planning as we have done with all other things we have, we setup a dev board on SM where we're all at as well as a general OOMUS board for people to post ocmments & suggestions about it. Most of the suggestiosn have came from the dev team though." Chili says, "I'd say in reality however we took about 1-2 weeks in planning before we actually took it on." Chili says, "the funny thing is, OOMUS the idea of it started out as a joke, & Rak took it seriously & started dragging us on to do it. :P" Chili says, "and before you know it Ari was doing the networking code. :P" Chili says, "no more questions?" Vexon grins at the last comment and shakes his head. Chili says, "ok.. I'm gonna yell at Ari, he made me miss the last part of the 70s show. :P" Chili goes down the few steps to the seating area. Chili comes down the few steps from the stage. Chili carefully walks up the narrow stairs to the stage. Chili scrams back up the stage Vexon carefully walks up the narrow stairs to the stage. Chili poitns to Apocalypse, "yes?" Chili ahemmms, "Apocalypse?" Chili says, "ok, Apocalypse changed his mind. I'll try to get Ari in on a K101 show sometime to discus more about it. :)" Chili bows as he exits the stage. Chili goes down the few steps to the seating area. Chili comes down the few steps from the stage. (ARI eventually gave his presentation a week or two later... it is attached below.) Announcement: Trispis shouts, "Ari will begin his presentation about OOMUS in RedHat Hall in just a moment. @tel #12, then rh, to attend." RedHat Hall(#2602RVa) / /^\/^\/^\ \ |"""""""""""""""""""""""""|~~~~~~~~~~~~~~~|"""""""""""""""""""""""""| | LECTURER |~~)~~~~~~~~~(~~| TOPIC | | |~~) (~~| | | Ari |~~) ___ (~~| Coding Different: OOMUS | | | |~~) Y (~~| | | | |_________________________|\___ | ___/|_________________________| | |/ (_ (_ (_ (* (_ \|==\_____/==|/ _) _) _) _) _) \| \ (_ (_ (_ (_ (* \|___|/ *) _) _) _) _) / (_ (_ (_ (* (_ *) _) _) _) _) (_ (_ (_ (_ A _) _) _) *) (_ (_ (_ / \ _) _) _) (_ (_ / \ _) _) (_ / \ _) / \ do: -help lecture Present: Apocalypse, William, China, Grinna Ari shuffles some papers on the podium, and taps his microphone softly. Ari says, "Well, it looks like we're ready to begin." Joshua claps. Grinna applauds Ari says, "Some of you may know me, and others may not; so an introduction is in order." Ari says, "I'm Ari (pronounced like 'awry'), and I have been into MU* coding for a while now. Most of my hardcode work has been with PennMUSH, but I have also done extensive work with TinyMUSE, including a complete rewrite of its command parser. My work with PennMUSH has included many small hacks, and a few large modifications and additions, including a new powers system and a wonderful space system, although time constraints have caused me to hand continuation of that system over to another administrator of the place where I was developing it." Ari says, "I've seen a lot of code, and learned a lot about how MU*'s are coded." Ari says, "One thing at the heart of most of the available servers, and of all the good servers, that hurts them is that they are built on an outdated programming paradigm." Ari says, "They are programmed around code, whiel they simulate environments built around objects that can interact with eachother." Ari says, "Using the object-oriented approach allows the underlying program and the simulated environment to be more similar, and therefore makes the two meld together better." Ari says, "OOMUS stands for Object-Oriented Multi-User Simulation, and is programmed in the object-oriented language C++." Ari says, "C++ was chosen for numerous reasons, including its speed, its portability, and the fact that it is similar to C, which lets people used to hardcoding MU*'s easily move over to the new platform." Ari says, "OOMUS is designed from the ground up to include a large feature set, and to be well-organized." Ari says, "Every type of object in the simulation is represented in the code as a C++ class. The hierarchy's toplevel class is 'Object', and below that are 'Exit', 'Mobile', and 'Container'. Mobile and Container define behaviours, and are intended only as parents of other object types. Mobiles can have a location, and Containers can contain Mobiles and Exits." Ari says, "C++ allows multiple inheritance, so, for example, 'Thing' inherits from both Container and Mobile." Ari says, "Parsers for languages, such as MUSHCode (the default parser), are implemented as objects, and other parsers can be added. Each object has a language set on it, and the parser used to parse code run by that object is chosen based on that setting." Ari says, "One central feature of OOMUS is dynamically-loadable modules." Ari says, "These can be loaded and unloaded while the server is running, and are capable of modifying almost all aspects of OOMUS, without requiring you to touch, or even have access to, OOMUS's core code." Ari says, "You can add object types, commands, parsers, and more through modules." Ari says, "The base command and function sets, the @mail system, and the chat system are all going to be distributed as modules, so you can replace them if you desire." Ari says, "One thing you might wonder about adding object types is how they will be stored on disk." Ari says, "The answer is a pleasing one: you simply write a few lines of code to read and write the data elements of your object type that aren't in any of its parents, and the data is stored in the main database." Ari says, "Are there any questions so far?" Joshua has a question. Ari looks towards Joshua. "Yes?" Joshua says, "You mentioned that parser languages are implemented as objects. Each object has a language set on it..." Joshua says, "Can an object have more than one language set on it?" Joshua says, "e.g. MUSHCode and TCL" Ari says, "Unfortunately, no. If you want to mix languages, it will require the use of multiple objects, at this point." Joshua says, "Okay. That's my only question." Ari nods. "Are there any other questions?" Joshua has another. Ari says, "Yes?" Joshua says, "would it be possible to impliment multi-language support in the form of attribute flags? So that an object could be set MUSHcore, but one (or more) of it's attribs could be specifically flagged TCL." Ari says, "It would be possible, but it would reduce efficiency..." Joshua says, "make a module for attribute flags, for example, that would inherit from all of the language modules?" Joshua says, "Okay. Really. That's all of my questions. (;" Ari smiles. "If you have a question at any point, please speak up. This is an information session, not the realization of a sick desire to put the world to sleep." Ari says, "A quick status report on OOMUS..." Ari says, "The database code is working, the networking code is complete, and the four basic object types are implemented." Ari says, "Flags and powers are coded. A quick note on these... flags and other bitfields are implemented in OOMUS similar to the way command switches are in PennMUSH. This allows an unlimited number of them to exist. The default is, I believe, 80 each of powers and flags on each object." Ari says, "Attribute code is done." Ari says, "And a basic LISP-ish parser module is included until the MUSHCode parser is done, for testing purposes." Apocalypse raises his hand. Ari looks to Apocalypse. "A question?" Apocalypse says, "Your comment about adding object types; a few lines of code in what langauge? C++?" Ari says, "C++, yes." Ari says, "As an example..." Ari says, "Four functions are required for the interface to the DB." Ari says, "The 'Room' type looks like this:" void Container::Dump(ostream &f) ( f << *(dynamic_cast (this)); f << *this; f << "END OF OBJECT" << endl; } Ari says, "The Container::Read function is very similar, adding only two lines of code for allocating memory." Ari notes that he messed up. "This example is the Container type, not Room." Ari says, "Container::PostRead is called after the whole database is read in, in the event that you need to resolve dbrefs or do other post-read work." Ari says, "The other two functions that are required are C++ streams operators. Here is the output one, for Dump:" ostream &operator<<(ostream &s, Container &c) { if(c.contents) s << c.contents->Dbnum() << endl; else s << NOTHING << endl; if(c.exits) s << c.exits->Dbnum() << endl; else s << NOTHING << endl; return s; } Ari says, "I apologize for the formatting of the code...rest assured that it is much more attractive in the source files." Ari says, "Does that answer your question?" Ari will assume so for now. "Any others?" Ari nods. "Alright, then...feature requests and other feedback and input. Feel free to start bombarding me with ideas." :) Ari waits. Apocalypse says, "Sorry about that. Yes, that answers my question." Ari nods. Ari says, "Are there any comments, ideas, or other things to be said?" Ari says, "Well, as I see there are no further questions and no comments..." Ari says, "Some final words about OOMUS." Ari says, "It's open-source, and therefore has advantages over every other major server in that area." Apocalypse says, "In what way?" Apocalypse was under the distinct impression that the other servers were also "open-source." Ari says, "The licensing is more free. You don't have to give up anything you add or change if you don't want to. Anyone can use the code for anything they want." Ari says, "That depends on your definition of 'open-source'. OOMUS is covered under the GNU General Public License. Most other servers, including PennMUSH, have their own licensing scheme, and these can be somewhat restrictive to developers." Apocalypse nods. "Ok, that clears it up." Ari nods. Ari says, "Anyhow, I feel that OOMUS is a step in the right direction for the future of online text-based gaming and roleplaying. It is modern in design...it uses objects to represent objects in the simulation, instead of code to represent those objects." Ari says, "It allows for multiple language parsers." Ari says, "It allows easy expansion of the database format to accommodate new object types, allowing people to concentrate on making good modules rather than in making a way for their modules to store data on disk." Ari says, "It makes distribution of add-ons much easier." Ari says, "It makes the numbers of powers, flags, and the like expandable to daunting extents." Ari says, "In general, it is the next generation of MU* servers." Ari says, "If there are no questions or comments at this point, then I'll be finished." Joshua claps. Grinna applauds Ari says, "Thank you all for coming, and for your interest in OOMUS. Feel free to contact me if questions or suggestions arise at any time." China applauds, giving thought to the new things she's heard about tonight. Ari says, "I can be reached by @mail here and elsewhere on the MU*-ing world, as well as at ari@lusis.org." Ari says, "Thanks again, and good evening." Joshua claps some more. Apocalypse cheers. China smiles. Grinna claps. Ari gathers his papers and walks off the back of the stage. RedHat Hall(#2602RVa) / /^\/^\/^\ \ |"""""""""""""""""""""""""|~~~~~~~~~~~~~~~|"""""""""""""""""""""""""| | LECTURER |~~)~~~~~~~~~(~~| TOPIC | | |~~) (~~| | | None |~~) ___ (~~| None | | | |~~) Y (~~| | | | |_________________________|\___ | ___/|_________________________| | |/ (_ (_ (_ (* (_ \|==\_____/==|/ _) _) _) _) _) \| \ (_ (_ (_ (_ (* \|___|/ *) _) _) _) _) / (_ (_ (_ (* (_ *) _) _) _) _) (_ (_ (_ (_ A _) _) _) *) (_ (_ (_ / \ _) _) _) (_ (_ / \ _) _) (_ / \ _) / \