The story of the bone and the bukkit

January 1st of this year marked a very special day for me. It's hard for me to believe it, but my dear little Bukkit turned two years old. As cheesy as it sounds, I still remember writing that very first commit as if it were yesterday.

I figured now was a fantastic time to give you a history of the project, its impact on my life, and how everything came about to turn into the huge megaproject that it is today. Some of this may be new information to some people, and some of it may be a little out of order, but I'll try to do my best to make this a worthy read. Whilst the Bukkit project was the best thing that has ever happened to me, it didn't come without some big mistakes and sore spots. I may tell you about those, but they're not easy to write about and may involve a handful of politics.

Before we jump straight into Bukkit, let me take you back to late 2010 and introduce you to another server modding platform formally known as "hMod". Minecraft at this point was in Alpha 1.2 and modding wasn't as much of a thing as it is now. hMod was created by a guy known as hey0, and was an attempt to make a more customisable version of the server without having to learn how to code yourself. That may not sound like a modding platform... and that's because it wasn't created to be one; it just kinda ended up that way. It came with a few handy utilities for server owners such as some commands to control the server with (/ban, /give), a whitelist (this was huge!), and a message of the day. These kinds of things you take for granted these days, but they were unthinkable luxuries for the brave and willing modders back then. Somehow hMod picked up speed and people started to extend upon it with plugins, adding yet more functionality to such an already ambitious project.

I loved the concept of this strange and curious project. I wanted to check it out and maybe try my hand at making my own plugin. The chance of customising a game to how I want it? Yes please! I hadn't really played with Java much before, but I'm quick to pick up new programming languages and I was quite familiar with C# so it was easy enough to work with. I knew exactly what I wanted to try to make, and I had a bunch of friends who supported me and were willing to try it out with me. Minecraft multiplayer was an extremely new and broken thing at the time, and things like Minecarts would just be invincible crashing machines at this point (seriously; you couldn't destroy them and rails crashed your server and your clients), so there was a desperate need for getting around quickly on a server. There were already some plugins that let players /teleport between themselves but I didn't like this; commands are no way of interacting with a graphical world! I set out to make a plugin called "Stargate", which I'd like to imagine set the standards for modern portal plugins. There simply weren't any previously, and I went all out trying to get Stargate working how I thought it should; you'd orient and position properly between the portals, kept momentum, and they utilized signs as a means of interacting with them (something that nothing else did at the time - it's now the norm!)

During my time making Stargate, I somehow took burden of maintaining hMod with a few other people who equally just found themselves in such a position without any knowledge of how it happened. Hey0 had vanished, and Minecraft had started to be updated much more frequently than before. We needed to know what to do! Myself and Grum took control and spent our time updating hMod ourselves, which was a scary task and took us a long time, but we got through it. We had very little control over the project, and couldn't even make releases ourselves, so this was an extremely difficult position to work from - but we did it. We spent a few months updating hMod between Grum and myself, and eventually we just grew tired of having to support broken things without being able to even attempt to fix them. I spoke to a few people in private and proposed that we started up a new project from scratch, where we can actually work on the things that need to be worked on and hopefully make something just that much more awesome. Some of the guys I spoke to thought it wasn't worth the time, whilst others (Grum, Tahg, EvilSeph) thought it was a good idea. I figured that any positive reaction was enough to get it started, so I went forwards with my plans.

People often ask me, "why 'Bukkit'?". Well, it's kinda silly, but I have a bot in my home IRC channel called "Scrapbucket", which was a fork of xkcd's IRC bot "Bucket". I proposed "CraftBucket", and people agreed that it was a good name. After we realized that splitting the project into two parts (an API and an implementation), we decided to go for "Bucket" and "CraftBucket" - but then Grum jokingly suggested "Bukkit" for the whimsy name. Needless to say, it stuck :)

So there we had our group and our plans, and we were ready to take over the world. We drafted up an announcement that we'll no longer be supporting hMod ourselves and will be creating a new project, and this was published on a few sites. The minecraftforum thread is still available for reading, and is worth a few giggles if you're interested. Initial community reaction to the announcement was mostly fantastic, but it did spawn up the usual craze of "one project may die; we need to fill in the void with a new one!". Lots of other projects suddenly popped up to compete with us to replace our own work, but they didn't really take off. I was excited, there was so much to do and I can really get a lot done if I'm focused. Full steam ahead, and the project just grew like nothing else. Over the next couple of months, the initial team that said they'd help create the project kinda fell away, and we were left with just 4 people as the "core". Myself, Grum, EvilSeph, and Tahg. I'd come to learn from my time making this project that people may mean good, and some may even mean bad, you just can't rely on them to be available as much as you are a few months down the line - life gets in the way! It kinda ended up with me doing the API designing + implementing, and Grum helping out with the really difficult tasks as his time away from work allowed.

I think the one thing that I'm most proud of from Bukkit was our updating procedure. It was extremely taxing work, but we developed an awesome 3-step procedure for it. Grum had created some awesome tools to semi-automate the decompilation and deobfuscation process (step 1 and 2), and I would essentially rewrite a portion of CraftBukkit in a matter of hours for step 3. For the average update I would spent 20-30 hours nonstop (save for bathroom breaks. I was dedicated, but not that dedicated) just sat there recreating our now large codebase for the new version of Minecraft. During this time I would also be the one reassuring the community that yes, we know about the update, and yes, we are working on it. It was incredibly difficult work and very thankless too. I am so grateful that my loving fiancee supported me throughout this; Bukkit (and to a lesser extent, maybe even Minecraft) may not have gotten to where it is now without her :) You may have noticed that I speak about this process in first person, and that's because I did absolutely every update myself up until the day I joined Mojang. Sometimes I would get a little help, but it was rare; it was just quicker and easier to do it myself than wait around for other people to help out, because it wasn't really something that can be done concurrently.

I started Bukkit when I was employed, but I was made redundant soon after. This means that for most of the year (2011), I was unemployed. I was running purely on savings and personal donations to myself (of which probably totalled a few hundred pounds to this day. Almost enough for 1 month of rent!). Towards the end of the year, I had started to run into cash issues, and I wasn't entirely sure what to do. I had put a "please donate!" button on my blog, and tweeted it; I got a few personal direct donations this way, and it happened to be enough to get me through the month (combined with existing funds and borrowings). I asked the others about the donations that "Bukkit" receives; since day 1 we've had a donation form up on our website, and it went to one person to cover the $100~ one-time fee of a forum license. Apparently we received a nice amount of donations at the beginning (a few hundred USD for each of us four, after expenses!) but in the last half a year at that point, we ended up with about $20... Well. Ok. That clearly wasn't an option then! As upsetting as it was :(

At some point here, Curse had offered to support Bukkit and that couldn't have come at a better time. Our servers were buckling under load, and we couldn't afford to do anything about it on our own. I acquired a job at Curse (in which my role was literally, "keep doing what you do and don't mind us". They were good people!) and they also helped kick off an old dream that we had when we started Bukkit; an easy to search plugin repository! They also offered to fly us all to Blizzcon, of which I was planning to attend anyway, so that we can all meet up and say hi. And so for the first time ever, the Bukkit team was united together in person! A month or two after that, Curse also flew us out to the first Minecon and we did a panel there. That was both incredibly scary but also incredibly awesome.

Some months pass by, and we're now into 2012. Mojang had expressed a desire to acquire us, and so we flew to meet up with them yet again. Needless to say, after much talks to and fro, we accepted their offer and the rest is history! I passed on the keys to some other members, taught them how to do the updating, and went on to developing Minecraft.

It has been such a crazy ride. Looking back, we had made a lot of mistakes in Bukkit, but it was all worth it in the end. It was a fantastic experience for me, and I had never dreamed that it would have ended up anything as big as it is now. Bukkit is by no means a closed chapter though, it's still being developed to this day. I put my heart into the project, and it rewarded me with an awesome job and so much experience. Thank you.

Happy birthday, Bukkit. Here's to many more.

Comments

Scott
Scott on 01/06/2013 10:22 a.m. #

