The Red Spider Project

A place to discuss the implementation and style of computer programs.

Moderators: phlip, Moderators General, Prelates

User avatar
Jplus
Posts: 1692
Joined: Wed Apr 21, 2010 12:29 pm UTC
Location: Netherlands

The Red Spider Project

Postby Jplus » Tue Mar 20, 2012 7:52 pm UTC

Edit 7: there is a "dusting off, please join me" announcement over here.

Edit 3-6: here's a quick introduction for those who want to know what all of this is about.

Purpose: we combine our love for coding with our love for xkcd, for shared fun.
Diversity: anyone who would like to contribute is welcome to join.
Substance: it is like a small, self-contained operating system with a growing collection of small programs.
Home page: http://the-xkcd-community.github.com/th ... r-project/
IRC channel: #redspider at foonetic.net
Issue tracker: https://github.com/the-xkcd-community/t ... ect/issues
Wiki: https://github.com/the-xkcd-community/t ... oject/wiki
GitHub repository with Readme: https://github.com/the-xkcd-community/t ... er-project
Any questions: ask here or have a look at GitHub to get an idea of the common practices.
Logo (thanks to tidbit):
Image

The remainder of this post shows how it all started.
___________________________________________________________

Edit 2: it's not just an "idea" anymore, so I've updated the thread title to only show the name of the project. It used to be "Idea for a fun joint effort: red spider project".

Edit: the working title was "xkcd hacking project" but we've settled on the name "red spider project".

"xkcd hacking project" is perhaps a bit of a vague description. I'll just describe what I envision. It's a bit lengthy because I'm trying to provide a more or less complete plan, but everything is open to change. Please discuss if you're interested. I'd say that if the thread gets 10 replies, we can assume that there's enough interest and we should just start off with whatever seems to be the consensus at that point.


THE GOAL
  • To have an enjoyable time collaborating with fellow xkcdians on an ongoing coding project.
  • To write code that is interesting or amusing for others to read, or both.
  • To write programs that give you a fuzzy "xkcd feeling" when used, because they produce amusing, interesting or touching output (or a combination).
  • To make a cozy, messy web of programs that may sometimes call other programs, possibly in unanticipated ways.
  • To go crazy.

THE MEANS
  • A publicly hosted repository that people can easily get write access to. For example on GitHub.
  • A permissive license that applies to all parts of the project. Perhaps a variant of the MIT license with some alternative formulations to make it more xkcd-like.
  • Platform neutrality: terminal only, programs interoperate with exit statuses, pipes and file redirection. This is kind of unixy but it works fine on Windows as long as you keep it simple.
  • Many small though not necessarily independent programs, rather than one monolithic thing. This makes it easier for people with little time or short attention spans to join in, while still allowing for collaboration.
  • All (free of charge) programming languages are welcome and encouraged. The more diverse the better.
  • An open-minded attitude: all ideas are interesting. There are no limits on what a program may do, except that it must not be malware.
  • A more-or-less fixed, simple directory structure so things can be found and automated.
  • A common build system so all compiled stuff can be installed in one go, for example with CMake.

DETAILS

Name: please suggest something better than "xkcd hacking project".

