The History of WorldForge

Note this history file is itself history

as told by Bryce

Well I joined with the rest of the slashdot crowd (the first one). I'd been thinking prior to that about making an open source computer game based around Circe. I had been studying how to run open source projects and had been working in Mozilla and a few other projects. Most net projects fail, for various reasons, and I figured Altima would too, but I thought I'd watch how it started, maybe soak up some ideas, and get another data point about open source projects. Most people at the time said Altima was crazy and destined for failure.

Anyway, so the first week was intense - 100 messages per day. There was absolutely no code, and it was impossible to get anything new on the website, and we didn't have an irc server, but even so, I was really impressed at the infrastructure. I'd never been in a project that had its own mailing list services, as well as CVS, but I guess the thing that amazed me the most was just the sheer number of people.

Hell. WF practically has an IT department - chuck
An army fights on its stomach... WF fights on its infra team. - ZephyrAlfredo.

One of the ideas I'd been kicking around is that there are so many people who expend all this energy playing games and doing associated activities (making extra maps, creating websites, crack programs, etc.) that there was "free labor" that could be tapped... potentially even to create the game in the first place. The fact that altima already had so many people really excited me.

We used to be very proactive in trying to get other projects to join us; We were a lot more anxious about whether we'd succeed or not, and we figured if we could just get one or two projects to join we'd be set. Never really happened though, but we attracted enough people on our own merits that we stopped trying to recruit. Actually, what became apparent was that maybe it would be possible for the players to make the whole game themselves, and owe nothing to no company--which is basically what we've done.

Anyway, really early on it became totally clear that the project had a dearth of leadership. Avinash was the founder, yet after the first week or two we sort of stopped hearing from him. I got really totally frustrated because everyone was going in different directions, and there was so many arguments.

So I quit.

Then I quit a second time a week later.

I almost quit a third time but then I stopped and said, "wait-a-minute, there's got to be a better solution..." So, I wrote up my ideas on What The Heck We Should Be Doing and passed it around for comments, and incorporated thoughts from various people who seemed like heavyweights, and posted it.

Originally, I was just going to work on doing AI scripting, since I was into neural net coding and such. I thought that it would be best if we started with an existing codebase and tweak rather than invent something from scratch from the ground up. I took smaug and started putting a Python interpreter into it. No one else thought this was a good idea, so I was easily dissuaded.

Log Excerpt::

epiX_ - so you didnt kick ass wit a hamma?
bryce - epix, not yet, I was just a wee developer then, with no clout. ;-)
bryce - plus I'm not a 'kicking ass' kinda guy anyway

At that time, pretty much everyone posted their web pages on their personal site. And code was shared out from people's ftp and web accounts instead of using our cvs. Bobr posted an email about something called wiki, and I got into that. I had been trying to get things posted on the existing website but its maintainer was slow so we wouldn't see things there for weeks. So wiki was a big improvement.

We were on irc on another network, and I'd bug people to put code into cvs. I laid out the cvs directory structure and started bugging people to check their code into it. It was embarassing that almost all the cvs checkins were by me; I was happy when some others started using it too.

I remember after getting discouraged from doing the smaug python scripting stuff -- I considered doing coordination full time but felt I should really be doing scripting stuff. Arnan said something like, "You know you really want to be coordinating" or something like that, so that started me thinking in that direction. Anyway, after a while avinash dropped an email to the list saying he'd returned from whence he came and was going to be gone for a bit but once he got through reading the mail backlog, he'd get involved again. He asked me to take care of coordination stuff in the meantime.

He never came back though...

Months passed...

Log Excerpt::

nikal - And you've never seen him since?
bryce - nope

Finally at one point I said, "It seems rather pointless to have the project be run by a temporary interim coordinator." and so I quit. I said I'd be willing to be coordinator but thought the project should decide for itself how it would be run.

Avinash is now a verb. "Hail bryce, fearless leader, may he be warded of buses and never avinash - chuck

There was talk of setting up a "senate" or holding an election. So, long story short, the concensus was to have a benevolent dictator, and they all picked me to be it. :-)

Then, the ass kicking started. ;-) First thing was, I started an effort to rename the project. We chose WorldForge after a long and contentious process. Renaming a project is not a trivial thing. ;-)

Then we created a logo. It was around that time that we created the first usable server - QuADAS: Quick and dirty altima server. It was in Java. Mike Day (I think) decided java wasn't cool, and rewrote it in C++ -- That was QServer. Arnan got into hacking on that and there was some dissent and stuff, so it forked into QServer2.

Meanwhile, there were a few other server projects going on. I decided it was necessary to get everything on one track, so spent a few months researching what everyone else had done, and came up with the STAGE design. Before I finished designing it, work began on getting QServer2 turned into STAGE - this was called Backstage. However Backstage never really morphed into STAGE, as we'd planned, but a lot of the design work got carried over.

Log Excerpt::

Pato - Atlas wars!
bryce - oh yes

Back during the days when we had half a dozen servers and clients, we were aware that just about everything had its own protocol. So we came up with the idea of having a standard protocol that they'd all use. We debated using CORBA, which was the original intent of the project, and decided to create our own. I put Aloril in charge of this effort, and he did a great job reigning in all the various people that were arguing about it. I'm amazed to this day with how patient Aloril is.

