Show HN: Wey – A fast, open-source Slack desktop app
github.com
github.com
> Normally for multiple teams with heavy traffics, Wey should not have any significant CPU usage, and RAM ussage is usually under 100MB. However if you have a team with more than 10k users in it, the memory usage may increase a lot.
Bloaty technologies was what made MS great in the 80's/90's, because 18 months later, the speed of the CPU would double.
I feel like we should think hard about optimizing for memory/cpu again.
Transistors can stay the exact same size for twenty years as long as the die size grows, and Moore’s law still holds.
https://www.anandtech.com/show/5261/amd-radeon-hd-7970-revie...
But again, did transistors double in count on any processor, not just GPUs? If so, Moore held. Yes, according to this chart:
https://en.m.wikipedia.org/wiki/Moore's_law#/media/File%3AMo...
It's meaningless to compare these totally different types of chips that end up with extremely different transistor densities on the same node due to the wiring requirements.
Are there no CPUs with higher transistor counts out there? Maybe ones you are not aware of yet?
That was my question to you. You claimed, "It's 2018 and the top chip on that chart still has the highest transistor count of any CPU on the market." Which I take to mean that you don't know of any CPU with any higher transistor counts, which is an argument from silence. There could be a CPU outside of your knowledge.
So, we wait to see. Moore may be dead but "moore" time may be needed to hold the funeral.
It is too early to declare Moore's Law dead.
You say that like people were making these bloaty apps for the good of humanity—trying to make them objectively perfect, but falling short. While FOSS is done with that mindset, FOSS isn’t usually where bloat comes from.
Bad engineering is usually the result of overriding business concerns: being first to market, iterating quicker than your competitors, having more reach on more platforms with less expense, etc. More features before feature polish, and user-visible polish before good architecture.
Even without Moore’s law, this incentive is still in place. It not just has a slight countervailing force of nobody wanting to run apps that take too many resources.
What that means in practice is that apps will still be as bloated as possible (or rather, with as little optimization done as possible) while still managing to not choke the machines they’re on.
Can't make transistors smaller? just add more! Speed of light becoming a problem? Stack em! Speed of light and heat becoming a problem again? Stack cores, improve multi-core architecture in both hardware/software and enjoy another many decades of Moore's law. It won't be dieing any time soon
Wikipedia:
Moore's law is an observation and projection of an historical trend and not a physical or natural law. Although the rate held steady from 1975 until around 2012, the rate was faster during the first decade. In general, it is not logically sound to extrapolate from the historical growth rate into the indefinite future. For example, the 2010 update to the International Technology Roadmap for Semiconductors, predicted that growth would slow around 2013, and in 2015 Gordon Moore foresaw that the rate of progress would reach saturation: "I see Moore's law dying here in the next decade or so."
Intel stated in 2015 that the pace of advancement has slowed, starting at the 22 nm feature width around 2012, and continuing at 14 nm. Brian Krzanich, CEO of Intel, announced, "Our cadence today is closer to two and a half years than two." Intel is expected to reach the 10 nm node in 2018, a three-year cadence. He cited Moore's 1975 revision as a precedent for the current deceleration, which results from technical challenges and is "a natural part of the history of Moore's law."
More background in recent article here on 40 years of processor performance:
https://www.eejournal.com/article/fifty-or-sixty-years-of-pr...
My focus is on full stack, so I do care a lot about UI/UX, and improving my skills there.
However don't ask me to do anything related to NoSQL or Deep Learning, I would be a lousy contributor.
> My focus is on full stack,
I'm sorry, imo those are two contradicting sentences.
But it might be related to a personal pet peeve of "full stack" developers claiming to be expert in most moving parts of the stack.
Only to post on medium this amazing db hack they found, to be called out in hn comments for not reading the basic docs of one of the core items in their stack.
I always look at Doctors for a bad analogy; why full stack developer is a bad idea. Sure the heart surgeon will be able to diagnose your broken leg. Might even be able to assist you with a cast. But trust him to operate? There a specialist for that!
Is this not the same for dev work? Designer, Developer split into 4 fields(desktop, mobile, frontend, backend), database admin, sys admin. All possible to be done by a "full stack" developer.
But I don't see you become a specialist or expert in any of the fields of your stack, if you don't dedicate to a few.
He knows best than having people searching for specialist by themselves.
As for myself, if you prefer a more descriptive example, I specialize in everything related to Java, .NET and Web (VanilaJS) stacks.
But if you showed me a single UI, I highly doubt I could improve it.
Some of us explicitly don't want the UI to give off the impression that the software is more finished than what it really is, so we sometimes intentionally keep the UI unpolished while we know that we have important things not yet implemented.
However I have come to realize that there are several downsides to this line of thinking;
1. If the app looks bad then it might permanently put off would-be users.
2. By not giving the UI enough attention early on, discoveries of UX problems that could have been caught early are not made until much later, delaying the project and potentially leading to more work as well because there will be more things that need to be rewritten or remade in order to fix the UX problems.
3. If you think feature X needs to be completed before you do the UI, then what is going to keep features Y and Z and so on to make you think the same way when you get there? Software is often never "complete". If you think it needs to be "complete enough" before you can give it the UI it deserves, how will you know that you've reached the stage of complete enough?
Furthermore, I have come to realize that often we don't know what we want exactly. We might think we know, but as we work on implementing our ideas things turn out to not be quite as we'd imagined them to.
But I also think that grand parent was on to something. When we build software, we should strive to implement features that are useful but not only that, the software needs to make the most common tasks as efficient for the user to perform as possible. And in order to find out what that means, we need to consider the UI from the very beginning.
There's a ton of tools out there to help you with these, and as a developer, I like tossing around a lot of the design stuff that gets regulated until an app or site is totally functional, when I feel like most of the design work stuff should be done prior to getting your app working.
Design is the hard part, coding it? For me, that's the easy part. I feel like once I've got some decent font's paired, a color scheme worked out and other design elements nailed, the rest is easy.
Rarely all stages are reached, but in open source projects, anyone can cook their favorite dish for this dinner.
Design shouldn’t be an afterthought, it should be THE thought.
We aren’t talking about the color of the paint, we are talking about the way the parts fit together.
I guess this is an early release and getting the details right does take time. I sometimes get comments along the lines of 'is that all it does?' when I've spent lots of time getting the details correct.
Plus yes I think it does require some level of sensitivity to it. 99% of people just don't notice, but the details do matter in the long run as it begins to feel right to people, who will never be able to explain to you why or even complement you on it but will carry on using the system because of it.
Care to learn about UI/UX and human psychology how regular users approach computers.
Learn how to design UIs and application workflows for people that care how to do their job, without having to understand the internals how computers work.
Requires to learn about design and soft skills as well.
Overall, UI design is really not too bad here. On the other hand, it's almost 1:1 copied from the official Slack app.
Some elements randomly have 20px spaces between them, some have 28px, some have 32px. This would be fine if they were done on purpose but right now they look like they were chosen randomly.
https://user-images.githubusercontent.com/639601/38463114-17...
Take a closer look at the space below the "BabelJS" title.
Compare the space between "direct message"/"slackbot" vs. "slackbox"/"zcbenz".
Why is the padding around the channel icons 20px on all side while the spacing to the left of "BabelJS" only 13px?
etc.
Edit: If you still cannot grok what I'm taking about, play a bit with this tool and you will understand https://www.gridlover.net/try
See, this is what I meant, some people just don't see it!
i'd say most people don't see it. maybe it's not very important then?
They won't be able to tell you why they prefer the one with more time invested in the UX/UI, but they will almost always choose that one.
There are universal rules in design and everyone is using them. We are actively training the users into feeling those rules as superior.
(This is also why huge paradigm changes feel so refreshing. Breaking the rules on purpose is very strong.)
do you really believe that or does your job depending on you and others, believing that? I get UX is important, where UX is defined by such things like "number of clicks to achieve a task", but the OP was talking about margins and padding etc which just are a lot less important than designers like to think. It's probably an uncomfortable truth for people who spend all day tweaking things 1px at a time, but I think it's largely true.
A case in point is the new Reddit design being tested (https://media.wired.com/photos/5abed25228f0c90b2647ac08/mast...)
It's prettier, I can see that. If it was a painting I'd rather hang the new one than the old one on my wall, but when it comes to pure functionality (read a list of links) the current (ugly) design is better (imho).
It's not a question of believing; the job exists because there's a real need to optimize the visuals. The brain has its own API (see [1], [2]) and if you don't optimize the "visual code" to it, the interface may work, but in sub-optimal ways and causing a discomfort to the user. It's like having a C program that leaks memory. It may perform the expected task, but you wouldn't say it's "right".
Margin and padding, alignment, contrast and relative positions define the structure of the interface - in the same way that you use Layout objects behind the curtain to program where every widget is placed, you should use the visual properties of separation, visual weight and rhythm to tell the user which parts are related and what is the hierarchy of the elements. If you fail to convey the structure to the user, their mental model will be wrong and the interface will be hard to use.
[1] https://en.wikipedia.org/wiki/Gestalt_psychology#Pr%C3%A4gna...
The issue is when it's not respecting anything and is simply thrown together randomly. If OP's app were to copy the same padding and margins as Reddit's new sidebar, I would have nothing to say against it.
Yes, your app will do fine with minor design issues. It won't drives all of your users away. However, they might start to notice that your main competitor's app feels better and slowly trickle that way. There is a reason that all top brands have such strong design and user experience/graphic design teams. One or two small issues is fine, but they pile in really quickly. Nobody wants to complete a checkout when the entire page looks like the content of a 1995 website in a iframe.
My personal philosophy is "why do anything if you are not going to do it beautifuly?". As a full-stack developer, it's easy for me to see both side of the medal. It would be very straightforward for me to simply throw components on the screen and call it a day. By the time I've programmed and integrated them in, I'm tired and only want to close the task. I have to remind myself of my motto and it always results in a better experience for everyone involved with the end product. Most of those design decisions can be done in a few minutes if you take the time (and if you have received proper training to spot the issues) and those few minutes can results in a big leap in quality.
Sometimes the best user experience does not look the prettiest, and even more often does it fail to line up with business requirements. Both of those concerns need to be de-prioritized.
Are you just saying that or do you have evidence to back it up? I'm not a designer but I work closely with them and I'd say it's the exact opposite. Developers (myself included) tend to get tunnel vision on finishing functionality but the actual end users of the software care a lot more about the 'small things' like that than you're giving them credit for.
The fact that you say 'tweaking things 1px at a time' shows that you don't quite understand that it isn't about moving things around arbitrarily, it's about creating a design system that does it for you. Every header should have X amount of spacing between it and other elements, every paragraph should have the same size that makes sense with the headings it sits under, backgrounds should draw the users eye to important places, etc.
Using the old/new Reddit is a horrible example, because the old Reddit absolutely had a design system that made sense to the user. It might have been simple, but the spacing was consistent across every element. Watch the comments when a subreddit mod team updates their theme and small things like the padding around the comment preview is missing, it's the first thing that the users of the sub notice.
I've done a lot of end-user interviews, and actually paying attention to your padding/margins and making sure all of the elements fit your grid can be the difference between the user trusting your app because it looks professional, and giving up on it because it looks like a side project (or to use the Reddit example, the difference between using the home page and a half-baked custom sub theme).
HN might not be the demographic that you're going to get that feedback, but unless you're writing your software specifically for developers you're going to be losing a lot of trust regardless of how solid your software is behind the UI. It's not about creating 'art', it's about making your work look trustworthy to the end user.
>Using the old/new Reddit is a horrible example, because the old Reddit absolutely had a design system that made sense to the user.
Your own argument supports exactly what I'm saying. The designers of the new Reddit took an existing, very functional design and then f*cked it up by making it "pretty".
Most designers put UX on their resume (because it's trendy), but their folios betray that they do aesthetics (which is great, but not terribly important), and only have an effect on UX accidentally.
I would wager that we are not necessarily training users into feeling those rules as superior, but the absolute opposite — people tend to feel more at ease / comfortable when those rules are in place, and we want people to feel that way when they use our products, and so we use those rules. Ubiquity/familiarity is one reason why someone may feel at ease with a design, but it’s absolutely not the only reason. There are other more fundamental reasons why some designs are pleasant and others are unsettling / frustrating.
For example we can’t explain why harmony sounds pleasant and why dissonance is unsettling. We can explain how they are different from each other and describe these differences with rules, but not necessarily why one makes us feel good and why another makes us feel bad. But the musician knows these things— that certain arrangements make people feel a certain way. And using this knowledge, the musician can compose music that falls in line with the effects that he wants it to have on people.
Still, you don’t need to be a musician to know when a song sounds horrible. You don’t need to be a chef to know that the food tastes horrible. You don’t need to be a designer to know that it’s unpleasant. We can feel an unsettling interface even if we don’t necessarily know why it’s bad. Good designers are just more in tune to these feelings and also are able to identify and implement the technicalities as to how to make the design feel the way they want it to.
We generally don’t want people to feel uncomfortable when using our interfaces (although maybe sometimes we do), so we tend to settle on some rules of thumb that we know make people more comfortable like “visual heierarchy” “vertical rhythm” “line length not more than 60 characters” “not having to make 6 clicks for something you do fairly often” “context (such as breadcrumb navigation)” etc. And, I mean, when you put a lot of these rules together you end up with a lot of interfaces that converge to look and feel the same. Doesn’t necessarily mean we are actively training people to feel that these things are better. At a fundamental level people already do. Good design is more of a discovery of human nature / an applied science.. than a conspiracy to make people like things.
We don’t like food that tastes like crap. If everyone’s food tastes like crap, well, we’re going to be eating food that tastes like crap. Because we still need to eat. But the moment someone puts out food that tastes less like crap, people are going to want to eat that person’s food more than others’. And maybe that chef proclaims a rule that “when you include X in your recipe, or when you don’t do Y, your food tastes less like crap and more people want it.” And now more chefs who want to sell food are putting out food that follows that rule. And now more food on the market taste a little less like crap. That’s pretty much how design works as an industry.
If the rules are universal, then why would users have to be trained to consider them superior?
We are training the users into enjoying very rigid and professional looking websites. Anything amateur looks jarring these days.
This wasn't true in the 90's - we trained the eyes of the users into disliking amateur looking websites.
(I have to work hard to see such things, though, and I'd have to try even harder to be bothered by them.)
Why not take some of that screen space and move the title a bit lower so that it doesn't look so out of place with the whole vertical rythm of the page? The icons to the left are starting at 20px, why not put the title there? The title is also directly linked to those icons. Clicking on an icon changes the title. The title is the current selected icons's title, in fact. Aligning them makes that connection clearer.
That's the kind of questions you should ask yourself when you design an interface.
Right now, the title has a 50px margin because that's the distance the official Slack app uses. However, the official app puts the current user's username there, so that there's Title>10px>Username>30px>Channels ... instead of Title>50px>Channels. It's a direct copy that is missing some elements and that's why it feels wrong to the eye.
† ISBN 978-1119998952
I don't blame the developers, I don't blame the project. I'm glad they do such client and would probably use it over the official Slack client even with its current UI (I'm more interested in a solid XMPP transport though). I just noticed that some people genuinely don't see or can't put their finger on those issues at all, which makes them unable to think about it and fix them without external help. And I wonder why it is like that - what makes you see those misaligned things as standing out, while others don't notice it?
* in open source software projects, professional designers are rare.
* functionality or documentation might have been higher priorities
* it would be unfair to deprive you of the opportunity to contribute a better design to this open source projet
Thank you Gnome team, including designers, that created such a beautiful desktop experience for me.
The thing is, a lot of developers seem to have no anesthetic sense whatsoever. I realized this when I noticed that almost all Emacs themes are garbage, and that no one seems to mind. I even wrote a blog post about it with several examples and people thought I was trolling.
I mean, just five minutes of work put into this Slack thing would have improved the look a lot, so the other commenter's point about priorities is just kind of dumb. Slack may be a piece of junk but at least it is passable in the looks department. It's not like it's the 90s or anything. How can someone think that looks aren't important?
The authors goals may not align with yours, and their decision of what they want to do on their free time might not align with yours - this is exactly why releasing it to the open is a good thing, talented and interested people can contribute to it if they choose, or use something else if they are so inclined.
I’d love to try themes developed by someone with as strong opinions on design as yourself, but you wrote a blog instead. Its what you wanted to do, and you did!
In all seriousness - mixed messaging as seen on this thread is why I believe most (myself included) eschew the whole 'MVP' thing and try to polish products before release.
MVPs happen to be an (apparently) efficient model for startups, but its not like anyone actually wants it. Your users might grudgingly accept your half-finished, buggy, unoptimized MVP because nothing better is available to them, but how could you possibly expect anyone to be happy with this?
MVPs are pushed by businesses, not by consumers. But on the market-scale, it also pushes MVPs (because you get bonuses from being first-to-market and such).
But no individual consumer goes around saying "yeah I'd love to be promised the world, and instead recieve a millionth of it".
Of course you're going to be criticized by the people you've given hope to, only to let down with bug report #985
Hey Slack! How about an app for your service that doesn't grind my macbook pro to a halt?
while(true) {
foreach(emoji) {
emoji.refresh();
if (emoji.since_last_frame() > 1/60) emoji.next_frame();
}
}
Slack can easily eat up one core with just a few of them on the screen. Never seen that.Maybe at some point I'll find the time to revisit qweechat and see if it might be possible to strike a better middleground between "it's just chat" and all the fluff slack adds.
https://github.com/wee-slack/wee-slack/blob/master/README.md...
Still sucks, but better than the Web client IMNHO.
Don't know if it does this, just complaining about the official client on Windows.
1. The always-visible scroll bars (both horizontal and vertical) on the text box makes it not possible to see what I am typing (the scrollbars cover it and the text field is not large enough to show both scrollbars and the text) -- this is on the Mac client. The same scrollbar issue exists on the channel list on the side as well, but at least it's not blocking anything.
2. When I sent a URL, the message immediately disappeared because Slack tried to generate the link preview, and apparently it's not supported yet in this client, so the whole message is just not shown.
That input text field is where I am supposed to type my message. I can't see what I am typing. I can't resize it either. Doesn't that make it unusable instantly?
http://libyue.com/docs/v0.4.0/js/guides/getting_started.html
I don't really get why I should use this instead of slack unless I run really shitty hardware, which I don't. I had issued with Slack before, but they fixed most of them.
Also new features in slack will börk this app pretty quickly, as they have to be implemented for one to use them.
Cool project though, even if I personally don't get the value of it. Maybe if they added Gitter, Rocketchat etc support so you would have one client to rule them all.
In my case, just leaving the official apps of these chat networks in the background seems to be less resource intensive than running Franz. I really hope that https://eul.im/ will up to my expectations.
Thanks
Screenshot: https://i.imgur.com/X60nnAT.png
I'm excited to try it but because I'd be using it for sensitve/confidential work I don't want to risk it unfortunately.
Therefore I am always skipping the current version and wait for the next one.
The final beta with Linux support is going to be released in a couple of hours, and the development process should be quicker now that I'm finally done with UI and graphics.
https://github.com/saenzramiro/rambox/blob/b217c9d8f1c0030a7...
https://github.com/electron/electron/blob/master/docs/tutori...
https://github.com/electron/electron/blob/master/docs/tutori...
I noted that Wey only gives links to pictures with no previews. The linking out is fine but I think inline previews would be a nice addition down the road.
I personally don't believe that RecyclerView/TableLayout/GridLayout and UITableView/UICollectionView are the future because they are not declarative. The more code we have to juggle, the more it opens us up to bugs and pathological edge cases.
What we need is something similar to https://github.com/splinesoft/SSDataSources that abstracts away the micromanagement inherent to view recycling. It would likely need to be tied into an evented data source like Firebase for JSON or maybe Redux or the immutable data store that Clojure uses. Then that metaphor could be adapted to the DOM and Electron's speed/memory overhead would be reduced substantially.
TL;DR Wey will likely succeed because it optimizes the table loading either with a faster runtime or by implementing the view recycling manually. This is not a long-term solution, unfortunately. But I applaud its efforts.
* The app is still quite buggy but showing a lots of potential.
It seems that there's duplicated effort among projects like xray, yue, libui-node/proton-native. Still, I'm glad to see people trying to solve this problem area of cross-platform apps, taking the Electron paradigm to the next level of efficiency.
This is actually a Slack client, then?
For reference, an RSS reader I threw together using standard Cocoa widgets will hit 50-60MB with no issues, and that's with my being annoyingly judicious with how it's built.
Why do you need an HTML renderer? Slack uses Markdown.
emacs-slack is pretty lightweight …
Because it's objectively easier to do cross-platform GUI development using a single, well-defined and portable API that someone else maintains.
That that API is nowadays de-facto WebKit supporting a HTML/CSS/JS stack is a natural, but unfortunate choice, and it's got a much lower barrier of entry and much less maintenance overhead than, say, Gtk+ or Qt.
The job of programming isn't to reinvent the wheel everywhere, it's just to deliver a product that doesn't suck - with native code, you're implementing a native solution for each feature Slack has or adds. Slack's content is web content.
You're really arguing that an insane amount of extra engineering time should be spent to conserve, at best, an extra 40-50MB of RAM... and this is disregarding how modern RAM works anyway.
That's the underlying issue. If the "protocol" uses HTML, all clients will need to embed a web view.
* - Unless you're using the (older, I believe) Telegram Desktop client, which is different from... Telegram.
Which clearly links source as: https://github.com/overtake/TelegramSwift
Nobody I know on OS X would use the Qt one as it feels really out of place... I guess if you cared about ricing out your desktop or something.
edit: 200MB installer compared to 30MB for the "Telegram Desktop".
At work, one of my projects is a cross-platform scientific C++/Qt application. It is currently open, and with 5 charts (hundreds of data points each) and a full-blown interactive 3D representation of a model, it sits at 160 MB.
Seriously, I understand the trade-offs of writing HTML+JS vs. C++, but at some point we must start taking into account the amount of waste (energy, resources) that hybrid apps create.
Also, a chat app is generally not the "main" application and should strive not to deprive the system of its working memory.
But, hey, that's just my opinion. Luckily your users agree with you (looks like many of Slack's don't!).