
GitHub open sources Hubot (chat bot) - technoweenie
https://github.com/blog/968-say-hello-to-hubot
======
nosequel
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.

~~~
holman
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.

~~~
nosequel
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?

~~~
holman
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.

~~~
nosequel
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!

------
jashkenas
Direct link to the source code of the included Hubot Scripts:
[https://github.com/github/hubot/tree/master/src/hubot/script...](https://github.com/github/hubot/tree/master/src/hubot/scripts)

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

~~~
dpritchett
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.

------
llimllib
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...](https://github.com/markolson/linkbot/blob/master/plugins/image.rb)

vs. theirs:
[https://github.com/github/hubot/blob/master/src/hubot/script...](https://github.com/github/hubot/blob/master/src/hubot/scripts/google-
images.coffee)

~~~
adbachman
Oh yeah? I'll see your ruby campfire chatbot and raise you another http-aware
coffeescript heroku chatbot: <https://github.com/abachman/pat-the-campfire-
bot>

Ours can even receive web hooks. For example, it tell us when someone makes a
commit on one of our Github repos: [https://github.com/abachman/pat-the-
campfire-bot/blob/master...](https://github.com/abachman/pat-the-campfire-
bot/blob/master/src/plugins/github.coffee)

Pat has done a lot for our morale.

------
josephruscio
Awesome to see this out in the open now :-).

In the spirit of sharing, here's our campfire bot developed in Ruby on top of
the Scamp (<https://github.com/wjessop/Scamp>) framework:
<https://github.com/josephruscio/twke>

May not have started it if the hubbers hadn't taken so long with hubot ;-).

------
sudonim
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...](https://github.com/titanous/hubot/commit/6fc90ecd9b47cbb97140201b91335bc6a9850a85)

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.

~~~
atmos
This is fixed in the 1.0.2 release,
<https://github.com/downloads/github/hubot/hubot-1.0.2.tar.gz>

------
dustinupdyke
I first heard of Hubot from Zach Holman here:

[http://productblog.37signals.com/products/2011/04/hubot-
gith...](http://productblog.37signals.com/products/2011/04/hubot-githubs-
valiant-campfire-bot-expands-his-capabilities.html)

He also posts great stuff on his own site FWIW here: <http://zachholman.com/>

------
mitchellhislop
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

------
puls
I've written internal chat room bots at multiple companies. Making a
definitive open-source solution to this is long overdue.

------
willbmoss
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.

~~~
technoweenie
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.

~~~
dabeeeenster
There's nothing in the docs to explain how to configure IRC server
address/password etc?

~~~
dannytatom
Seems like it's done by env variables, same way it's setup for Campfire:

[https://github.com/github/hubot/blob/master/src/hubot/irc.co...](https://github.com/github/hubot/blob/master/src/hubot/irc.coffee#L17-19)

~~~
dabeeeenster
Ah great thanks. Shame there's no IRC server password support just yet it
seems...

~~~
xpaulbettsx
It's on its way, will probably finish it up this week

------
siong1987
If you are using HipChat, I already ported part of the code. It should be
usable. But, this can be made better.

<https://github.com/siong1987/hubot/tree/hipchat>

~~~
justinweiss
Also, if you're using HipChat, you should give robut a try:

<https://github.com/justinweiss/robut>

------
ConstantineXVI
Yummy. Think I'll try and adapt this to XMPP over the weekend and toss my
custom (read: ugly) Python bot for our office.

~~~
pedoh
What python module did you wind up using for your Python bot?

~~~
ConstantineXVI
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.

------
ethank
/Stops writing his own Hubot in coffeescript/node

~~~
dpritchett
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.

~~~
ethank
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).

------
listrophy
So.... who's gonna be the first to hook this up to a Nest Thermostat?

------
jonursenbach
If anyone is interested in another alternative, check out my node-smores
framework. <https://github.com/jonursenbach/node-smores>

Shameless plug, but I could use some help fleshing out useful plugins.

------
joshwa
Funny, just today I was revisiting my decently-widely-used campfire bot:

<http://github.com/joshwand/campfire-bot>

In the process of gemifying the bot and the plugins separately to make
maintenance easier.

------
shykes
It was already adapted for deployment on dotcloud!
<https://github.com/miyagawa/hubot-dotcloud>

------
gbelote
This is great, thanks GitHub! I've been procrastinating on writing my own
Hubot, now I don't have to!

------
grandalf
Hubot, meet Siri.

~~~
tombell
Siri meet Hubot - <http://news.ycombinator.com/item?id=3156221>

~~~
guywithabike
Or, if you don't want to pay for a phone number and text messages:
<https://github.com/tysontate/siri_says>

------
freemarketteddy
what would be a quick way to deploy hubot on my mac

~~~
nosequel
$ 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.

~~~
atmos
We've released 1.0.2 to deal with this. Sorry for the confusion,
<https://github.com/downloads/github/hubot/hubot-1.0.2.tar.gz>

~~~
nosequel
Thanks, I was going to put in a PR, but you got to it first.

