davepeck / game-of-go

The best website for learning to play the ancient game of Go.
http://go.davepeck.org/
MIT License
128 stars 25 forks source link

The Game Of Go

Introduction

What is this? (Short Version)

https://go.davepeck.org/

This is a website that lets people learn and play the ancient game of Go via email correspondence.

It was a quick hack written in a single weekend so that I could learn about (what at the time, way back in the late 2000s!) was the new Google App Engine service.

Here we are 15+ years later. It is still a Webapp2 site, built with Python 2.7, targeted for hosting with Google App Engine. It's open source under the MIT license. I haven't really touched it much; it's a bit of a mess.

You can see the latest bits running at https://go.davepeck.org/ -- I will always run them there, on my own dime.

What is this? (Longer Version)

Currently, this service lets you set up a game of Go with a friend. There are no logins or passwords. When it's your turn, you get an email notification. Or, you can silence email and just leave your browser window open. It will update automatically when it's time for you to move.

If you're new to the game of Go, you might consider reading the excellent tutorial at http://is.gd/kD5q

I originally wrote this code as a "weekend hack": a fun project that I could get to a reasonable degree of polish in about a weekend, and that would be a useful "learning" code base for a new technology (in this case, App Engine.) Since that first weekend, I've added chat and a history view. But there is still a lot more to do. There are lots of cool features I'd love the community to work on. I've listed some below; I'm sure you'll have other even better ideas. Also, because I wrote this software as fast as I could, the code is a rough around the edges. No doubt you will see all sorts of oddities as you look through it; feel free to just help get the service on a more solid footing!

Anyway, dive in and enjoy. With a little work, I bet we can turn this project into the best place to play Go on the internets!

What's the current status?

I haven't really touched this in years, but it is still hosted at https://go.davepeck.org/ and thousands of new games are played there monthly.

If I were going to spend time on it, I'd say that this is its mission:

Be the best place to learn to play Go on the Internet.

There's a lot of technical debt and other nonsense to overcome, first. If I were to take next steps, they would be:

As this is a hobby project, I expect these initial efforts will take quite some time. They will be incremental, though, so the site will continue to behave well as each change is made.

Exploring The Code

At the moment there isn't too much code. It's a big messy ball of spaghetti (but see plans above.)

The key files are:

Community Contributions To Date

This is an open source, community-driven project. Lots of people have added great things, including:

Cool stuff I'd love to see people work on

There is a LOT of stuff to do here, so dive in! I'm open to all suggestions and patches. Send 'em my way.

This list is in "no particular order":

Licenses

Dave Peck's Go is (c) 2009-2013 Dave Peck, All Rights Reserved. It is licensed under the MIT license. (It used to be licensed under the uber-restrictive AGPLv3 but that was kinda silly, no?)

There are a few other bits of code included; they all happen to be MIT-licensed too:

  1. The simplejson library is licensed under an MIT License. A number of people have contributed. You can find out more here: http://code.google.com/p/simplejson/
  2. The prototype.js library is (c) 2005-2008 Sam Stephenson and is also under an MIT License.
  3. The scriptaculous javascript libraries are (c) 2005-2008 Thomas Fuchs, also under an MIT License.

As for the graphics:

  1. All of the images used in the main game board are modified versions of files I found on the Wikimedia Commons. These are distributed with the Creative Commons Attribution 2.0 ShareAlike license. Unfortunately, I can't figure out who made them originally -- the user name is Micheletb
  2. All remaining images were hand-drawn by me. I hereby put them under the Creative Commons Attribution ShareAlike 2.0 license: http://creativecommons.org/licenses/by-sa/2.0/