49 comments

[ 5.8 ms ] story [ 143 ms ] thread
This is great, thanks GitHub! I've been procrastinating on writing my own Hubot, now I don't have to!
Here's our ruby campfire chatbot, developed for our office. Many more plugins! Ruby!

https://github.com/markolson/linkbot

edit: for comparison, our google image plugin: https://github.com/markolson/linkbot/blob/master/plugins/ima...

vs. theirs: https://github.com/github/hubot/blob/master/src/hubot/script...

/Stops writing his own Hubot in coffeescript/node
Mine is(was?) in Python with an XMPP lib. I hadn't gotten around to solving the async problem yet, so I'll probably just jump to Hubot.
I wrote one in Python (Twisted) a while back, but with any of these things: better for more to maintain it than just me.

Mine was XMPP but also supported other async protocols (Redis PubSub, Spread).

I've written internal chat room bots at multiple companies. Making a definitive open-source solution to this is long overdue.
Direct link to the source code of the included Hubot Scripts: https://github.com/github/hubot/tree/master/src/hubot/script...

... It's pretty great how short and sweet these are.

I just read through five of those and didn't even notice they were in CoffeeScript until I saw your username here!

Congrats on creating such an eminently readable language - it just melted away into the background while I was enjoying the actual logic and functionality described in the code.

Yummy. Think I'll try and adapt this to XMPP over the weekend and toss my custom (read: ugly) Python bot for our office.
What python module did you wind up using for your Python bot?
I'm using Wokkel (the bleeding-edge version of the Twisted XMPP lib IIRC); EDIT: if memory serves, I used this as an example: https://github.com/colagrosso/rainbot. Nothing particularly wrong with Wokkel, just the bot itself has grown tremendously ugly.
That would be awesome.
Its really a testament to GitHub how many of us started a project like this when we kept hearing about the greatness of Hubot. I am really pumped to see what the community comes up with as far as scripts go. Pumped to see at least the start of IRC support - I figured it was Campfire only, and would have to hack it myself to make it do IRC
Okay, sorry ahead of time for being a Debbie downer here, but there are no work-related or useful scripts in the repository. All the great stuff they talk about running builds, deploying code, checking on servers, getting test results are not there. I don't see youtube and google images lookups all that useful as a chatbot IMHO. So, what am I missing? It seems like people think this is cool, but I guess I don't get it.
We're just shipping the foundation right now. A lot of our other stuff is tied to a substantial amount of other services (our CI, our special build layer, various other home-grown services, etc). Over time — and judging from Twitter, very quickly! — github.com/github/hubot-scripts will have a much more comprehensive set of scripts.
Well that's good to hear. I didn't mean to sound like a dick by any means, I just didn't expect to only see mustache generators. Your posts on it particularly in your blog made me excited to look at the repo for the infrastructure / CI components.

Looking forward to the future.

And dumb question here probably, but was I wrong in thinking that it was originally written in Ruby?

We love Ruby, but Hubot's always been written in Node.js. (Today's Hubot was rewritten to CoffeeScript, which we also love.)

We're still in the process of porting a lot of stuff over from old-hubot, so we'll be making a lot more contributions ourselves yet.

Bah, my memory did not serve me well then. Looking at the scripts they are certainly clean now, so kudos on the re-write!

Hope you guys / gals are ready for a pull-request torrent this week!

I noticed that as well. Just glancing through the code it looks like they're going to have to add rudimentary configuration management before that can happen. Right now every piece of pertinent information about how and where to connect is stored in environment variables.

You can't really have CI monitoring or automation without somewhere to store the login info, at the very least.

At Bump we tried Campfire, but ended up using IRC (and use an open source IRC bot, https://bitbucket.org/yougov/pmxbot/src). I'm curious why you decided to go with Campfire instead of IRC.
Hubot supports IRC too (though probably not as well, we only hop in when Campfire goes down).

We depend on having a nice, customizable native Campfire client. We keep a custom js script in DropBox that Propane (http://propaneapp.com/) loads on startup. We've been able to modify the UI to show avatars, highlight successful/failed builds in Git push notifications, etc.

CF also gives us a few other nice features, like offline transcripts with search, and STARS.

Surely, you can do all this with IRC... and there are other chat apps that people like too. We're hoping that people add support for them to Hubot.

(note: I'm not a githubber)

It has some web-oriented features like auto-linkification, condensing long responses, embedding of images, tweets, videos...

It's better to think of Campfire as a client than a protocol; there's nothing it doesn't do that a sufficiently advanced IRC client + logging bot combo can't replicate. I prefer the latter, myself, but I can see the value it adds for many.

Agreed, I should have clarified. We don't just use IRC, but IRC along with other tools to handle pasting text and file uploads. I think what has always bothered me about Campfire (which I'm sure can be solved) is that it's not easy to do thing from the command line. I want to be able to pipe the output of git diff to my pastebin, or upload a log file from a remote machine.
what would be a quick way to deploy hubot on my mac
$ sudo brew install node.js

$ sudo curl http://npmjs.org/install.sh | sh

$ wget https://github.com/downloads/github/hubot/hubot-1.0.0.tar.gz

$ tar zxvf hubot-1.0.0.tar.gz

$ cd hubot

$ npm install

$ ./bin/hubot

Mine had some path issues that showed up as

env: coffee: No such file or directory

but manually setting the path to the .bin directory in hubot's generated node_modules seemed to do the trick.

So.... who's gonna be the first to hook this up to a Nest Thermostat?
If you're actually planning to deploy this to heroku, you may need to make one little change to the code. Everything worked great except for this:

https://github.com/titanous/hubot/commit/6fc90ecd9b47cbb9714...

Also, you'll probably be restarting a bunch to get hubot up, but seems pretty stable after that.

Nice work Github! Took me about a 1/2 hour to get it up and running.

I know nothing about node, but I had to add coffee-script as a dependency to my package.json file. Will I not have to do that cause of this fix?