MS Teams Rant
I have used instant messaging programs essentially since the world wide web began. I have used IRC, ICQ, XMPP (various clients), Pidgin (for access to various protocols), Slack, Discord, Telegram, Matrix, and many others. I think I have a wealth of professional (and hobby) experience with chat protocols and clients to know when one isn't all that good. And while I am admittedly pretty biased against all things Microsoft, in my opinion, Microsoft Teams sucks!
I say this a lot, and people ask me "what about it sucks" and I say something vague like "damn near everything". While that is being a little obtuse, there is a great deal about it I don't like and I'm going to try to outline each of them in this post. Of course some of it is just personal preference, and I will try to call out things that are just me being picky about it not working the way I want. So grab a comfy chair and a snack, this could take a while.
Most of what follows is a comparison between MS Teams and Slack, because Slack is the tool that I am most familiar with, the one I feel has some of the best interaction, and the one that people (Discord for example) seem to copy the most :).
I am on Linux (specifically Fedora 33) for my desktop chat, and an iPhone8 (running ios 14) for mobile. I have never used the Windows client, though I believe the app is based on electron, which should mean the experience is pretty universal; However, there are features that are just missing from the Linux version. I am not going to highlight that specifically, because it is mostly pointless things like the background blur, background images or the really weird thing where everyone shows up in a virtual auditorium. And also, except for the few things that others have mentioned, or that I can see because of remote settings, I would have no idea what else I'm missing :)
What doesn't suck about it?
First of all, at its core I can instant message people, they get a notification (probably) and can respond. It shows presence (kind of) so they know when I'm available and whether or not to expect a reply rapidly. There is heavy integration with other MS services, which personally I feel just junks up the app and makes it more bloated for a bunch of features that are not core to messaging. That is a personal opinion though, and others would certainly disagree. One thing that integration gets you is calendar awareness. You can view your calendar (complete with [Join] buttons for meetings associated with teams) and it will show you as "busy" when you have a meeting scheduled.
The video/voice/screensharing portion is not too bad, and is pretty much on-par with everyone else (Zoom, BigBlueButton, Jitsi, etc.) in the space. Nothing in particular stands out as a specific Teams thing that sucks here, they just all kind of have the same basic level of less-than-optimal-awkwardness, but overall not too bad. Since I am using the free version of Slack, I don't have video conferencing/voice chat capability at all to compare it to directly in Slack.
Microsoft is often known for "bloat", and things just taking up resources more than they should. Teams is no different. It is nearly double the resources of slack on my desktop and mobile.
The install size of Teams on my computer is 271MB. It's not huge, BUT it is nearly 1/3 bigger than either Slack (which is 184MB) or Discord (which is 167MB). Both of which are doing pretty much the same thing and all are based on Electron.
On my phone, the app itself is 212.5MB for Teams and 136.7MB for Slack. When "Documents & Data" space is factored in, which is basically the cache, Teams takes up 587.8MB! Slack is only 148MB and provides a method for "resetting" the cache, which Teams does not have an option. I use Slack far more often than Teams. I don't know if Slack is doing some management on it's own or what, but Teams is clearly just letting cache build forever. The only way to get rid of that wasted space is to delete and reinstall the app. This is a common issue with apps on iOS, and not unique to Teams. There are also apps that deal with this appropriately where Teams falls into the former group.
Currently, my Teams application is taking 521MB of RAM. This is resident memory. Compared to my current Slack utilization which is at 258MB. So as usual, pretty much double the usage. The CPU and Memory utilization shoot up considerably when on a video call. I get that video encoding/decoding takes more CPU, its just that it uses WAY more resources than anything else in the same space.
The general layout it is "OK". The tool bar on the left has things like "Activity", "Chat", "Teams", "Assignments", "Calendar", "Calls", and "Files".
Things get weird when comparing "chat" and "teams" for example. They look the same, but Teams (The messaging space, not the app) is NOT a chat. The messages on what looks like a team chat are actually called "posts", and they behave differently. They are threaded (which I don't personally care for, but some people like it), and it annoyingly does not show a whole post if it is too big forcing the user to click a more button to actually read the full post.
Throughout the interface, so many mouse interactions are required. One of the things Slack, in particular, does really well is to have keyboard commands for nearly everything. This is important in a chat app, because chatting requires your hands to be on the keyboard. If you are constantly changing contexts between mouse and keyboard, it slows down the overall action and it just becomes more cumbersome to work with it.
In all of the chat cases (teams' technically not chat...and the chat) the actual chat content takes up a ridiculously small portion of the screen. Just looking at the horizontal measurement (so it's actually a little less), the chat on a 1920px wide screen starts at 740 and ends at about 1540 leaving 800 px wide of actual chat. On a 1920px wide screen, that means 60% of the screen is taken up by things that aren't chat. A full 30% is just completely wasted, empty space. For a chatting app, it sure doesn't prioritize space for the actual chat.
This is a personal preference thing, but chats are displayed in a messages style interaction, where other people's chats are left justified and my chats are right justified. It also highlights mine in blue. Again, it's a personal preference but I would rather it be more IRC style with all of them aligned the same way. I don't mind there being different colors, it just seems pointless to me to justify them that way. Ultimately this is probably the exact reason that 60% of the chat screen is wasted. If the full screen is used, and right/left justified the messages your eyes would have to track a lot of pixels to follow a conversation. There are no settings to change this behavior, and no way to override it with a theme change.
Using the same horizontal metric, Slack utilizes 85% of the screen for chat, only missing 280px on the left for the channel listing and leaving 1640px for the chat content. Apart from the minimal amount of space around objects, there is no completely wasted space in the slack interface.
In Slack, you also have some additional settings to tweak the layout to make the most use of the already-ample space used. These include how to display names, and a "Compact" or "Clean" message style. There is no way to customize the message style in Teams.
Teams - The channel type, not the app
I keep specifying "Teams, the channel not the app" to note that I am specifically talking about on particular area of the Teams app. This is another kind of general pet peeve of mine with Microsoft: the naming of things often causes confusion in itself. They choose kind of generic names (word, teams, access) and without specifically calling things out is can be confusing if I am talking about "a word" or "word, the microsoft word processing app". Same goes for "Teams the application" vs. "Teams the channel".
Referencing documents in team chat
Ok, so you have all these things you can embed in a team. If you actually want to collaborate with them from the chat and the embedded things, it's essentially impossible. Even though the embedded things are called "tabs" they do not work as tabs where the content persists between switching. So if I am in the team chat working on a OneNote embedded in a tab, each time I click on that OneNote it is basically like the first time I clicked on it and it will take at least 5 seconds to load the page. It does at least remember where you were, but it takes so long to switch back and forth that it really isn't a good way to interact with it. It is be better to just open the OneNote somewhere else and swap back and forth between teams and OneNote in your browser.
Because of the "sharepointiness" of teams, it is incredibly easy to create a team space to collaborate on things. While this sounds like a good idea, in practice what ends up happening is that you end up being a member of hundreds of teams with little snippets of chats spread out amongst dozens of groupings. This is not exactly a problem with teams itself, but more how the organization uses it. However, it does make the overall experience worse because it just highlights all the other problems (like adding even more locations a file could be shared for example)
There is an embedded emoji picker, which doesn't have a lot of "standard" emoji. For example, if I want to say "Teams is 💩" , I have to use the system emoji keyboard because teams doesn't include the :poop: emoji. Does this really matter? No, of course not; however, it is really annoying when something is half-implemented and you are coming from Slack which has all of those. And while we are on the topic of emoji, the emoji shortcuts are triggered by wrapping things in parentheses, which means you can get false positives. In Slack, shortcuts are wrapped in colons. That technically could still artificially trigger, but it's less common than with ()'s.
In Slack, you can also customize emoji by uploading an image and picking a :shortcut:.
It's a little bit unfair to compare the giphy integrations between Slack and Teams because Slack doesn't actually do it natively, it relies on a bot to be installed. On Teams, the gif previews are comparatively like looking at a postage stamp on the surface of Earth from the upper atmosphere. At the point I get to the images, I'm already agitated that I have to take my hands off the keyboard to move to the mouse, then have to hunt down the "gif" button. I click it and am presented with tiny grid of pictures that I can often not see the text included because they are so small. Using animated gifs in chat is supposed to be fun, and for me the interaction in Teams is just a bit more cumbersome.
Also of annoyance, the images only show some small portion of the loop. So I could do a search for "why", see the Spongebob image and think "that'll do". When I actually send it, I notice that it only showed me the first second of the animation and the rest of it was "don't you go fuck yourself". Ok...that specific example never happened, BUT the fact that I don't actually see the whole animation until I pick it does lend itself to some misunderstandings if there are further frames that don't make sense in the context of the conversation.
While we are on the topic of loops, Teams decides it is best that it only loop a gif 10 times, and then it presents a play button for you to view it again. Why? Animated gifs typically don't have any media controls. Of course that also means if I am in another window it is now up to me to hit the play button to see the animated gif someone posted to the chat. This is probably another area that is ripe for a setting to configure how someone wants to interact with gifs. Personally, I am of the opinion that an animated gif should just keep looping until it scrolls of the screen and I can no longer see it.
The steps required to pick the first image in Teams is something like 'Take hand off keyboard -> Move mouse to gif button -> Click gif button -> type search term -> find tiny image that looks like it might work -> Click image'. Now I'm at a message with an image in it, I still haven't sent anything. Now is the point where I will see something inappropriate with the image and have to start the process over again. Compared to Slack which is 'type /giphy search term -> tab/shift tab + space/enter to shuffle or send (optionally Take hand of keyboard -> use the mouse to hit send or shuffle buttons)'.
In slack, when you paste a URL, it will intelligently generate a preview. Which means when you paste a link to an image, it will expand to show the image.
In Teams, the experience is...well...different. It shows the image, but it has a giant window obscuring the image with the URL of the image which you can already plainly see in the text portion of the message. To add to the pointlessness, the URL in that overlay is truncated. So what was the point? I can't see the image preview OR the URL. The whole thing makes it completely useless.
The second image gets worse the more you look at it. Notice that not only did it overlay the completely pointless URL over top of the image, it cropped the image horizontally also. The first pane you see in the comic in the Teams preview is the second panel in the comic. It chopped the preview and then stuck a useless URL (since it is already displayed, in its entirety, in the text) over the preview making the preview completely useless.
Also, if you think "Well can't you just click that [X] to make the stupid overlay go away?". No. That removes the preview altogether. Which technically might be an improvement compared to this abomination of a preview.
If you paste a link to a youtube video, it previews some basic information about the video, but doesn't feature an embedded player. You have to click the link (or the preview image) to actually view the video.
This should really be called "Interactions or mentions since the last time I was annoyed by it and cleaned them out", because that's what it is. There is no way to control the list, so any time you get an update for any chat you are in, any time someone @mentions you, or you miss a call, all of that goes in this list. You can manually "hide" them but you have to personally cull them.
EDIT: It seems since my initial complaint on this the behavior has changed. You now no longer can clear the notifications. All you can do is Mark them read/unread. It appears that it now shows a rotating list of things up to a month old. I'm OK with this. I would still kind of rather there be a control that I could set it to a week if I chose, but not having to manually manage it is definitely an improvement.
File sharing in Teams is quite frustrating. That is because there are many locations that a file could be shared. You can attach it to a team space, a group chat, an individual chat, or a meeting. The "Files" button in the left-hand navigation takes you to files you most recently opened, but there is no list of files that were recently shared to you. So if you forgot that you were in a meeting when your colleague shared that file (and didn't share it to you directly) it is actually pretty difficult to find it.
If you opened a file, it will at least show up in recents, but if someone shared a file in a meeting for you to review later, it is a scavenger hunt to figure out where it was left.
I know Windows people who have told me this isn't a problem for them, so perhaps this is just a Linux thing (or maybe even specifically a me thing). In my case, my desktop Teams instance is always the preferred presence. What I mean is, if I have Teams running on my desktop, I will not get notifications to my phone when new notifications come in. They will wait until I get back to my computer and (maybe) see them.
I have integrated exactly one external service with Teams and it was a gigantic pain in the ass. The way authentication and API access is handled in general involves so many more hoops to jump through. Take a look at any bot-type thing that offers both Teams integration and Slack integration. Look at the details for what it takes to install the same thing between the two platforms. The Slack side will be something like "Add the app to your workspace, allow it to post in your channel, done". On the teams side you have many more steps to get it to install in the first place.
As an example, check out the documentation for Mio.
To install Mio on Slack, it's essentially one click and then you get '/mio' commands to interact with it
For Mio on Teams, There are a lot more steps. That isn't even including the amorphous "onboarding process" that isn't covered in that document.
Teams is a proprietery chat platform (technically-speaking so is Slack). As such, if you don't want to use their client, you are stuck. There are no choices. You either use their client or you don't chat on their platform. Open protocols (like IRC, XMPP, or Matrix) are better in this respect. If you don't like some crappy thing the client does, just use another client. That's not the case with Teams.
Using Matrix and looking into bridging options, I discovered very quickly that there is an integration for most any other chat platform. Just look at the list of bridges available. Even proprietary crap-fests like Facebook have a bridge, but there is nothing for Teams. This doesn't necessarily mean that it is just too proprietary and can't be integrated with another client. It could just mean there hasn't been enough interest for someone to spend the time on it. After all, Mio, referenced above, did get their Universal chat integrated with Teams, so on some level it's potentially possible.
This section isn't specifically a hard fault of Teams. And certainly "Does it have a matrix bridge" is not really a valid metric to determine the worthiness of a chat platform. I do think it reflects on the overall workability of the platform though. This is just based on personal experience with integrating a bot with Teams and extrapolating that experience to the assumption that is why there aren't more integration options with Teams.
First of all, I am happy that there is an actual RPM package, and not an .appImage. While appImages are easy to make a cross-platform package, I definitely appreciate having a native .rpm file. Because there are web assets embedded in the Electron app, there are updates that happen outside of the package manager. It is never clear what changes have been applied, and there is no changelog to reference (at least not within the app). Occasionally I see this ambiguous "You've got the latest updates. Enjoy", with no clue as to what changed. Going through the app to the "Check updates" menu tells me to get updates through my system package manager.
IOS App-Specific issues
Missed Calls Notification
One of the most annoying things on any mobile app is a notification that won't go away. The "missed calls" notification is one that tricks me all the time. The problem is, the "Calls" button is hidden under a "More..." button with nothing on the app screen hinting that there is a notification in an area that isn't visible. You just have to know to check that area and clear out anything in there.
Reading history in an active chat is impossible
I don't use the IOS app all that often. Recently there was an issue that prevented me from logging in on the desktop and I was on the mobile app. There was an active chat going on, but I had missed the beginning of it. So, I scrolled to the top of the chat to read what I missed. And every time a new message came in, the view jumped all over the place and snapped down to the new message. And I tried to scroll back up, and a new message came in and snapped me back down. This seems like an actual bug, but that is also a very basic chat interaction that should not be that broken in a version 2.x product.
Notifications number by chat
If there is 1 new message in "general" chat, the app notification will show 1. If there is a new message in that chat, the app notification will still say 1. If there are 30 new messages in general, and one in "secret chats", the notification will now show 2, because two chats have updates.
If I have notifications from system monitoring going to a channel, for example, I would prefer to know that 30 things are in an alarm state with my notification badge reflecting that there are 30 new messages to deal with.
I'm honestly a little mixed on this. For the example given, I would prefer to have the individual messages count. Element chat for IOS does the same thing on Matrix. In that case, I am in a bunch of random public chats and don't particularly want to know that there are 300 new messages in #fedora because someone touched a nerve complaining about Silverblue. In that case, I mute notifications for noisy channels that I don't care about the number of messages, I'll get to it when I get to it.
Overall it would just be better if there were a notification badge setting to say "Number of chats or Number of Messages" as the badge.
App store Changelog
'Bug fixes and performance improvements' That's the perpetual update for almost every single update. This is not a problem unique to Teams, but it is frustrating when you go through the effort of clicking through to see what changed to know what to look for, and instead get "some stuff was updated". Gee, thanks.
Slack, on the other hand, always has explicit changes presented in an often comical way that makes it informative and entertaining. I'm not saying everyone has to do it that way, but a little more information would be be nice. What performance was under-performing that was fixed? What bugs were fixed. Some basic info would be nice.
Wow, you made it to the end? Well thanks for reading my rant about MS Teams. Some of this may come off as me just being salty because I'm not a fan of MS stuff, and am just "mad" that I'm being made to use Teams professionally. If I thought teams was actually better, I would like to think I would admit that I was mistaken. Some of the things I've outlined above are admittedly a little nit-picky. One of the biggest things is that it is billed as a chat application. To me, the layout and interaction within a chat demonstrates that it really isn't a chat first app. It is more like a universal entry point to all things office 365 with chat as a basically-functional afterthought.