Glad to see, that after all this time you're still so dedicated! I just read the whole thing, and it really did seem as though you've sacrificed a lot for this, and I, myself, have found bukkit infinitely useful!

3 Cheers for Dinnerbone!

Joe
Joe on 01/06/2013 10:33 a.m. #

I don't know what I would do without Bukkit. Thank you!

BlockCat
BlockCat on 01/06/2013 10:45 a.m. #

I really love bukkit, and the StarGate plugin. Am still using it!

Desim8or
Desim8or on 01/06/2013 11:30 a.m. #

You've come a long way and we've been very lucky to have you.

Hugs to you and your fiancee.

MissMarzenia
MissMarzenia on 01/06/2013 11:41 a.m. #

Thank you my Darling! I kinda miss those days (and nights) when you would work for 20-30 hours straight and I would just bring you food, drinks and snacks :D
Congratulations Bukkit!

jrtc27
jrtc27 on 01/06/2013 noon #

Wow, has it really been that long since you were almost broke... You've done so much in a short time, and I somehow sense (based on 13w01a/b) that we have a whole lot more to come in 2013! Thank you for all your hard work - without you, I hate to think what the state of Minecraft servers would be :/

uk9999
uk9999 on 01/06/2013 12:21 p.m. #

All I can say is thank you!! Minecraft would definitely not be the same!

plumblum
plumblum on 01/06/2013 12:24 p.m. #

Has it actually been two years :)
I still remember the hMod or hay0's mod.
i was so glad when bukkit came along, i probably switched to bukkit a few weeks into the project. what is a bit upsetting is that the performance of this game is still so poor :P bukkit did alot of things to make it all more stable, and i probably would not still be running a server if it weren't for the work you put into it. so thank you @dinnerbone and as you explained, thank you @missmarzenia! ;) happy 2013! Live long and prosper.

Ech0e
Ech0e on 01/06/2013 12:27 p.m. #

Between me and my sister, many fun hours were had on a private Bukkit server. Our computers both had a strange issue with our graphics cards, and could only play Minecraft in-browser. So we couldn't install client mods. With Bukkit, I could finally add what I thought was missing to the game.

I felt this post in my feels. Thank you for all your work on Bukkit and Minecraft! :)

*hug*

jokay
jokay on 01/06/2013 12:44 p.m. #

What a super inspiring post! I'm sharing it with the little geeks in our community so they can see how creativity, hard work and dedication brings awesum opportunities.

Thankyou to you and all involved in the Bukkit project. Your tools enable us to do amazing things with kids (something that brings me great joy)!

I agree with @uk9999 .. Minecraft wouldnt be the same without Bukkit. Hoooray for you, Dinnerbone!

mrheat
mrheat on 01/06/2013 12:49 p.m. #

I would like to hear some examples of actual mistakes you made while developing Bukkit. From what you wrote everything seemed to be perfect. Especially the deobfuscation process. Very impressive!

AuraMasterNeal
AuraMasterNeal on 01/06/2013 4:19 p.m. #

You know it's a long blogpost when it extends past the sidebar XD Dinnerbone, great story and tale of magical coding lol

Marlamin
Marlamin on 01/06/2013 4:56 p.m. #

Man.. that Stargate plugin sure was good.

Here's a video we shot during development of the plugin, how I miss you swoowshy water effect. :(

http://www.youtube.com/watch?v=SJSPLv9cG5w

ZeroErrors
ZeroErrors on 01/07/2013 1:22 a.m. #

You Sir are Amazing,
You by are the best thing that has happened to minecraft.

KungFuBot
KungFuBot on 01/11/2013 1:01 a.m. #

You sir, have made me speechless. I must at least say, thank you... for updating hmod and for starting a great project that we all needed.

Grugsy
Grugsy on 01/14/2013 9:33 p.m. #

I have watched this all progress from hmod and stargate until present... it's good to see the story told from a more personal standpoint. I just wanted you to know, after these past couple of years, you have become one of my personal heroes. Keep up the great work!

Leave a comment

Comments are now closed for this entry.