
Yakyak: Electron Chat Client for Google Hangouts - obilgic
https://github.com/yakyak/yakyak
======
mcweaksauce
For those of you that use Pidgin, there's also a really great libpurple plugin
that I've been using: [https://bitbucket.org/EionRobb/purple-
hangouts/](https://bitbucket.org/EionRobb/purple-hangouts/) It works really
well, but it doesn't have history scrollback. I'm happy when I don't have to
open up my browser to chat with people.

~~~
dec0dedab0de
_It works really well, but it doesn 't have history scrollback_

That caused so many arguments between me and a former girlfriend.

------
Justsignedup
From the perspective of the author. This is fantastic work. Keep up the
enthusiasm, and I hope to see more from you.

From the perspective of google, they should have done this 3 years ago. The
chrome hangouts plugin is an atrocity. But at this point I've already fully
abandoned google hangouts except for video chats at work. Too little, too
late.

~~~
mdeeks
Strongly agree. I discovered YakYak a couple weeks ago and haven't looked back
at the plugin or native apps. For those curious why people may not like the
alternatives:

Chrome Plugins/Apps:

\- Cmd-tab doesn't work properly with apps. It will bring up my browser window
instead.

\- My browser has to be open. Chrome has a large battery impact even when just
sitting there. I often completely close Chrome when roaming. YakYak barely
even registers

Pidgin/Adium:

\- You don't see missed messages from when you weren't logged in. I used to
get in lots of fights with my girlfriend because of missed messages.

\- Can't paste images/screenshots from the clipboard. Maybe Pidgin supported
this? Adium doesn't.

\- History isn't shared between multiple computers (chat history on home PC
isn't available on work PC)

YakYak solves all of those problems for me. I am thrilled YakYak exists. Huge
thanks to the author.

~~~
bisby
If you prefer pidgin/adium: [https://bitbucket.org/EionRobb/purple-
hangouts](https://bitbucket.org/EionRobb/purple-hangouts)

Basically implements full hangouts into pidgin (connects to hangouts over
"hangups" protocol rather than xmpp).

It still has some minor issues. from finch (ncurses pidgin) for example, it
makes links that send people to a blank page with some hangouts.google.com/
proxy stuff going on that never gets followed. it also has weird issues with
instantly marking some conversations as read. Otherwise I've been viewing it
as an inplace upgrade for using xmpp on pidgin.

~~~
mdeeks
No Mac support? or is it just not documented?

~~~
bisby
There was a comment on the bitbucket a long while ago about "how to build for
adium" but i no longer see that. :(

------
dmytrish
The name of this project reminded me a silly Ukrainian joke:

— ... ("have you been in the zoo?") — ... ("yes, I saw a yak!") — І як як?
("so how was the yak?") — Як як як. ("Like a yak")

~~~
oblio
To clarify, for the Cyrillic impaired, like myself: the last sentence is
basically: "yak yak yak", right?

~~~
dmytrish
Yes, exactly.

------
saghul
I don't understand much of the criticism in this thread so far.

Yes, the app is built using web technologies and uses Electron, but AFAIS it's
a fully fledged client, not just a wrapper around a website. The interface is
built right there with CoffeeScript and LESS, and there is a Hangouts JS
library which they use.

I'm not a big fan of using HTML/JS/CSS for everything myself, but this project
looks really complete and well built. If it was built with C++ and Qt someone
would come and say "why didn't you use Gtk? or <framework X>?".

Keep up the good work.

~~~
Lazare
> Yes, the app is built using web technologies and uses Electron

Right. It's a chromium window wrapped around some HTML and JS, aka a website.

> AFAIS it's a fully fledged client, not just a wrapper around a website.

Nope, just a wrapper. True, it's a local webpage served on your desktop they
wrote themselves, but it still has all the disadvantages that you incur when
your client is just a web page in a browser.

> If it was built with C++ and Qt someone would come and say "why didn't you
> use Gtk?

Electron has enormous drawbacks which C++ and Qt do not have.

~~~
RubyPinch
> Nope, just a wrapper

Nope, its still a fully fledged client, because being a capable client is not
/that/ dependant on the UI rendering method, believe it or not.

> but it still has all the disadvantages that you incur when your client is
> just a web page in a browser.

No? Do you think electron exposes absolutely nothing? There is code being
executed with access to the rest of your computer, this has the same access as
any other language to the rest of your computer, I mean, hell even if you
wanna do something weird, you could write some stuff in C (or use the
pythonesque ctypes module), and then run that in turn, once again with access
to the rest of your computer.

I could understand these complaints if this was an important critical thing,
but its a chat client, its only job is to display text nicely with formatting,
browsers are pretty good at that

~~~
kitsunesoba
>but its a chat client

That's part of the problem. Electron apps are unavoidably heavy - huge
binaries and 250MB-300MB+ memory consumed regardless of the task at hand. A
simple "hello world" in electron without an ounce of JS or CSS will exhibit
these traits.

Chat is a very simple sort of application. We've been doing it for decades now
and have had functionality that approaches that of hangouts that works
perfectly on machines with tens and hundreds of times less power and resources
available. There's barely an excuse for such a program to consume more than
50MB of RAM, let alone 300MB+.

Some may argue that "unused RAM is wasted RAM," but I'd argue that this
statement holds true only if the RAM that would be used is needed for actual
functionality. If it's baseline requirement for the program to run at all,
something is wrong unless the program is monstrous in nature (think AutoCAD,
Maya, etc).

~~~
kbenson
This is only a useful argument when comparing to an alternative that does not
exhibit those traits, otherwise you are saying it's worse than nothing, which
it is not.

If you want to say this is worse than X (where X is some theoretical desktop
hangouts client) because it uses too much RAM, then do so, and we can compare
and contrast what that RAM usage gets us in this case, and what the trade off
is.

If you just want to make a case that the RAM usage is too much for _any_ chat,
and if that's the baseline requirement for hangouts on the desktop because
there are no other clients without those same problems (?), then you can
propose a different protocol which doesn't have those restrictions.

If you aren't willing to do any of that, then all you're really doing is
telling people not to use a technology because it uses a lot of RAM, on
principle, regardless of whether it would be useful to them. I don't think
that's a good stance to take.

~~~
kitsunesoba
>I don't think that's a good stance to take.

You're probably right, but it's also no good to sweep the shortcomings of a
technology under the rug and forget about them. With Electron and similar web-
wrapper technologies becoming more popular, these issues should be put out in
the spotlight and consistently pointed out so that they might be addressed.
Brushing them aside is a disservice to everyone, developers using Electron
included.

~~~
kbenson
Sure, but presumably the technology was chosen because there were trade-offs
and the developers found it worth while. It's the same argument as writing a
program in a dynamic language, in Java, or in C/C++ (or any other bare-metal
low resource implementation, such as Rust). Complaining about a program being
written in Java because it's bloated and used too much memory isn't useful in
itself, if there are no better alternatives with respect to those complaints.
Pointing out the alternative forces you to think about it more critically.
Saying use C++ instead of Java opens you up to thinking about the choice the
developer made in using Java. Perhaps it was specifically to avoid some
pitfalls in C++, or because it was perceived as easier to work in. Similarly,
saying to use Java instead of Python opens you up to those same
considerations.

All that's really just a long way of saying, maybe the developer decided that
using this system accelerated their development enough that it was worth it.
It's up to the users to choose to use the program, and if they find the
drawbacks of the developer's choices to be not worth it, then they can choose
something else (if it exists). If nothing else exists, then maybe the reason
the capability exists at this point in the first place is _because_ of those
developer choices, in which case it's hard to fault them.

------
HugoDaniel
Like many "desktop" current apps it opens another browser that only loads one
page: the "desktop" app.

It uses electron ([http://electron.atom.io/](http://electron.atom.io/)) which
uses nodejs+chromium.

~~~
spiderfarmer
I am happy to see a more webapps break out of the browser. That way the apps
make better use of the features of the OS.

~~~
HugoDaniel
Be aware that this is not the case of an app "breaking out of the browser":

    
    
      BrowserWindow = require('electron').BrowserWindow
      .
      .
      .
      mainWindow = new BrowserWindow {
        width: 730
        height: 590
        icon: path.join __dirname, 'icons', 'icon.png'
        show: true
        titleBarStyle: 'hidden-inset' if process.platform is 'darwin'
      }
    

in
[https://github.com/yakyak/yakyak/blob/master/src/main.coffee](https://github.com/yakyak/yakyak/blob/master/src/main.coffee)

~~~
SlashmanX
I would've assumed that code was implied by the whole 'It uses Electron' thing
in your first comment. And it is breaking out of the browser seeing as you
don't need to open a browser and type in a URL to view it.

------
marczellm
Somehow I still can't consider a webapp in a window a 'desktop app'. I'm still
waiting for QHangups to migrate to QWebEngine.
([http://github.com/xmikos/qhangups](http://github.com/xmikos/qhangups))

------
rogerbinns
There is also a Chrome extension for hangouts, and it can even run when Chrome
isn't visible (authored by Google). Perhaps most useful is the "transparent
ui" mode, where you have floating heads - see the second screenshot at
[http://www.omgchrome.com/google-hangouts-chrome-app-
update/](http://www.omgchrome.com/google-hangouts-chrome-app-update/) \-
although for a change that is available on Windows and Linux, but not Mac!
(The page also has a link to the Chrome extension.)

~~~
rrdharan
You mean there's a Chrome _App_ in addition to the Chrome Extension.

The problem with the Chrome App is that you still need to have Chrome running
which on OS X means the Chrome dock icon, and any other downsides of having a
running Chrome process (e.g. battery life impact).

------
joenathan
The Windows build doesn't appear to work at all. In addition to getting file
path too long issues, once I've accommodated the app by extracting on the root
of my drive it never loads past a white screen.

------
sreenadh
I have been using an app named Franz @
[http://meetfranz.com/](http://meetfranz.com/).

Its multi-protocol and based on Electron. Not opensource from what I know.

~~~
mdeeks
Franz unfortunately frames the hangouts.google.com interface which has
terrible bugs when multiple people are chatting with you at the same time. If
you're typing in a chat window and someone else messages you, it pops over
your current chat window and the last half of your sentence types in the new
window. If you switch back it'll pop back over every single time the other
person messages you.

------
dang
As a sop to those who don't consider Electron apps desktop apps, we
s/Desktop/Electron/'d the title. Please let's discuss _this_ app now.

------
donatj
Why would I use this over say Adium or similar multi-protocol app?

~~~
mdeeks
See my comments here:
[https://news.ycombinator.com/item?id=11925103](https://news.ycombinator.com/item?id=11925103)

------
gobusto
At first, I assumed that this had something to do with
[http://www.yakyak.org/](http://www.yakyak.org/)

~~~
Symbiote
I assumed [https://www.yikyak.com/](https://www.yikyak.com/), which is a local
chat app (you see messages posted from people nearby). The name sounds very
similar, I'd be worried about infringing Yik Yak's trademark.

------
imtringued
Other than a green bar with a white box on the left side and a grey box to the
right side what am I supposed to be seeing here?

------
Axsuul
Really glad to see this. Any plans on implementing voice dialing/receiving
(Google Voice)?

------
thefastlane
i don't know much about Hangouts -- am i connecting with/using Hangouts when i
am using Gmail's chat feature?

------
jaimehrubiks
I'm kind of tired of the criticism on every post about an up built on
electron. I mean, we all know the disadvantages it has with respect to native
gtk or qt, but we also must remember the advantages it brings to developers to
write multiplatform and VERY (not highest) performance apps in an easier way.
Like it or not it is the era of websites. For people like me who always
preferred desktop apps, this is good news because many website-like apps are
ported in a "almost native way". Anyway, web technology like html+js+css is
not that bad and it's evolving and improving fast as front-end.

~~~
yoz-y
For me the biggest problem with web apps in a browser are keyboard shortcuts.
E.g.: does Cmd+P print the webpage or the contents of the edited document?
Electron applications solve this problem. In the end it is important to stuff
the stuff requiring performance into a native module and you are set. Having
worked with JNI I prefer writing Node plugins and writing interfaces in HTML5
is great compared to stuff like Gtk (and even Qt)

~~~
rictic
An author can use print stylesheets to make cmd-P work as expected. Try it out
in google docs for example.

~~~
yoz-y
Yes. But the shortcuts are not consistent between different web-applications.
Inconsistency is he death for muscle memory. Also simple copying and pasting
is not always doing what I think (e.g.: in Google docs) (it is partly my fault
as I prefer safari and they did not have yet implemented all of the necessary
APIs to make it work). Another advantage of Electron apps is that they do not
have a concept of back and forward by default. There is no losing work in a
text editor because one has unfocused the text field and pressed backspace

------
nikolay
I am sick and tired of these wrappers falsely branded as "desktop apps". This
is not a desktop app, i.e. not a native client. It's an embedded browser that
comes with even more negatives than a Chrome app/panel!

Now, when we have libui-node [0], which is a Node.js wrapper around libui [1],
developers, you have no excuses!

[0]: [https://www.npmjs.com/package/libui-
node](https://www.npmjs.com/package/libui-node)

[1]: [https://github.com/andlabs/libui](https://github.com/andlabs/libui)

~~~
SlashmanX
> you have no excuses!

> It is in early stage of development

> OSX should work too, but it's not tested.

> Windows has yet to be configured in build scripts, but it will be supported
> in further releases.

> There are very few tests developed

> This is not yet battle-tested in a real app

All that from the official Readme [0] and you're saying there's no reason not
to use it?

[0] [https://github.com/parro-it/libui-node](https://github.com/parro-
it/libui-node)

~~~
nikolay
This is just one of the wrappers around libui [0], which itself works fine,
and is tested on all platforms. Well, it's in alpha stage, true, but so what -
wait until it's stable, and then start building?

[0]: [https://github.com/andlabs/libui](https://github.com/andlabs/libui)

~~~
ohitsdom
You're criticizing a released project for their technology choice, advocating
that they should have waited to build it until some other tech was ready...
Maybe take a step back and just appreciate that they built and shipped
something. If you hate Electron, move on and don't use it.

~~~
nikolay
Did you care to read? I meant they should not wait.

Electron uses gigabytes of RAM - it's the one reason I switched to weechat
from Slack's "desktop" client!

Such "desktop" apps are a disgrace and they run way more efficiently in the
browser compared to having multiple copies of browsers running in parallel.

~~~
ohitsdom
Slack is currently using 144 MB on my Windows machine (with a lot of public
channels and DMs active). Electron may give up some performance for a lower
development effort, but that's the known trade-off. I think you're making it
sound a little more bleak than it actually is, current performance of Electron
apps is pretty good (if designed properly).

~~~
nikolay
Send me a screenshot and make sure it includes virtual memory as well. I've
never had any embeded browser app to use less than a GB of overall memory (in
most cases, Slack uses well over 2GB).

------
hugozap
I love to see JS haters going crazy every time an open source electron project
has some popularity.

~~~
dang
Please don't make the thread worse by posting snarky disses of disses. It just
stirs up acrimony and adds no information, regardless of whether your point is
right.

~~~
hugozap
The information added is the fact that it's frequent here to see disses just
because an upvoted post refers a JavaScript/Electron project. That's useful
information for newcomers to the forum.

------
mosselman
Looks great. However, I wonder why Hangouts specifically? Am I just alien to a
world where people actually use hangouts? I really really don't like it
myself. Not that that is reason enough to assume all other people don't like
it as well, obviously. How do people use it and why would you 'give' Google
all your private chat conversations?

~~~
nix0n
Let's talk about the alternatives to Hangouts:

Google's Android app has much better performance than Facebook's.
(Particularly in terms of battery life. Not sure about iOS.)

IRC and XMPP are both a pain to set up. (I would love to be wrong about this.
I'd run my own server if if you can find me dead-simple clients for enough
platforms.)

SMS and MMS work well for phones but not for PCs.

AIM, MSN, and Yahoo, last I checked, work well for PCs but not phones. (Not
sure if they still work well for PCs, pretty sure they haven't started working
well for phones.)

~~~
nextos
There are many XMPP free servers, and some clients are awesome. Like
conversations.im.

Setting up a server is not terribly difficult though. I bet there are some
simple container solutions.

~~~
ajosh
It still requires you to setup an XMPP server and proper DNS for federation.

With hangouts, if someone has a google account, there isn't much else to setup
which makes things much easier for non-technical friends & family.

Hangouts has other benefits:

\- All users support the same call/video features

\- Using GCM means that battery life is better than with long polling, in my
experience

\- Integration with Google Voice means you can add phone users to your video
call

\- Sending images is built in

\- Single chat history that's synchronized[1]

\- Works on Linux, Windows, macOS, Android and IOS with the standard
clients[2]

I've setup an XMPP server before and it wasn't that hard. I have
friends/family using Hangouts and Signal messenger. Hangouts provides a pretty
smooth experience and is my generally preferred way to initiate a video call
with my family who runs a variety of platforms (Andriod, iOS, Windows, macOS,
etc)

[1] Of course this is possible because of Google being the hub with is the
grandparent's concern

[2] XMPP also has this but some chat solutions are not as widely available. Of
course the web app will work anywhere you can run a modern browser. I'm
thinking of the official Chrome extension and I don't know if it works in BSD
or other OS's.

