Comments (5)
You bet. We've been using and contributing to botkit
for quite awhile, so definitely are appreciative of it as a library, and there are some obvious places slapp
is influenced by botkit
. It would probably help to explain some of our motivations for writing this library.
One of our main motivations and needs (for writing our own Slack Apps) was a library that let us do so in a stateless way. The new Slack Events API is really compelling, in that it lets you write an HTTP based app, which is much easier to scale and maintain for many teams than a stateful websocket connection based one (using the RTM api). We didn't see an easy way to accomplish this with the way you write bots in botkit, using scoped callbacks to maintain your state during a conversation (that could change?). We also wanted our apps to handle restarts and rolling updates, which are solved problems when it's HTTP based, but more difficult when using websockets.
Another driver was to have a very thoroughly tested library that we could feel confident in as we used it, and as it evolves alongside Slack's feature-set. So far we've accomplished that with 100% code coverage in our tests, and that will remain a standard we keep for the library.
We also feel there's an advantage to having a library specifically tailored to Slack instead of multi-platform. Platforms all evolve differently, and it can become difficult to maintain a consistent API across all of them. While there are definitely use-cases for multi-channel bots, we think there are also strong and common use-cases for Slack-only Apps, so having a library w/ an API tailored specifically for them is advantageous.
If you stacked them side-by side, there are definitely things one does that the other doesn't. Namely botkit supports the Slack RTM API, which slapp doesn't support currently. That's by design on our part. Botkit also supports multiple platforms, while slapp is Slack only. We think these decisions allow slapp to have a more intuitive API when it comes to writing Slack only Apps. That's not an exhaustive list, but those are the more prominent differences that stand out to me.
from bolt-js.
I'm going to leave this open so other newcomers can see your thoughts. Feel free to close whenever though.
from bolt-js.
@selfcontained Thanks so much for the thoughtful response.
Always happy to see more options in the space as a bot developer.
from bolt-js.
@malonehedges I wonder if you have any thoughts given some experience with this?
from bolt-js.
@2color I actually haven't done much work with bots for a while so I'm not up to speed on the different frameworks available. I'd start by checking out this and botkit. There might be some other frameworks listed in the READMEs too.
from bolt-js.
Related Issues (20)
- How to built customisable form using slack api HOT 4
- Can I require choosing a channel when authorizing a Slack App? HOT 2
- Using AWS Lambda Handler while retrieving Bot Token and Signing Secret from Vault HOT 2
- Add slack_file object to image block element HOT 1
- How to document `optional` field from housing Block and how it applies to Block Elements within? HOT 11
- app_home_opened not firing on iOS client HOT 15
- Duplicate message getting created when trying to update bot message using chat.update HOT 1
- Unfurl links when the app is installed in the workspace HOT 2
- State verification during OAuth process HOT 8
- `context.matches.groups` becomes undefined after a Web API call HOT 8
- Is it possible to get typing event or indicator when a user in slack starts typing in a message HOT 1
- `files` property missing in `app_mention` event HOT 3
- How to track of deleted users HOT 3
- External select not refreshing HOT 4
- Issue with extracting headers from incoming requests HOT 1
- User scope not working in OAuth HOT 3
- Message event payloads missing `team_id` in enterprise on mobile slack clients HOT 9
- Issue with `respond` to update message returning cant_update_message HOT 12
- Is there a way to get the event envelope and more specifically the event_context for a bolt message event? HOT 3
- No way to reliably determine which user + user token a message event was delivered on behalf of. .authorize returns an installation for an arbitrary user from the same workspace. HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bolt-js.