Hacker News new | past | comments | ask | show | jobs | submit login
Total.js Messenger – A small alternative to Slack (totaljs.com)
222 points by michaltakac on May 5, 2017 | hide | past | web | favorite | 119 comments

hmm, one of quite a few slack-a-likes out there.

One thing I wasn't too fond of in this case is that the Download: Source-code link on that page which has a github logo on it, doesn't actually go to a github page if you click it, it goes to a login/sign-up page for Total.JS and looking at the Total.JS github repo. page, this messenger app. doesn't appear to be there https://github.com/totaljs?tab=repositories

I agree, that feels deceptive. At least it infringes on principle of least surprise.

There're a couple of links in the top bar and down in the page to https://github.com/totaljs/framework

The messenger itself seems to be an (allegedly) open-source product that is only available to "premium members". Nowhere could I see a license nor source.


Price seems to be low enough not to matter but I'm not paying if it's not MIT/GPL or any other O.S. license (I'm not saying it isn't, I just can't find it).

That link in the README.md from their github repo redirects you to https://www.totaljs.com/messenger.

"Built on NoSQL embedded database"

Honest question, why is this a benefit?

Yeah, that seems like a weird thing to list as a 'feature'. Tell us why it's a feature that stands out over the competition, put that explanation on the list instead.

Probably to convince manager types to adopt it? NoSQL is a hot marketing word among people who don't actually write code. Just go to any conference about "big data" and listen ;)

It's like the word "XML" 10 years ago. Just say some BS about how you're adopting a new XML-based infrastructure for motivating a novel, globally-connected society with Web 2.0 standards compliance, and the managers will let you do what you really want to do.

This is a weird idea of what managers care about.

As a manager type, I care not about that. However, I do care about the per-user cost of a team messenger app.

Easier to setup if there's no external dependencies to install and maintain?

This is equally true of SQLite, so why call out NoSQL specifically? And which flavor NoSQL is it anyway :)

I'm not the author but I'll attempt to clear up the confusion based on what I've read.

Total.js's specific usage of "embedded" in this case means it includes 3000 lines[1] of pure Javascript that embeds the entire db engine source code into the project.

As for SQLite... as far as I can tell with Googling, there is no port of SQLite's C code to pure Javascript code that's maintained with popular support. (I found an old 2014 project[2][3] but it doesn't appear to be up-to-date.) Yes, there is a Javascript API[4] to SQLite but that's different from the SQLite engine itself being converted to 100% Javascript.

That's the nuance of "embedded" in Total.js' context. Yes, SQLite is an embedded db but nosql.js is even "more embedded" than that.

That said, whether Total.js embedded js db engine is as high performance and error-free compared to SQLite is unknown.

[1] https://github.com/totaljs/framework/blob/master/nosql.js

[2] 100% Javascript translated from SQLite C source --> https://github.com/lovasoa/sql.js

[3] http://stackoverflow.com/questions/15415076/sql-js-in-javasc...

[4] some Javascript driving a SQLite C Language compiled binary --> https://www.npmjs.com/package/sqlite3

Ok, that's a lot more interesting than just "links to leveldb"!

Genuine question, why does SQLite get so much hate? Is it because it's SQL, or it's embedded, or what? I've used it for a lot of projects where I have to move the server around a lot and it's super convenient

SQLite gets a lot of love when it's used for the right job.

It's not a replacement for a full-blown RDBMS. If you need a database for a multi-user application, you'll probably be better served by something like PostgreSQL. For single-user applications, however, it's quite fantastic.

SQLite is great! It's just that those of us using it with pleasure don't complain or feel the need to be vocal about how good it is :)

I don't know that it gets a lot of hate, it's just generally not considered to be an adequate production server database.

Huh? Not sure what you mean but it's not intended as a "server database". It is however used a lot in production as an embedded DB in applications. E.g. I've seen SQLite in lots of Android apps.

Right, that's what I mean.

Both Chrome and Firefox use it for storing history.

It's actually perfectly fine for many small server roles, as well.

That's true of any embedded database.

All the big names in NoSQL have a server you need to install and maintain. In the SQL world as well, actually.

SQLite, LMDB and RocksDB are all popular and embedded. They're not really web-centric though so don't get as much exposure on HN and its ilk.

Edit: Sorry if I sound like "that guy," just offering up some names in case people aren't familiar with them.

I think this is usually a sign that a company doesn't know how to market its product.

"An alternative to Slack"??

More like "Slack Clone that pretends to be open source, but requires you to pay to see the source code"

Why do you say that? There is a link to their Github page on the linked page?

