News for hackers. Stuff that matters.
Re:Microsoft Bot Framework by hellcow on Wednesday March 30, 2016 @02:12PM (#11391604)
This is amazing news, and I'm really excited for the innovation this is going to bring to the bot space.

As an alternative to this closed approach, I've been building an MIT-licensed bot framework using Golang, enabling anyone to build advanced AI bots. The API we've built seems to be a lot more robust than what Microsoft showed today. https://github.com/itsabot/abot

It's still very early (too early for a ShowHN), but there's tons of documentation and guides if you wanted to get your hands dirty before we do a proper release.

Re:Microsoft Bot Framework by codelitt on Wednesday March 30, 2016 @03:39PM (#11392294)
This is really interesting hellcow. You've done an impressive amount of work on this.

I just wanted to ask about the intelligence built into the bot. I dug through the code a bit (great documentation btw) and it seems that this is using a state machine you've written and custom plugins for different scenarios. How would one account for situations were a case keyword in a plugin is used in a different context? Say for example, I ask "What street number did you say?" to the bot with this plugin^1. It seems that these are items that would trip it up?

Also these bots would not "learn" or get better over time without direct human input correct?

I hope these don't sound like critiques. They're not. Just generally curious about how all of this is put together - particularly the state machine and then also how the plugins can be built (and improved).

[1]: https://github.com/itsabot/plugin_restaurants/blob/master/re...

Re:Microsoft Bot Framework by hellcow on Wednesday March 30, 2016 @04:47PM (#11392874)
Great points. The restaurants plugin you cited is using an outdated API. The new API uses triggers rather than a switch statement, which requires a combination of a Command and an Object to trigger a plugin's response (see plugin_weather for the modern API). This helps eliminate many false positive matches. But to your point, you're right, that scenario would still trip it up. I plan to add support for matching on n-grams going forward, so you could define different behavior for "street number" vs "phone number" and it would match the longest (in most cases the most specific) option when multiple matches are detected. It's actually similar to how many routers work.

You're also right that Abot plugins as they stand now do not improve or learn automatically over time. I've done some work on a training system which will enable a Facebook M or Magic-style human-aided training backend. It'll be a plugin just like any other which will eventually be hooked up to a neural net with optional centralized training (so you don't need a GPU rig or tons of data to get started). An early version of that is probably going to be ready going into June with the v0.2 release.

Thanks so much for the feedback. I'd love to continue this discussion and find ways to improve plugins and training. If you're interested, there's a mailing list here: https://groups.google.com/forum/#!forum/abot-discussion

Re:Microsoft Bot Framework by codelitt on Wednesday March 30, 2016 @06:29PM (#11393539)
Thank you so much for your reply. I'll have a look at the plugin_weather and see how that one works.

Regarding the neural net, I think that's an important feature because the most difficult part about guessing triggers is, well, guessing. Our language is awfully diverse and I think you'll get better results in the long run.

I've applied for membership to the mailing list. I'll keep my questions there.

Re:Microsoft Bot Framework by manojlds on Wednesday March 30, 2016 @02:30PM (#11391738)
Re:Microsoft Bot Framework by hellcow on Wednesday March 30, 2016 @02:34PM (#11391780)
While the SDK is open source (in the sense that you can read the source code), Microsoft isn't actively accepting significant contributions according to their Contributing.md, which is somewhat disappointing.

Any bots you build on Microsoft's framework as far as I can tell are also locked into a closed Microsoft-controlled system. Just because it's readable on Github and pushes messages to Slack doesn't really mean that it's open-source in the way we've come to expect from Linux, etc.

I'm building a free-as-in-speech alternative.

Re:Microsoft Bot Framework by mpeg on Wednesday March 30, 2016 @04:03PM (#11392492)
What are you talking about? It's MIT licensed and their contribution policy says they do accept features if you sign their CLA (which is exactly the same thing Google and any other big companies do)

What closed Microsoft-controlled system? You can compile that code in either Mono or coreclr.

I get you're not happy Microsoft just released something in an area you've been working in, but this is just FUD.

Re:Microsoft Bot Framework by movedx on Wednesday March 30, 2016 @05:20PM (#11393106)
"I get you're not happy Microsoft just released something in an area you've been working in, but this is just FUD."

Don't be a knob. That's clearly not how he feels at all.

Re:Microsoft Bot Framework by dang on Wednesday March 30, 2016 @08:20PM (#11394100)
> Don't be a knob.

Please don't call names in HN comments. Your comment would be good without that bit.

https://news.ycombinator.com/newsguidelines.html

Re:Microsoft Bot Framework by movedx on Thursday March 31, 2016 @07:10PM (#11401320)
Fair point. I apologise to all those involved or offended by my comment.
Re:Microsoft Bot Framework by mc808 on Wednesday March 30, 2016 @03:53PM (#11392403)
Looks like Contributing.md was updated 35 minutes ago to "BotBuilder is currently accepting contributions in the form of bug fixes and new features ..." (Significant contributions still require a CLA/CYA, but that's not uncommon.)

https://github.com/Microsoft/BotBuilder/commit/78e7730f49574...

Re:Microsoft Bot Framework by mpeg on Wednesday March 30, 2016 @04:09PM (#11392542)
I don't see why it would matter, just because you release something under a free license doesn't mean you should accept contributions.

Otherwise all our software would be capable of reading email.

Re:Microsoft Bot Framework by ZainRiz on Wednesday March 30, 2016 @04:21PM (#11392660)
Too late, Bot Builder reads email now
Re:Microsoft Bot Framework by joepie91_ on Wednesday March 30, 2016 @05:24PM (#11393140)
That's precisely why hellcow distinguished between "you can read the source" and "open-source". It's not just a legal difference.
Re:Microsoft Bot Framework by mc808 on Wednesday March 30, 2016 @05:33PM (#11393215)
If the license allows you to freely read, modify, and distribute the source, it's open source. If we add "upstream welcomes your contributions" as another criterion, that would disqualify a lot of open source projects including all of the abandoned projects out there.
Re:Microsoft Bot Framework by Eyas on Wednesday March 30, 2016 @07:48PM (#11393928)
The Linux kernel is most certainly open source but their criteria to accept contributions is no more open than this or many other projects.

The maintainer(s) get(s) PR approval. Big features that change the direction of the tool are welcome in forks but require maintainers to agree if merged upstream.

Re:Microsoft Bot Framework by hydromet on Wednesday March 30, 2016 @02:50PM (#11391893)
Perception is important as always: being perceived as "open source" is now vogue and seems to be more of a marketing function for large corporate behemoths (most mere mortals have no idea what a "pull request" is but the term "open source" seems to have become more mainstream in recent years).
Re:Microsoft Bot Framework by sremani on Wednesday March 30, 2016 @03:28PM (#11392225)
In their defense, if 100 or so Open Source projects where they (MSFT) accept PR does not convince you, I do not know what will. In this particular project, it could, that core group wants a level quality or functionality or other benchmarks before opening up for PR. It was done before, source was Open Source and incrementally when the core team felt comfortable started accepting Pull requests.
Re:Microsoft Bot Framework by wmccullough on Wednesday March 30, 2016 @03:43PM (#11392333)
I can see your point, but this isn't the case for Microsoft. This framework may be not accepting PR's yet, but just like the other 100+ repositories that do, I'm sure this will join shortly.
Re:Microsoft Bot Framework by TY on Wednesday March 30, 2016 @02:45PM (#11391858)
It's licensed under MIT license.
Re:Microsoft Bot Framework by wyldfire on Wednesday March 30, 2016 @02:47PM (#11391870)
Which "it"? The SDK?

Until/unless a community fork could gather critical mass it might not be worthwhile. That said, yes, it's certainly possible to do.

Re:Microsoft Bot Framework by primaryobjects on Wednesday March 30, 2016 @09:20PM (#11394359)
Glad to see more of these conversational UIs popping up. Here's one I've developed for node.js.

chatskills: A chatbot API inspired by Amazon Alexa skills and intents

https://github.com/primaryobjects/chatskills

No server required. It can run right in the console, web, slack, etc.

Re:Microsoft Bot Framework by illumin8 on Wednesday March 30, 2016 @02:28PM (#11391721)
Why the downvotes? The bots Microsoft demonstrated today are tied to the Skype client, which is a closed ecosystem. I'd much rather develop bots that are not locked into a closed ecosystem, and can function across any chat provider that supports XMPP.
Re:Microsoft Bot Framework by manojlds on Wednesday March 30, 2016 @02:31PM (#11391755)
The BotBuilder is an Open source framework (https://github.com/Microsoft/BotBuilder) to connect to Skype, Slack, Text, Office, Twitter and more.
Re:Microsoft Bot Framework by illumin8 on Wednesday March 30, 2016 @02:49PM (#11391882)
Thanks for that additional information - I didn't realize this was meant to be more open. Slack support is welcome.
Re:Microsoft Bot Framework by aalbertson on Thursday March 31, 2016 @02:08AM (#11395305)
"Slack support is welcome"

Correct me if I'm wrong, but isn't slack a closed ecosystem, akin to Skype?

Re:Microsoft Bot Framework by cloudhead on Thursday March 31, 2016 @07:31AM (#11396352)
I think he means open as in supporting more than one platform.
Re:Microsoft Bot Framework by NetStrikeForce on Thursday March 31, 2016 @11:27AM (#11397859)
I actually think he means "open" as in "not Microsoft" :)
Re:Microsoft Bot Framework by douche on Wednesday March 30, 2016 @03:09PM (#11392047)
Haven't had a chance to watch yet, was this integrating into consumer-grade Skype, or Office 365 Skype for business? The latter would be huge - I've been banging my head around the lack of openness there for years now, and at this point, anything would be an improvement on the crazy stuff I've been doing.
Re:Microsoft Bot Framework by useerup on Wednesday March 30, 2016 @05:23PM (#11393129)
Both consumer Skype and Office365
Re:Microsoft Bot Framework by dave2000 on Wednesday March 30, 2016 @02:51PM (#11391899)
"Why the downvotes?"

Dunno, but I winced at "in the bot space". I hate anything that smells of marketing/management speak. Going forward/we reached out... just use normal language like a normal person.

Re:Microsoft Bot Framework by BinaryIdiot on Wednesday March 30, 2016 @04:14PM (#11392597)
Awesome. Seems everyone is doing some sort of variation on this. I did something similar at the Launch Hackathon (http://devpost.com/software/sim) where the first use case is meeting scheduling. I'm currently trying to wrap up the website so people can start poking at it and then get the SDK going.

Looks awesome though good job!

Re:Microsoft Bot Framework by chuhnk on Wednesday March 30, 2016 @06:13PM (#11393441)
Hey, really great work on this. I think you're wrong in saying it's too early for Show HN.
Re:Microsoft Bot Framework by bliti on Wednesday March 30, 2016 @02:18PM (#11391645)
May I ask why Go? Merely curious.
Re:Microsoft Bot Framework by hellcow on Wednesday March 30, 2016 @02:26PM (#11391702)
A few key reasons, off the top of my head as to why we chose Go:

  1. It's fast and resource efficient.
  2. It's easy to cross-compile and deploy with a single binary and no external VM dependencies.
  3. It offers static typing and compile-time checks, which massively reduce development time for me.
  4. As Abot is a framework with downloadable plugins, Go's tooling handles most of the heavy lifting for us, like downloading and updating dependencies. Go's automated testing, linting, and formatting are really nice as well, and it's great to have those built into the language itself so there's standardization across an ecosystem of plugins.
While not one of the core reasons, I really like the Go community and the language (generics be damned). This is a personal, spare-time project, so my preference of working in the Go language definitely did factor in.
Re:Microsoft Bot Framework by hydromet on Thursday March 31, 2016 @07:11AM (#11396279)
> This is a personal, spare-time project ...

I very much admire and appreciate the work you've done bootstrapping Abot in your spare time. Now that Microsoft is in the game, my concern is we will see a "tower of babel" type of situation develop for bots emanating from the corporate behemoths (i.e., here come the Facebook bots, Google bots, Amazon of course, and Apple might play catch up too at WWDC). I much prefer grass roots growing from open source projects like Abot so as to no be locked in (financially, legally, cognitively) to one platform run by a large corporation seeking world domination.

Forensics specialist Jonathan Zdziarski wrote an interesting post recently titled "Free Software Always Costs Something" it is a good read -> http://www.zdziarski.com/blog/?p=5948

Perhaps Abot would benefit from having its own Foundation similar to the likes of, say, the Apache Software Foundation https://www.apache.org/ ... "The Apache Software Foundation provides support for the Apache Community of open-source software projects, which provide software products for the public good."

As Satya Nadella commented in this recent Bloomberg interview http://www.bloomberg.com/features/2016-microsoft-future-ai-c... how app stores and Facebook remind him of the walled gardens of 25 years ago (e.g., AOL and CompuServe), its what he didn't say (intentionally omitted?) in this interview which strikes me as more interesting. The rise of chat bots and Nadella's views about them remind me somewhat of the vision General Magic had precisely 25 years ago with their forward thinking ideas about personal digital agents and Telescript https://en.wikipedia.org/wiki/General_Magic ... if Nadella has indeed channeled some of the old ideas of 25 years ago and chat bots are to become the next big thing (Nadella thinks chat bots could be as big or bigger than the Internet itself, and the next logical step after app stores), and if indeed its time to break down walled gardens, then it would probably be very important for an implementation of chat bots to be a part of the global commons and available to all of humanity. Abot to the rescue?

Re:Microsoft Bot Framework by hellcow on Thursday March 31, 2016 @01:07PM (#11398705)
Thank you for the interesting comment. I share Satya's belief that these bots may very well become one of the most important technological innovations in our lives.

I'm very open to building a Foundation around this. My goal for Abot is to make it self-sustainable (paying salaries for key people to enable full-time development) and owned by everyone.

I admire the Apache Software Foundation for all the work they've done and can see a similar path forward with Abot. But recall that 24 hours ago it was really just me working on this. Give me another day or two :)

Re:Microsoft Bot Framework by bliti on Wednesday March 30, 2016 @04:29PM (#11392732)
Good reasons indeed! I work with Go, too. Will check put progress on the project and try to help out. :)
Re:Microsoft Bot Framework by amelius on Wednesday March 30, 2016 @04:56PM (#11392936)
Very interesting!

What is your approach to speech recognition and speech synthesis?

Re:Microsoft Bot Framework by hellcow on Wednesday March 30, 2016 @05:03PM (#11392983)
Thanks! We'll handle speech in a very similar way to how we handle SMS today.

There's an interface (shared/interface/sms) that defines the functions any SMS driver needs to implement, like `Send(to, msg)`. Then we have a Twilio driver that implements those functions, but you could easily write a Nexmo driver or a driver for any other service in the same way.

With speech recognition, we'll design an interface and build drivers for popular services, like Google's new speech recognition API. For the end user, that means you'll be able to pick and choose which service you'd like to use, and by adding it to your plugins.json, speech will be loaded up and handled automatically.

Re:Microsoft Bot Framework by codelitt on Wednesday March 30, 2016 @06:32PM (#11393558)
Re:Microsoft Bot Framework by sljd on Wednesday March 30, 2016 @04:25PM (#11392685)
"More robust" -- in what way? From what I've seen they are very robust.