Once the protocol existed, of course, that was only half the problem - implementing it was the other half. It took a loong time to actually create libAtlas. And as soon as it pretty much worked, ZW came along and rewrote it. Mike didn't like his rewrite so rewrote it. Mike's got quite a rep for rewriting stuff. ;-) Sdt and he made the libAtlas-C++, which was the precursor to what we have now. Alriddoch and others have made improvements to it, but at heart it's what they wrote.

Atlas pushes the limits of decency with c++ templates. It's definitely a shrine to parametric polymorphism - chuck

Mike and sdt were accused of academic exercising "If it's in the ISO standard, it must be good, let's use it all!!"

Ok, the skeleton demo.

Actually before the skeleton demo was the perseus effort, which had the goal of getting a server and client to talk to each other using atlas. This sounds absurd to us today, since it's so trivially easy, but you have to remember back then atlas was new and a lot of the know-how for getting it implemented into clients and servers didn't exist. Since Cyphesis already had atlas implemented, we figured we'd use that, plus a client. I think it was uclient we picked but I don't remember.

Anyway, we were getting TONS of flak by this point that we hadn't anything for people to download and "try". Up 'til this point we weren't able to shake the accusations of being "vaporware", so I started pushing for doing the "skeleton demo". That was the first thing we actually "delivered"--that people could try out.

Most people were kinda disappointed after going through all that work of setting it up, that it didn't actually *do* anything. So one day I thought about the software and media that already existed, and wondered if we couldn't create some kind of simple game from it.

Log Excerpt::

Peregrine - Didn't that host the amazing irc crab?
bryce - yup, it sure did!

I paced around in my apartment thinking about the stuff we had: trees, uta's art, bloodsport's skeleton, this crab that garg made, and some other misc things. I had this calendar in my hallway, called _The Book of Days_. This calendar had as its pictures an old medieval calendar by that name, which had little medieval illustrations. On this particular day, there was a painting of a swine herder batting at acorn trees to get acorns to feed hs pigs. "hmm", thought I, thus was born Acorn.

And Garg went and made the cutest piggies in the whole wide world. - Malkin

So I wrote up the basic game idea that evening and posted it. I tried recruiting someone to coordinate it. I didn't want to coordinate it myself, because up until that point there really hadn't been many people involved in coordinating multiperson efforts. So it was sorta like, if we were going to succeed, we'd need more people able to coordinate than just me. That was my ulterior motive with acorn - to help WorldForge become able to coordinate stuff independent of me.

This seems silly today 'cause so much of WorldForge is autonomous and you hardly ever see me involved in things, but at the time that was kind of a problem for me. Unfortunately, easier said than done. It took several false starts with Acorn. Finally Alistair came along, and I kinda recognized that he had The Right Stuff and made him Acorn coordinator.

Acorn kinda took on a life of its own and got into the development "groove" and before you knew it, it was done! So, that was a pretty stunning success. :-)

Meanwhile, I'd been devoting myself mostly to stage. I originally did all the design work in secret, because I wanted to avoid all the arguing that characterized earlier server development efforts. However, I kinda got stuck in design overload. The thinking had been, requirements, then design, THEN implement... So I tried to do that, but it's hard to design code from the start, without actually coding it. I kinda got distracted, and so then I got "bumped" by fex and mike, who decided to redo it all. They determined to do it differently by focusing more totally on the requirements, then design, THEN implementation. The major difference being that they did it in cvs instead of wiki, and didn't do it in secret. ;-)

But they got distracted too...

So then one day I said, "the hell with it, I'm just going to start coding stage." So I created thor.cpp and started coding. ;-) My secret was just fleshing out the architecture and putting TODO's in the code everywhere that things were needed. And I encouraged people to just hop in and start fleshing it out. Amazingly, people did exactly that. (Malkin verily did hop.)

So we split out thor.cpp into separate files, and just kept churning away. Then, I started doing job changes and moving about, and kinda got disinvolved. And right about the time that the network code got added in, I started having trouble compiling it. I'd been doing the development in windows originally, because I had been having all sorts of trouble with linux networking.

Log Excerpt::

ZephyrAlfredo - sounds like we're almost back to present day.
bryce - yup, that catches us up pretty well.
bryce - skipping over a lot of interesting bits I'm sure.
bryce - and lots of me getting frustrated at folks and code and problems and such. ;-)
bryce - and the reverse, I'm sure.
SherwoodSpirit - And building a house...
SherwoodSpirit - And moving around the country...
bryce - yup
Malkin - Karsten and I were the first ones to actually connect a WF client to STAGE, and get them to talk, as far as I know.
Malkin - I had set up STAGE on nook, and I was watching debugging messages, and I went, "WOAH, what the hell is THAT?" And Karsten told me it was UClient trying to connect. :)

We spent way too much time trying to figure out how to get back onto slashdot. ;-) Way back when there was this cool guy Florian. He was the one who came up with the idea of having a monthly news letter, which came to be called The Chopping Block. But not long after starting it, he had to leave temporarily and asked if I'd take charge of the newsletter. I didn't want to because I had so many other things to do, and I figured the newsletter was kind of a nice "extra". Somehow we've managed to keep it alive and kicking ever since, tho' we've had a few large gaps when no one was available to manage it.

Log Reference.