Or just go with https://riot.im/ (https://matrix.org/). It's federated, support E2E and kicks ass.

Can you do all the useful user-friendly things slack does perfectly?

* Drag-and-drop file uploads. * Paste images from clipboard. * Search previous file uploads. * Video uploads with inline preview.

They're the sort of thing I always find open source solutions never get around to.

It depends on your client as matrix.org is a open protocol. Anyone could implement the features you long for, that's the beauty.

The following are for Riot Desktop:

* Drag-and-drop file uploads.


* Paste images from clipboard.

Did not work for me but it has been written and will work soon, if it does not already: https://github.com/vector-im/riot-web/issues/1297

* Search previous file uploads.

Dunno, there is a list of a room's files but I don't see a search option. Should be a trivial addition, maybe make a feature request? :)

* Video uploads with inline preview.

Sure, they are rendered in the message window.

Pasting imaging from clipboard is released, but is only implemented on the new (experimental) RTE editor, which has to be optionally enabled in Settings.

https://github.com/vector-im/riot-web/issues/1855 is the issue tracking indexing file uploads. Patches welcome if anyone wants to add this into synapse; it'd be pretty easy and fun (although obviously wouldn't work with encrypted rooms). https://github.com/matrix-org/synapse/blob/master/synapse/re... would be the place to index the file and chuck its contents into the existing full text search tables via something like https://github.com/matrix-org/synapse/blob/master/synapse/st....

My point is that Riot is FOSS, and if folks feel features are missing, please help us implement them O:-)

I don't know for Riot, but you may want to consider Mattermost as well (https://about.mattermost.com/).

What do you work with, that you need these functions so frequently ? I never once even thought about needing or wanting any of these features

Really? I use these features daily. Pretty much whenever I want to share something that isn't just plain text...

But what are you sharing ? pictures of what ? videos of what ? I only paste urls or logs .. and then there is normal chatting

Oh man, all of those things are so convenient once you start using them. If you've never used them, great, irc is probably fine. For me, I could never ever go back to irc, having gotten accustomed to all that stuff on slack.

For example, want to share a screenshot? Hit print screen to capture it, click to the browser, click to the tab, hit ctrl-v to paste, done. Instead of, what, uploading an image to an image-sharing site? I wouldn't even know how to do that at this point.

For future reference in case you need to share a screenshot elsewhere... It's literally the same process to post a screenshot to imgur. No account needed.

I am a big fan of greenshot. It takes over the print screen button. You then draw a box around the area you want to capture and then you can select to copy to clip board or open it in the sketching portion or even upload direct to imgur where it then puts the URL of the file in your clipboard.

How slack copy from the source ? I'm missing something or you never do ctrl+c ?

PrintScreen copies to the clipboard.

Oh thank you!

I use those features all the time.

Or just use Discord. Yes it is "meant" for gamer. But it does everything Slack already do. And better. My team use it.

If only it didn't have the whole gigantic material-y 2.0 UI with gigantic everything. I want a tiny tiny customizable window with everything compact and anything non necessary gone.

I would be curious to know which things you're referencing. Because I'm looking at it right now and it mostly seems fine. No icons or anything seem overly large.

Try and squeeze discord into a 400x400 window (or something similarly small and out of the way) to put in the corner of your screen. Mission impossible.

Squeeze an IRC client into 400x400, and you'll still have plenty of room to read what's going on.

