Hacker News new | past | comments | ask | show | jobs | submit login
GitHub open sources Hubot (chat bot) (github.com/blog)
420 points by technoweenie on Oct 25, 2011 | hide | past | favorite | 49 comments



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.


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.


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


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

Pat has done a lot for our morale.


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 ;-).


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?


I first heard of Hubot from Zach Holman here:

http://productblog.37signals.com/products/2011/04/hubot-gith...

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


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


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


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.


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


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


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


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


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


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


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

https://github.com/justinweiss/robut


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


Don't wait on me, someone's already hacked it in before I could even get home and have dinner.

https://github.com/markstory/hubot/tree/xmpp


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.


/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).


too late for me :(

http://github.com/grifo/florinda

Looking at it, it's very possible that hubot's scripts are interchangeable with ours with a small translation layer.


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


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.


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.


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


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


Hubot, meet Siri.



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


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.


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


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


you shouldnt need to sudo "brew install" commands. if you do, you've messed up the permissions it's setup. there's a part in their faq about why they believe sudo is bad https://github.com/mxcl/homebrew/wiki/FAQ




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: