![better slack client better slack client](https://www.chanty.com/blog/wp-content/uploads/2020/10/microsoft-teams.png)
![better slack client better slack client](https://assets.digitalocean.com/articles/coinbot/ZjFaS1i.png)
(While we were developing Libslack, our mobile clients shipped on different schedules they now share release cycles and ship on the same dates). To further complicate matters, there was overhead to integrate the library into the build system for each client, to ensure debugging worked properly across language boundaries, and to sync up Libslack with releases for each of the clients. Slack added Libslack when its mobile apps were already mature, so it was replacing existing functionality, and it had to fit into two different established architectures. Many companies successfully using shared libraries architected their mobile clients with one in mind. This brought the number of clients sharing Libslack down to only iOS and Android, which reduced the benefit. Due to conflicting caching strategies and difficulty integrating into the build system, the desktop client never adopted Libslack, and the WinPhone client was discontinued entirely.
![better slack client better slack client](https://i.pcmag.com/imagery/articles/023C30H9aSzX4hc207icIPo-8.fit_scale.size_1028x578.v1569484899.jpg)
When the Libslack project began, the initial plan was for it to be used by the desktop, iOS, Android, and Windows Phone clients. However, there are also downsides to this approach.
#BETTER SLACK CLIENT CODE#
As described in our previous post about Libslack, there were certainly benefits to sharing code between client applications - a shared library increases consistency of behavior and prevents duplication of similar business logic in every Slack client. Many of the drawbacks Dropbox experienced with their shared library rang true for Slack as well. We will talk about some of the techniques we used to achieve that. While we are no longer building a shared library, Slack still needs to maintain consistency and reduce duplication of effort, while developing separate implementations of client infrastructure. In this post, we’ll discuss the reasons why we decided to discontinue the Libslack project, and what we are doing in place of it.
#BETTER SLACK CLIENT UPDATE#
We were spurred to write an update when Dropbox published this post about why they also decided to stop using a C++ library in their mobile apps. In the intervening time, we decided to move away from using a shared C++ library in our clients, but we haven’t discussed that decision publicly. That post described how Slack used the Libslack library in its mobile applications to encapsulate shared business logic, and to handle syncing and caching of data. Two years ago, I wrote a post about Libslack, Slack’s shared C++ client library.