IRC sample (it's not 400x400, but you should get the idea):


Discord sample for comparison:


I think there's a lot that could be done to make Discord more desktop real estate friendly. It's one semi-dealbreaker for me too. I can't have one single chat app require almost one whole new monitor.

If you're willing to mess with the CSS, there's always things like beautifuldiscord: https://github.com/leovoel/BeautifulDiscord

YES! Awesome thank you. Going to give this a shot.

You should be able to get a more IRC-like message view by changing to the "compact" message view under the appearance settings for Discord.

We use Discord on my team for voice chat, and it's amazing for that... but the text chat and integrations are seriously lacking.

Talking code in it just downright sucks.

It support almost every language, SQL, HTML, JS and probably more.

Ok... I might have been wrong. Native MD support is kind of nice.

It might have been a little while since I tried.

This seems to be open source and something you can host yourself.

Discord isn't, right? It's a nicer Skype, if we're talking deployment and freedom?

yes, Discord is wonderful and I see them taking some of slack's greatest features.

Can't view the source code without registering? No thanks. Wanted to check if this supports web-hooks, doesn't look like it does.

Not only that, you also have to pay to see the source code even after registering (which is okay with the OSS licenses). Any paying customer cares to clone it to github and show us? Since it's MIT licensed there should be no problem.

I kinda like the idea of pre-filling the email input fields with "@" and have never seen that before. It's pretty easy to remove or type my login address around your provided @ (which a recurring visitor rarely does, as you stay logged in). But every once in a while I find myself in a foreign environment / keyboard layout / device having no idea how to type that character.

I don't find this advantageous at all. Easy to start typing after the @ symbol, then you have to go back and fix it, just seems to waste time.

Agreed, a placeholder="your@email.com" works just fine.

what if my address is bob@accounts@localhost ?

You mean bob!accounts@localhost?

> Benefits: No NPM dependencies

While excessive dependencies is a problem and a liability, reinventing the wheel is even a bigger problem! NPM is there to solve a problem and when used correctly it brings HUGE benefits in many ways. Listing this as a benefit is clearly not understanding what NPM is for and part of the classical Not Invented Here.

Not relying on package manager does not imply that they rewritten all the functionality provided by relevant packages. They may still use 3rd party libraries but instead of adding dependency to package manager, they may pull their sources in build script or copy the sources into their own source tree.

That is true but also a small nightmare for anyone in Node.js ecosystem who wants to contribute. However from a quick glance it doesn't seem like it, it seems like they depend on total.js framework as expected. Only the main framework file index.js is already 15k lines long: https://github.com/totaljs/framework/blob/master/index.js

Seeing as the index.js file is 15,482 lines of code[0] all attributed to a single author, I seriously doubt it.

[0]: https://github.com/totaljs/framework/blob/master/index.js

Edit: apparently that's not the right repo… looks like the comments are right that the source code for the messenger app is not on GitHub.

Took me a bit to figure out that Total.js is a framework and the Slack clone (Messenger) is built on top of it.

Total.js itself appears to be 15k lines in a single file with no dependencies, built and maintained by one guy (for the most part). Insanity.

In which way is that I insane? (I might be a tad bit more insane :-/ )

There are a lot of use cases for no npm dependencies. For many who live behind a firewall in dev standalone packages can be a blessing.

I think there is a trade off, look at what happened with the left-pad dependency.

Having no dependencies is great, but you need a rather large community of contributors to offset that or you end up with a stagnant undocumented bundle of source code.

> what happened with the left-pad dependency

But that could happen to any dependency. Arguably, left-pad was the least-worst dependency for "what happened" to have happened.

I already spot an inconsistency on the first image

Some posts say Members / Developers like a full path, but the likes just say "Developers" with a link

I'm afraid that at this point Slack has too strong a network effect to be replaced with something better except in niche circles.

I get what you're saying but I'm not so sure -given it's team-centric (read: closed to outsiders) model - qualifies as network effect. That is I don't really benefit from anyone else on the "network" other than my team. So if your team doesn't want to Slack the friction here is so low (a need to setup your account) that the benefits (e.g., control, privacy, etc.) can be justified.

In addition the communication "niche" is MASSIVE. Communicate, as humans it's what we do. There's a reason why FB paid soooo much for WhatsApp, yes?

If add-on can make this product something between Slack and (the shitty implement of) FB groups, there's plenty of room for such a thing.

A few years ago, I might have said something similar about MySpace or Usenet or GeoCities.

The difference is no companies were using MySpace, Usenet or GeoCities internally. Companies are using Slack. It's easy to switch when it's just chatter among unassociated individuals.

That's a good point about Slack being B2B. Thinking about B2B lockin, Slack has lockin to the degree that businesses are heavily invested in its unique features rather than just benefiting from improved communication.

Maybe fax machines make a better technical comparison. Email replaced their intra-company use in a few years. What kept them in use is that they are customer facing. Similarly, Skype and such replaced copper telephone lines for internal conference calls and in many businesses cell phones replaced landlines for intracompany communication and the phone system exists because it is customer facing.

Why did you change the title to such a weird one? The page makes no claims of "killing Slack" or anything similar.

Open source slack clone is more accurate, but still cool. Might take a little wind out of their billion dollar sails :)

I disagree with all the hope of a naive programmer: It's awesome that closed-source UIs get replicated as open-source and become a commodity.

Paid software is great, I don't mind that, but software that you don't own doesn't become legacy. Infrastructures like Linux, Eclipse, Nginx, Java will be legacy, SublimeText and .Net won't.

Legacy in the context of software is generally used to refer to something obsolete, outdated or abandoned.


What benefits does this have compared to using matrix.org rooms?

Many comments here seem to miss the point. This is a sort of a template for a full-blown app based on their framework to speed up development amd illustrate using Total.js, more than a competitor to Slack, or even a "product". They seem to have other templates such as a CMS.

It needs to have mobile app for teams to take it seriously

I remember using Totaljs (the framework) for a pet project a couple of years ago when I was willing to check out the nodejs hype for myself. Websocket support was nice.

I should have probably gone for something more "traditional" like Express (to learn proper node), but I have to say that coming from Java/Spring, I felt quite at home with it. Also, learnt a lot about callback hell.

Nice to see they went on with the project and built some stuff on it. Open source looks like the way to go for them, which is a good thing for everyone.

Im trying to add messaging to a platform I'm building with a friend, this looks like a good potential fit. Im currently using Twilio IP Messaging, but the fact I need to implement the UI and doesn't supports attachements/pictures is aslo not great. Anyone has tried other good alternatives? One of our main requirement is that we keep control of who can be added to a contact list based on a transaction.

Does anybody know how it compares to mattermost?

Mattermost is to Twitter as TotalJS is to Slack.

From the title of their home page: "Mattermost -- Open source, private cloud Slack-alternative ..."

Why you compare mattermost to twitter ?

Argh! I'm sorry. I just realised I typed 'Mattermost' rather than 'Mastodon'!

I meant: "Mastodon is to Twitter as TotalJS is to Slack".


“Imitation is the sincerest form of flattery that mediocrity can pay to greatness.” --Oscar Wilde

Looks very good and I like that they have a screenshot right on the home page. I wish there was an anonymous instance to try it out without the tedious login process...

What's the business model here? Can they really build a sustainable business from 70-150€/month enterprise support? Are these guys funded?

Is there an unserviced market for people who like Slack, but worry that it has too big a resource footprint, that I'm unaware of?

I'm at least one of them. I'm travelling so use a cheap 2GB laptop, it's almost unusable.

No. Those people are all on IRC and have been for decades.

So, would using something like this eliminate most of the issues of 'not using Slack for FOSS'?

is closed source

has only one client

is a walled garden

From the installation instructions on the github readme:

>Premium Messenger (v2.0.0) needs latest Total.js from NPM +v2.5.0

What does this mean exactly?

Anyone recommend the most feature complete open source version of Slack?

Another, and better, alternative to slack: IRC.

Until they figure out a better way to bridge to Slack and other popular walled gardens, it will remain in the realm of those universal IM chat programs of yore, always chasing proprietary protocol changes.

what's the problem with the slack bridging btw? the fact it needs webhooks? (a puppeted bridge is on the horizon that logs you in natively as your slack user)

The problem with trying to clone slack isn't slack, it's that for anyone to care about using it, it had to be better than IRC. Even slack hasn't beaten IRC.

Looks like the website is down.

Yep, I'm getting a 408 error here.


It's not a slack killer, it is a free clone

How did this link rocket to the front page so quickly and get a bunch of points, but the comments are mostly pointing out aspects/criticisms of this product that show it is not in alignment with the HN community?


It was posted at the best time day for a US audience (5 am CDT) and the marketing for it is pretty solid. But yes I think so, it had around 10 upvotes in a minute or so.

Minor astroturfing (having real people you know with real HN accounts) rocket you to the front page is pretty easy and hard to detect. It only takes around 5 votes as long as you get them quickly and they're judged to be high quality votes. However if you don't keep getting votes (your post is totally horrible) you will drop off FP fast.

I can see why people find the submission intellectually interesting. In part because Slack is relevant. In part because Javascript frameworks and plain old Javascript are relevant. And in large part because just making something is relevant. Being intellectually interesting is the core tenant of Hacker News.

A lighter weight open source alternative to Slack is relevant. Even though it probably makes tradeoffs that people will complain about.

I think half of the "irc > slack" crowd are trolling or willfully ignorant, either one as a form of technical elitism/hipsterism. Slack is a nice UI, has a nice app on nearly all modern mobile platforms, has drag-n-drop uploads, 10,000 message history for free. Even if none of it is perfect, it has all by default. I have been informed that you can do a bunch of really complicated stuff to mostly match these features in IRC while also taking the responsibility of maintaining it. I've even been told the lack of receiving messages when returning from offline is itself a feature (for business use, "lost messages" this makes it dead on arrival). But when I show my less technical boss or startup co-founder "deploy new slack team quickly in 2 minutes" vs "IRC can be selfhosted, but maybe can be brought up to slack's feature parity in some indeterminate amount of labor hours", I think the choice is obvious.

Nah it's much more likely that the people complaining are the vocal minority. I think this is awesome! But I wouldn't comment about it. However HN is filled with people that are amazing at finding issues with things and who love to share those issues.

Registration is open for Startup School 2019. Classes start July 22nd.

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