Root directory contents (please mentally translate forward slashes to backward slashes if that comforts you):
  • bin/: installed commands. No subdirectories.
  • lib/: installed run-time and link-time dependencies of the commands. Not just binaries, e.g. also Python objects or awk filters that are meant to be used by a shell script. No subdirectories.
  • build/: anything produced by the makefiles that is not supposed to go into bin/ or lib/. Assuming that we use CMake, this includes platform-specific makefiles generated from the CMakeFiles. Subdirectories depend on the whims of the build tool.
  • include/: all source files that are meant to be included/imported in other source files. No subdirectories.
  • src/: all other source files as well as the makefiles of individual programs. For many small programs written in a scripting language, "installing" it will be nothing more than copying it from src/ to bin/. Subdirectories are avoided unless a single program uses lots of source files. Reason: this encourages people to read code from others and forces them to avoid name clashes.
  • doc/: if anyone feels an urge to write proper documentation, they can put it here. HTML and plaintext are preferred. Subdirectories if the documentation to a given command consists of more than one file.
  • config/: optional configuration files for the user. Only sensible if we write commands that make use of configuration files. No subdirectories.
  • work/: any other user files, possibly generated by the commands in bin/. Subdirectories at will.
  • A "master" makefile that builds and installs everything. Exception: programs that require payware or that aren't portable between Windows and unixy systems. "make clean" (or whatever that command is going to look like) erases everything from bin/, lib/ and build/.
  • A .gitignore file (or the functional equivalent if we use a VCS other than git). Everything that is not in src/, include/, doc/ or directly in the root directory should be ignored by the VCS.
  • License.txt: the xkcd-ified MIT license (or whatever we're going to use as the default license). Source files that are native to the xkcd hacking project should refer to this file.
  • Readme.txt: how to install, how to use, how to hack, any caveats with regard to the license (e.g. if we happen to copy LGPL'ed libraries), etcetera.
  • Dependencies.txt: list of all third-party software that one needs to have installed in order to be able to run the master makefile and the commands that are installed by it. With pointers so people don't need to search everything on the internet first. Optionally also a list of payware/platform-specific software that will enable more commands.
  • Things that I forgot about.

Collaboration:
Anarchy is fine. If you seek a partner (or multiple) for some program, or if you want to ask/announce something to everyone in the project, use this thread.

The first command:
I think a command that puts some useful environment variables into place would be most convenient. For example by prepending bin/ to PATH and include/ to CPPPATH. Perhaps it should also automatically set the working directory to the xkcd hacking project root and display a random xkcd comic. I propose to call this command "xkcd".

I think somebody has to claim the initial version of this command. Once the initial version is there everyone can modify it as they see fit.

Platform neutrality:
Most programming languages allow you to write platform-neutral code (especially in small programs). This is also true of several build tools, such as CMake, SCons and Perforce Jam. The notable exception are shell scripts. That's kind of unfortunate because those are exactly the things we'll most likely want to use to compose small programs into larger ones. We don't want to force Windows users to install MinGW or Cygwin.

Possible solution 1: we write a simple "shell script compiler" that takes a shell script from any supported language (at least POSIX sh and Windows cmd) and translates it to the current platform, if necessary and supported. The makefile of a shell script calls this compiler. In order to keep this feasible only the most basic functionality should be used, i.e. variable assignment, variable evaluation, platform-neutral command calls, command grouping, piping, file redirection, if-else and loops. If you want functions write separate shell scripts instead. If-else and while conditions should only check for exit statuses. Anything else that you might normally do with a shell script should be deferred to commands from within the xkcd hacking project.

Possible solution 2: if you write a shell script, you have to implement it at least in the POSIX sh and Windows cmd languages. The makefile of the shell script will choose the one that is appropriate for the current platform and copy it to bin/.

More possible solutions: possibilities 1 and 2 can exist alongside. There are probably also other possibilities that I'm unaware of. Something like a free cross-platform shell would be ideal.

External tools:
Should be free of charge, available for at least Windows and unixy systems and kept to a minimum. Except for the last requirement this also applies to programming languages, so if you want to use something like MATLAB or Mathematica please try to write it such that it can be run by a free ripoff, e.g. Octave or Sage.

Non-standard or platform specific libraries:
Should be avoided as much as possible. Small, platform-independent libraries can be copied to the xkcd hacking project code base if the license permits it.

Repository:
We have to agree on some "sacred" integration branch that will contain and receive only stable code, so people can checkout that branch if they just want to use some programs from the project. I guess coders should be allowed to do whatever they want in any other branch.

I don't care who creates it. If you're faster than me, go ahead. But please announce it here.
Last edited by Jplus on Wed Aug 16, 2017 12:23 am UTC, edited 8 times in total.
"There are only two hard problems in computer science: cache coherence, naming things, and off-by-one errors." (Phil Karlton and Leon Bambrick)

coding and xkcd combined

(Julian/Julian's)

Meem1029
Posts: 379
Joined: Wed Jul 21, 2010 1:11 am UTC

Re: Idea for a fun joint effort: xkcd hacking project

Postby Meem1029 » Tue Mar 20, 2012 9:15 pm UTC

Hmm, sounds like an interesting idea and one to which I might contribute some. I don't really have any ideas for what to contribute though, so I'd probably just hang around the thread/repository watching for a while before deciding to do something.
cjmcjmcjmcjm wrote:If it can't be done in an 80x24 terminal, it's not worth doing

User avatar
Jplus
Posts: 1692
Joined: Wed Apr 21, 2010 12:29 pm UTC
Location: Netherlands

Re: Idea for a fun joint effort: xkcd hacking project

Postby Jplus » Tue Mar 20, 2012 10:20 pm UTC

Just some random ideas to help people to get inspired:

A program that returns a random xkcd comic number on exit.

A text adventure that involves raptors, red spiders and/or submarines.

A text stream processor that takes TeX formulas as input and outputs LaTeX typesetting code, with the same formulas but with hearts substituted for random parts of the original formulas.

A program that uses Gödel numbering to convert numbers into mathematical formulas, or vice versa.

A compiler wrapper that warns you about segfaults.

A program that generates a love formula for a given xkcd comic number (see what I did there)?
"There are only two hard problems in computer science: cache coherence, naming things, and off-by-one errors." (Phil Karlton and Leon Bambrick)

coding and xkcd combined

(Julian/Julian's)

User avatar
ahammel
My Little Cabbage
Posts: 2135
Joined: Mon Jan 30, 2012 12:46 am UTC
Location: Vancouver BC
Contact:

Re: Idea for a fun joint effort: xkcd hacking project

Postby ahammel » Wed Mar 21, 2012 2:33 am UTC

Sounds like fun. I've got a half-finished python script lying around that would keep track of how many lines of code you've written and notify you with an RPG-style "level up" message every time you hit a certain milestone. As in "You just grew to level 30 in C++!".
He/Him/His/Alex
God damn these electric sex pants!

Pepve
Posts: 57
Joined: Wed Jul 28, 2010 9:47 am UTC

Re: Idea for a fun joint effort: xkcd hacking project

Postby Pepve » Wed Mar 21, 2012 9:48 am UTC

I like it.

For the name, how about "XKCD unconstrained"? XKCD because that's where we're from. Unconstrained because it highlights an important aspect of this joint effort: to not constrain ourselves or each other too much. (And the fact that it is coding will be obvious from the context and contents of the project.)

About platform neutrality and shell scripts. You can of course use any of the popular scripting languages (Perl, Python, Ruby, PHP, Javascript, Tcl) for plumbing and composition.

Mazer1010
Posts: 6
Joined: Sat Dec 10, 2011 10:41 pm UTC

Re: Idea for a fun joint effort: xkcd hacking project

Postby Mazer1010 » Wed Mar 21, 2012 4:19 pm UTC

I'm in. I can do some coding stuff but won't be much help at all in setting it up. Just thought I would show my interest though.

User avatar
Diemo
Posts: 386
Joined: Mon Dec 03, 2007 8:43 pm UTC

Re: Idea for a fun joint effort: xkcd hacking project

Postby Diemo » Wed Mar 21, 2012 4:38 pm UTC

I'm in. I am currently fleunt only in FORTRAN, but would like to learn other languages as well, so this seems a good place to start.

Do we have a place to leave code yet?

Spoiler:
My version of a text adventure (to be expanded)

Code: Select all

Program textadventure
      Implicit none

      character(50)::temp

      write(*,"(A)") "You awaken in a small windowless room. Beside you is a bed, in front of you is a table with a small computer on it. The entire scene is illuminated be a small bedside lamp beside you.   What do you want to do?"
write(*,"(A)") "(a) Investigate the bed"
write(*,"(A)") "(b) Investigate the walls"
write(*,"(A)") "(c) Investigate the computer"
write(*,"(A)") "(d) Investigate the lamp"

Read(*,"(A)") temp
if (trim(temp)=="a") then

elseif (trim(temp)=="b") then

elseif (trim(temp)=="c") then

elseif (trim(temp)=="d") then

else
write(*,*) "Not a valid input. please input a,b,c or d"
end if



!-----------

end program textadventure


Who wants to continue? Also, this format will rapidly become unworkable, thoughts on how to cut it down? I was thinking of using select(case), which would mean that I wouldn't have to rewrite things if I wanted you to always have the option of redoing something.
In the beginning the Universe was created.
This has made a lot of people very angry and been widely regarded as a bad move.
--Douglas Adams

User avatar
Jplus
Posts: 1692
Joined: Wed Apr 21, 2010 12:29 pm UTC
Location: Netherlands

Re: Idea for a fun joint effort: xkcd hacking project

Postby Jplus » Wed Mar 21, 2012 4:58 pm UTC

ahammel wrote:Sounds like fun. I've got a half-finished python script lying around that would keep track of how many lines of code you've written and notify you with an RPG-style "level up" message every time you hit a certain milestone. As in "You just grew to level 30 in C++!".

That's a really funny idea!

Pepve wrote:I like it.

For the name, how about "XKCD unconstrained"? XKCD because that's where we're from. Unconstrained because it highlights an important aspect of this joint effort: to not constrain ourselves or each other too much. (And the fact that it is coding will be obvious from the context and contents of the project.)

It's better than "xkcd hacking project". How about "xkcd gone Wild"? Or "red spider"? Or "Hat Guy"?

Pepve wrote:About platform neutrality and shell scripts. You can of course use any of the popular scripting languages (Perl, Python, Ruby, PHP, Javascript, Tcl) for plumbing and composition.

Ah, right. Yes, I guess that Perl et al. come closest to a "cross platform shell".

Diemo wrote:I'm in. I am currently fleunt only in FORTRAN, but would like to learn other languages as well, so this seems a good place to start.

Do we have a place to leave code yet?

Not that I know of.

Diemo wrote:My version of a text adventure (to be expanded)
[...]
Who wants to continue? Also, this format will rapidly become unworkable, thoughts on how to cut it down? I was thinking of using select(case), which would mean that I wouldn't have to rewrite things if I wanted you to always have the option of redoing something.

Perhaps have a look at this thread. Especially make sure to read the first post by Yakk.
"There are only two hard problems in computer science: cache coherence, naming things, and off-by-one errors." (Phil Karlton and Leon Bambrick)

coding and xkcd combined

(Julian/Julian's)

EvanED
Posts: 4324
Joined: Mon Aug 07, 2006 6:28 am UTC
Location: Madison, WI
Contact:

Re: Idea for a fun joint effort: xkcd hacking project

Postby EvanED » Wed Mar 21, 2012 5:11 pm UTC

Jplus wrote:
Pepve wrote:About platform neutrality and shell scripts. You can of course use any of the popular scripting languages (Perl, Python, Ruby, PHP, Javascript, Tcl) for plumbing and composition.

Ah, right. Yes, I guess that Perl et al. come closest to a "cross platform shell".

Not that I care too much, but I find it interesting that you find it natural to require people to have those scripting languages installed (Javascript that runs within the browser excluded) but don't want to require Cygwin or MinGW for Windows folks (thus prohibiting, say, Bash scripts).

For instance, I have both Cygwin and MinGW. I know I have Python, but it's possible that's all. There's a 50-50 shot I have Perl too, but I definitely don't have interpreters for Ruby, PHP, Javascript (apart from any that come with browsers), or Tcl installed.

User avatar
Jplus
Posts: 1692
Joined: Wed Apr 21, 2010 12:29 pm UTC
Location: Netherlands

Re: Idea for a fun joint effort: xkcd hacking project

Postby Jplus » Wed Mar 21, 2012 8:28 pm UTC

I see your point, but I think it's not quite the same thing to require MinGW/MSYS/Cygwin or to require Perl/Python/Ruby/whatever. The former are platforms while the latter are programming languages. We try to be platform neutral so people shouldn't need to install a platform. Programming languages on the other hand will have to be installed anyway.

If we zoom in on the platforms, I see several additional drawbacks as well.
Spoiler:
MinGW: in its barest form this is little more than a port of GCC. I don't mind if Windows users want to install GCC, but at least they should have the option to not install it and use MSVC instead. More importantly, MinGW alone doesn't offer Bash scripting yet.

MSYS: this is the minimal addition to MinGW if you want Bash. But it also forces several other tools down your throat for which there are Windows-native alternatives, such as gawk where one could install the standalone awk for Windows (see here). Note that MSYS is basically a stripped-down version of Cygwin.

Cygwin: this simply amounts to installing an entire POSIX subsystem on your Windows, which has absolutely nothing to do with platform neutrality. The good news is that you can choose which packages to install, but then you're still running those packages in an emulated POSIX layer.

SFU/Interix: basically the same story as with Cygwin.

A better idea would probably be to require a standalone Bash (or Sh) for Windows, which seems to be possible. That would pretty much amount to installing a programming language.

Now that I mention it I think that might be the solution, if it works well enough. We just have to make sure that Bash scripts don't call POSIX-specific commands other than those built-in to Bash.

On a related note: Powershell is probably a bad idea.
"There are only two hard problems in computer science: cache coherence, naming things, and off-by-one errors." (Phil Karlton and Leon Bambrick)

coding and xkcd combined

(Julian/Julian's)

User avatar
scarecrovv
It's pronounced 'double u'
Posts: 674
Joined: Wed Jul 30, 2008 4:09 pm UTC
Location: California

Re: Idea for a fun joint effort: xkcd hacking project

Postby scarecrovv » Thu Mar 22, 2012 1:32 pm UTC

My thoughts:

Meem1029 wrote:Hmm, sounds like an interesting idea and one to which I might contribute some. I don't really have any ideas for what to contribute though, so I'd probably just hang around the thread/repository watching for a while before deciding to do something.

This describes me to a T.

Also:
  • I strongly support the use of Github. Git is my favorite version control system.
  • "The red spider project" is a good name. It sounds cool, doesn't have any computer related hits on google yet, vaugely hints at where we're from without coming right out and saying it, and it sounds cool.
  • I've never used any build tools other than GNU make, but I'd like to learn, so whatever you guys want is fine.
  • If we want to maintain platform neutrality, we need a list of explicitly supported platforms. Also, a requirement for merging into the stable branch will have to be that a particular bit of code has been tested on all those platforms. Obviously, not everybody can test everything everywhere, so testing will have to be a community effort.

Xami
Posts: 74
Joined: Tue Sep 29, 2009 8:29 pm UTC

Re: Idea for a fun joint effort: xkcd hacking project

Postby Xami » Thu Mar 22, 2012 9:01 pm UTC

I propose the random comic is always comic 4

User avatar
Nautilus
Posts: 105
Joined: Thu Feb 25, 2010 1:19 am UTC
Location: That's a strange place to put a piano

Re: Idea for a fun joint effort: xkcd hacking project

Postby Nautilus » Thu Mar 22, 2012 11:06 pm UTC

"the red spider project: it sounds cool"

I've made a small pile of things that I think are pretty nifty, but can't justify actually doing anything with. A community mound sounds rad.

More ideas:
  • Code obfuscator that outputs xkcd ASCII art
  • The obligatory esoteric language
  • A command called "beret" that does... something. SOMETHING.
  • A directory exploration text adventure:
Spoiler:

Code: Select all

You are in a small room.
Hanging from the ceiling in front of you is a rope ladder leading to a ..
To your left is a long passageway that disappears into the darkness of /usr/ redirects.
To your right is a bin.
You are holding a cd and a case.
You left the $PATH a long while ago.
What do you do?
My flagella bring all the boys to the yard

User avatar
scarecrovv
It's pronounced 'double u'
Posts: 674
Joined: Wed Jul 30, 2008 4:09 pm UTC
Location: California

Re: Idea for a fun joint effort: xkcd hacking project

Postby scarecrovv » Thu Mar 22, 2012 11:30 pm UTC

Nautilus wrote:
  • A directory exploration text adventure:

Adventure shells are almost as old as adventure itself, but they're still just as awesome. Having another one can't hurt.

Nautilus wrote:
  • Code obfuscator that outputs xkcd ASCII art

That's awesome. I want to work on it. It should, of course, be self hosting. Spring break is next week, so if nobody creates any shared space for this by Monday, I may have to go do it myself.

User avatar
Steax
SecondTalon's Goon Squad
Posts: 3038
Joined: Sat Jan 12, 2008 12:18 pm UTC

Re: Idea for a fun joint effort: xkcd hacking project

Postby Steax » Fri Mar 23, 2012 6:12 am UTC

I would happily serve to help with documentation, and possibly a website if we plant it in github (which we totally should). I can also help beta-test anything for OS X platforms (I have separate machines from leopard and above).
In Minecraft, I use the username Rirez.

Pepve
Posts: 57
Joined: Wed Jul 28, 2010 9:47 am UTC

Re: Idea for a fun joint effort: xkcd hacking project

Postby Pepve » Fri Mar 23, 2012 11:03 am UTC

scarecrovv wrote:
  • If we want to maintain platform neutrality, we need a list of explicitly supported platforms. Also, a requirement for merging into the stable branch will have to be that a particular bit of code has been tested on all those platforms. Obviously, not everybody can test everything everywhere, so testing will have to be a community effort.

But that's not fun. And also, platform neutrality is trivial for a lot of software. And also, I don't care if someone's Windows hack crashes on my box, I'll just fix, commit, and push.

User avatar
Jplus
Posts: 1692
Joined: Wed Apr 21, 2010 12:29 pm UTC
Location: Netherlands

Re: Idea for a fun joint effort: xkcd hacking project

Postby Jplus » Fri Mar 23, 2012 2:53 pm UTC

Seems like we've got quite some traction already. That's really cool! :)

I like "the red spider project" too.

One more general thing: I think the entire project should be a safespace, so as many people as possible will feel welcome to join in.

Xami wrote:I propose the random comic is always comic 4

The landscape certainly makes for a nice splash screen. On the other hand, if the random comic is really random it will work as a reminder of all the comics that have been made. I guess we need more opinions on this.

BTW, I realized the name "xkcd" should propably be reserved for a command that only launches a (random) xkcd comic (perhaps a specific one if you give the number as an argument, random otherwise). The "first command" that sets all the environment variables and changes your working directory should then just call the xkcd command. So we need a new name for that "first command".

As for the working directory: perhaps the "first command" should cd the user to work/ rather than to the project root.

Nautilus wrote:More ideas:
  • Code obfuscator that outputs xkcd ASCII art
  • The obligatory esoteric language
  • A command called "beret" that does... something. SOMETHING.
  • A directory exploration text adventure:
Spoiler:

Code: Select all

You are in a small room.
Hanging from the ceiling in front of you is a rope ladder leading to a ..
To your left is a long passageway that disappears into the darkness of /usr/ redirects.
To your right is a bin.
You are holding a cd and a case.
You left the $PATH a long while ago.
What do you do?

Yes, please keep the ideas coming!

Also, it would be fantastic to have our own adventure shell.

scarecrovv wrote:[...] I want to work on it. It should, of course, be self hosting. Spring break is next week, so if nobody creates any shared space for this by Monday, I may have to go do it myself.

Please do. I might do it otherwise, but probably not within a week.

Steax wrote:I would happily serve to help with documentation, and possibly a website if we plant it in github (which we totally should). I can also help beta-test anything for OS X platforms (I have separate machines from leopard and above).

All help you'd be willing to offer would be awesome!

Pepve wrote:
scarecrovv wrote:
  • If we want to maintain platform neutrality, we need a list of explicitly supported platforms. Also, a requirement for merging into the stable branch will have to be that a particular bit of code has been tested on all those platforms. Obviously, not everybody can test everything everywhere, so testing will have to be a community effort.

But that's not fun. And also, platform neutrality is trivial for a lot of software. And also, I don't care if someone's Windows hack crashes on my box, I'll just fix, commit, and push.

I think scarecrovv is right. If we don't bother to make sure everything at least builds on the supported platforms, then there is no point in having a stable/sacred branch at all. And we really want a stable branch. Consider some point in the future where the project has become quite big, and you just want to play a little with it. If we don't enforce that everything works on the stable branch, you might not be able to use 80% of the commands because 30% doesn't work on your platform and the other 50% depends on those 30%.

Fortunately it doesn't have to spoil the fun for you. When you feel you're done working on something, you can just leave your branch and tell the other participants "please test this". When it has been confirmed to work on the supported platforms, you or somebody else can merge it into the stable branch and then it's OK.

To continue with scarecrovv's proposal: we probably also have to maintain a table somewhere where people can request to have their branch tested, and where those who do the testing can mark something as tested (and working/not working). Once an item is marked as tested and working on all platforms, it can be merged into the stable branch and removed from the table.

If that table is maintained within the repository, it should only be edited on the stable branch (because otherwise some test requests will go unnoticed). But we should probably keep the table outside the repository, say in the GitHub wiki or the GitHub ticket system. Come to think of it, we can probably just use the tickets without any need for an explicit table.
"There are only two hard problems in computer science: cache coherence, naming things, and off-by-one errors." (Phil Karlton and Leon Bambrick)

coding and xkcd combined

(Julian/Julian's)

User avatar
Steax
SecondTalon's Goon Squad
Posts: 3038
Joined: Sat Jan 12, 2008 12:18 pm UTC

Re: Idea for a fun joint effort: xkcd hacking project

Postby Steax » Fri Mar 23, 2012 2:59 pm UTC

We could start with a master project that keeps track of all the other projects. Ideally this also lets each other get a hang of our workloads, strengths and weaknesses.

Anyone objecting to github?

(Also, I'm offering to help with docs because I pretty much exclusively build server applications and websites. If there's any such project that we make, though, I could help.)
In Minecraft, I use the username Rirez.

User avatar
Jplus
Posts: 1692
Joined: Wed Apr 21, 2010 12:29 pm UTC
Location: Netherlands

Re: Idea for a fun joint effort: xkcd hacking project

Postby Jplus » Fri Mar 23, 2012 3:32 pm UTC

Steax wrote:We could start with a master project that keeps track of all the other projects. Ideally this also lets each other get a hang of our workloads, strengths and weaknesses.

Do you mean, spread the project over multiple repositories? Because I'm not sure whether that would be a good idea... all on one repository (but with many branches of course) is cozier, and it's easier to use the same ticketing system in that way.
"There are only two hard problems in computer science: cache coherence, naming things, and off-by-one errors." (Phil Karlton and Leon Bambrick)

coding and xkcd combined

(Julian/Julian's)

User avatar
Steax
SecondTalon's Goon Squad
Posts: 3038
Joined: Sat Jan 12, 2008 12:18 pm UTC

Re: Idea for a fun joint effort: xkcd hacking project

Postby Steax » Fri Mar 23, 2012 3:35 pm UTC

Well, that would be even better. I was thinking of the possibility of some sub-projects being major enough to warrant having their own repositories, and possibly for forking.
In Minecraft, I use the username Rirez.

EvanED
Posts: 4324
Joined: Mon Aug 07, 2006 6:28 am UTC
Location: Madison, WI
Contact:

Re: Idea for a fun joint effort: xkcd hacking project

Postby EvanED » Fri Mar 23, 2012 3:36 pm UTC

Jplus wrote:Fortunately it doesn't have to spoil the fun for you. When you feel you're done working on something, you can just leave your branch and tell the other participants "please test this". When it has been confirmed to work on the supported platforms, you or somebody else can merge it into the stable branch and then it's OK.

To continue with scarecrovv's proposal: we probably also have to maintain a table somewhere where people can request to have their branch tested, and where those who do the testing can mark something as tested (and working/not working). Once an item is marked as tested and working on all platforms, it can be merged into the stable branch and removed from the table.

Anyone have a VPS or something like that where you have a shell account and can install arbitrary software?

If so, and if you don't mind lending a small amount of processor/storage/bandwidth to the project, we could set up a buildbot. This would give an automated way of making that table (at a high level). (See, e.g., Chromium's buildbot.)

qubital
Posts: 25
Joined: Fri Mar 02, 2012 12:13 am UTC

Re: Idea for a fun joint effort: xkcd hacking project

Postby qubital » Fri Mar 23, 2012 8:00 pm UTC

EvanED wrote:
Jplus wrote:Fortunately it doesn't have to spoil the fun for you. When you feel you're done working on something, you can just leave your branch and tell the other participants "please test this". When it has been confirmed to work on the supported platforms, you or somebody else can merge it into the stable branch and then it's OK.

To continue with scarecrovv's proposal: we probably also have to maintain a table somewhere where people can request to have their branch tested, and where those who do the testing can mark something as tested (and working/not working). Once an item is marked as tested and working on all platforms, it can be merged into the stable branch and removed from the table.

Anyone have a VPS or something like that where you have a shell account and can install arbitrary software?

If so, and if you don't mind lending a small amount of processor/storage/bandwidth to the project, we could set up a buildbot. This would give an automated way of making that table (at a high level). (See, e.g., Chromium's buildbot.)

I have a local Debian (Wheezy) server you could use, if needed. It should be more than adequate for a project of this size.

User avatar
Nautilus
Posts: 105
Joined: Thu Feb 25, 2010 1:19 am UTC
Location: That's a strange place to put a piano

Re: Idea for a fun joint effort: xkcd hacking project

Postby Nautilus » Fri Mar 23, 2012 11:48 pm UTC

scarecrovv wrote:Adventure shells are almost as old as adventure itself, but they're still just as awesome. Having another one can't hurt.


I really shouldn't be surprised. :D

So... who wants to make a repo?
My flagella bring all the boys to the yard

qubital
Posts: 25
Joined: Fri Mar 02, 2012 12:13 am UTC

Re: Idea for a fun joint effort: xkcd hacking project

Postby qubital » Sat Mar 24, 2012 1:31 am UTC

I've made a git repo: https://github.com/xkcd/hacking-project (not allowed to post urls yet).

If anyone wants to take over, change things, etc.., just let me know.

User avatar
ahammel
My Little Cabbage
Posts: 2135
Joined: Mon Jan 30, 2012 12:46 am UTC
Location: Vancouver BC
Contact:

Re: Idea for a fun joint effort: xkcd hacking project

Postby ahammel » Sat Mar 24, 2012 2:12 am UTC

qubital wrote:I've made a git repo: https://github.com/xkcd/hacking-project (not allowed to post urls yet).

Thanks qubital! Made that clickable for you.
He/Him/His/Alex
God damn these electric sex pants!

qubital
Posts: 25
Joined: Fri Mar 02, 2012 12:13 am UTC

Re: Idea for a fun joint effort: xkcd hacking project

Postby qubital » Sat Mar 24, 2012 5:09 am UTC

ahammel wrote:Thanks qubital! Made that clickable for you.

Thanks.

Since the project is still quite vague, I thought I'd offer a suggestion:
I was thinking we could make a 2d game using the xkcd characters with comics serving as a backdrop or storyline.
The levels could be puzzles or a fight between characters, e.g. the nihilist vs blackhat.
Preferably, it would be an online multiplayer. Or maybe just a simple role playing game.

We could use a 2d game engine like Love2d (https://love2d.org/wiki/Main_Page) for Lua.
Why Love2d?
Well, I've never used Love or Lua in my life but it has a number of good things going for it:
- it's easy to install on all platforms (windows, mac os x, linux)
- it has a vibrant community so getting help should be easy
- its supposedly very easy to use, we could get a mockup running soon
- Lua is widely used in industry, think AngryBirds and WoW.
- Lua's syntax is common, similar to C and Python.

As an example of what Love can do, checkout this youtube video of the popular mari0/portal homebrew: http://www.youtube.com/watch?feature=player_embedded&v=xCze9JV9j7Q
I've played this game on Ubuntu and it runs very fast, graphics are great too.

I realize this may be a bit too ambitious so take it with a grain of salt, but it's definitely doable and might be fun. Just an idea.

User avatar
Mat
Posts: 414
Joined: Fri Apr 21, 2006 8:19 pm UTC
Location: London

Re: Idea for a fun joint effort: xkcd hacking project

Postby Mat » Sat Mar 24, 2012 12:41 pm UTC

I think we should pick one idea and set a timescale for finishing it. If successful we can then start the next one (and people can continuing contributing to the first one if they want). I'd prefer to avoid anything too ambitious like a game that requires a lot of planning. We should make it as easy as possible for more people to get involved.

+1 to these ideas:
  • A text stream processor that takes TeX formulas as input and outputs LaTeX typesetting code, with the same formulas but with hearts substituted for random parts of the original formulas.
  • Code obfuscator that outputs xkcd ASCII art

My language of choice would be python or ruby, which are both easy to learn and write cross platform code in. I'm against writing any shell scripts or forcing windows users to install cygwin.

Bharrata
Posts: 233
Joined: Sun May 15, 2011 7:57 pm UTC

Re: Idea for a fun joint effort: xkcd hacking project

Postby Bharrata » Sat Mar 24, 2012 7:02 pm UTC

It might be fun, at some point, to try to collaborate on a text adventure using something like Inform:

Code: Select all

"Hello Deductible" by "I.F. Author"

The story headline is "An Interactive Example".

The Living Room is a room. "A comfortably furnished living room."
The Kitchen is north of the Living Room.
The Front Door is south of the Living Room.
The Front Door is a door. The Front Door is closed and locked.

The insurance salesman is a man in the Living Room. "An insurance salesman in a tacky polyester suit. He seems eager to speak to you." Understand "man" as the insurance salesman.

A briefcase is carried by the insurance salesman. The description is "A slightly worn, black briefcase." Understand "case" as the briefcase.


The insurance paperwork is in the briefcase. The description is "Page after page of small legalese." Understand "papers" or "documents" or "forms" as the paperwork.

Instead of listening to the insurance salesman for the first time:
      say "The salesman bores you with a discussion of life insurance policies. From his briefcase he pulls some paperwork which he
      hands to you."; move the insurance paperwork to the player.



Would be a good way to try and recruit non-programmer forum members if they're interested, I'm sure it could become very cool...and maybe we could assimilate a couple Literature majors to the Borg :twisted:

edit: then the game itself and instructions for playing it could be thrown in the Gaming fora and we could get feedback from other members.

The Red Spider Project has my vote too.
Last edited by Bharrata on Sat Mar 24, 2012 7:17 pm UTC, edited 2 times in total.

User avatar
Jplus
Posts: 1692
Joined: Wed Apr 21, 2010 12:29 pm UTC
Location: Netherlands

Re: Idea for a fun joint effort: xkcd hacking project

Postby Jplus » Sat Mar 24, 2012 7:16 pm UTC

So it's happening. Cool.

Still, I want to point out it doesn't seem like a good idea to restrict ourselves to a single project, a single language or a single framework. A heterogenous bunch of many parallel small projects is fun.

Btw, shouldn't it be called "the red spider project"? That name seemed to be most popular.

Edit: I see that qubital made a username "xkcd" on GitHub. Are we sure that Randall Munroe doesn't mind about that?

(New edit: typo.)
Last edited by Jplus on Sun Mar 25, 2012 12:01 pm UTC, edited 2 times in total.
"There are only two hard problems in computer science: cache coherence, naming things, and off-by-one errors." (Phil Karlton and Leon Bambrick)

coding and xkcd combined

(Julian/Julian's)

qubital
Posts: 25
Joined: Fri Mar 02, 2012 12:13 am UTC

Re: Idea for a fun joint effort: xkcd hacking project

Postby qubital » Sat Mar 24, 2012 8:25 pm UTC

Updated the name of the repo.
Although this is going to be a "heterogenous" project, it still needs to be coherent. We definitely need a real plan and timetable moving forward, as Mat suggested.
Mat wrote:+1 to these ideas:
  • A text stream processor that takes TeX formulas as input and outputs LaTeX typesetting code, with the same formulas but with hearts substituted for random parts of the original formulas.
  • Code obfuscator that outputs xkcd ASCII art
.

Out of these I would go with the obfuscator. Given libraries like Pandoc, the former seems too simple.

User avatar
ahammel
My Little Cabbage
Posts: 2135
Joined: Mon Jan 30, 2012 12:46 am UTC
Location: Vancouver BC
Contact:

Re: Idea for a fun joint effort: xkcd hacking project

Postby ahammel » Sat Mar 24, 2012 8:33 pm UTC

He/Him/His/Alex
God damn these electric sex pants!

User avatar
Jplus
Posts: 1692
Joined: Wed Apr 21, 2010 12:29 pm UTC
Location: Netherlands

Re: Idea for a fun joint effort: xkcd hacking project

Postby Jplus » Sun Mar 25, 2012 12:38 pm UTC

qubital wrote:Updated the name of the repo.
Although this is going to be a "heterogenous" project, it still needs to be coherent. We definitely need a real plan and timetable moving forward, as Mat suggested.

I kind of agree that some level of coherence is a good idea, but I think that should be possible without a timetable. We have a stable branch which can take care of the coherence; when people make additions to the project, they simply base it on the stable branch. When done, they merge it back into the stable branch so other people can base their work on that as well.

Besides, I see no reason why everyone should be working on the same thing at the same time. Why can't Nautilus and Mat write a code obfuscator on one branch while you write a 2d game together with some other people on another branch?

qubital wrote:[...] Out of these I would go with the obfuscator. Given libraries like Pandoc, the former [TeX love formula rewriter] seems too simple.

What's wrong with simple programs? Do you want to introduce a rule that only non-trivial programs are allowed? That would rule out people who just want to come by for a casual bit of coding. I added the "many small programs" clause because I wanted to accomodate for people with little time or short attention spans. Also, please observe the "all ideas are interesting" clause... I think that clause is worth too much to drop it.

Besides, as far as I'm concerned we're not supposed to use libraries everywhere we can. A TeX formula rewriter is small enough to reinvent the wheel, and I think that was supposed to be part of the fun in this case. Also, we should keep external dependencies to a minimum (except for programming languages) since people will already need to install quite a lot just to be able to build and use the project.


Final thing, because I can't stress this enough: for as far as I know the name "xkcd" is copyrighted to Randall Munroe, without any readily available license for people like us who'd like to use it as well (the comics are CC-licensed, but not the name). That means we should ask for his permission if we want to continue using the name as is currently the case. However, I'm not sure whether we should actually want that; perhaps it would be better to just change the "xkcd" username on GitHub to something else. Opinions please!
"There are only two hard problems in computer science: cache coherence, naming things, and off-by-one errors." (Phil Karlton and Leon Bambrick)

coding and xkcd combined

(Julian/Julian's)

User avatar
Steax
SecondTalon's Goon Squad
Posts: 3038
Joined: Sat Jan 12, 2008 12:18 pm UTC

Re: Idea for a fun joint effort: xkcd hacking project

Postby Steax » Sun Mar 25, 2012 1:00 pm UTC

I think we should avoid explicitly using the name 'xkcd'. While it's probably acceptable to use terms like "xkcd community", we don't entirely represent that, and it would be safer to use other names entirely.
In Minecraft, I use the username Rirez.

qubital
Posts: 25
Joined: Fri Mar 02, 2012 12:13 am UTC

Re: Idea for a fun joint effort: xkcd hacking project

Postby qubital » Sun Mar 25, 2012 1:34 pm UTC

I've changed the name to "the-xkcd-community" to help ease your fears: https://github.com/the-xkcd-community
if anyone would like to make further changes, append a 1 to the password found in the "password strength" comic to login.

User avatar
zed0
Posts: 179
Joined: Sun Dec 17, 2006 11:00 pm UTC

Re: Idea for a fun joint effort: xkcd hacking project

Postby zed0 » Mon Mar 26, 2012 3:32 pm UTC

I started on an adventure shell, it's in my forked project at: https://github.com/zed0/the-red-spider-project
It's written in Python which I've never used before so the code is probably pretty horrible.

User avatar
scarecrovv
It's pronounced 'double u'
Posts: 674
Joined: Wed Jul 30, 2008 4:09 pm UTC
Location: California

Re: Idea for a fun joint effort: xkcd hacking project

Postby scarecrovv » Mon Mar 26, 2012 5:14 pm UTC

One thing I think we should work out now, before too many people contribute, is licensing. How about this? It's the MIT license, with the first line tailored appropriately (I think):

All work is copyright (C) 2012 by the respective authors

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


Will that work? I'm not a lawyer, so I'm not 100% sure. Also is everybody happy with it (particularly Jplus since it's your idea, and qubital, zed0, and ahammel, since you've already started writing)?

Also, I've forked the project. https://github.com/nforrester/the-red-spider-project

edit: If people like that license, I'll add it to License.txt and you all can pull from me.

User avatar
zed0
Posts: 179
Joined: Sun Dec 17, 2006 11:00 pm UTC

Re: Idea for a fun joint effort: xkcd hacking project

Postby zed0 » Mon Mar 26, 2012 6:13 pm UTC

That MIT license looks fine to me, again I'm not a lawyer.

Edit: can I suggest that we change the-xkcd-community to be an organisation and then add active people to it, this would allow for easier pushing to the main branch as multiple people would be able to do it without re-logging in as the user.
You can change the user into an organisation at https://github.com/settings/organizations

User avatar
scarecrovv
It's pronounced 'double u'
Posts: 674
Joined: Wed Jul 30, 2008 4:09 pm UTC
Location: California

Re: Idea for a fun joint effort: xkcd hacking project

Postby scarecrovv » Mon Mar 26, 2012 6:34 pm UTC

zed0 wrote:can I suggest that we change the-xkcd-community to be an organisation and then add active people to it, this would allow for easier pushing to the main branch as multiple people would be able to do it without re-logging in as the user.
You can change the user into an organisation at https://github.com/settings/organizations

That sounds like a very good idea to me.

qubital
Posts: 25
Joined: Fri Mar 02, 2012 12:13 am UTC

Re: Idea for a fun joint effort: xkcd hacking project

Postby qubital » Mon Mar 26, 2012 9:20 pm UTC

scarecrovv wrote:
zed0 wrote:can I suggest that we change the-xkcd-community to be an organisation and then add active people to it, this would allow for easier pushing to the main branch as multiple people would be able to do it without re-logging in as the user.
You can change the user into an organisation at https://github.com/settings/organizations

That sounds like a very good idea to me.

Me too, although someone else will need to do it since I don't have a separate account available to adminster it. I think that's necessary, not sure though.

User avatar
scarecrovv
It's pronounced 'double u'
Posts: 674
Joined: Wed Jul 30, 2008 4:09 pm UTC
Location: California

Re: Idea for a fun joint effort: xkcd hacking project

Postby scarecrovv » Mon Mar 26, 2012 9:47 pm UTC

qubital wrote:
scarecrovv wrote:
zed0 wrote:can I suggest that we change the-xkcd-community to be an organisation and then add active people to it, this would allow for easier pushing to the main branch as multiple people would be able to do it without re-logging in as the user.
You can change the user into an organisation at https://github.com/settings/organizations

That sounds like a very good idea to me.

Me too, although someone else will need to do it since I don't have a separate account available to adminster it. I think that's necessary, not sure though.

Done. zed0, ahammel, and I are the owners. We can add people as necessary. qubital's email is still the official one. Do we in general or qubital in particular care about this?


Return to “Coding”

Who is online

Users browsing this forum: Bing [Bot] and 8 guests