I’ve updated the little docker + X11 I use to run it on mac (without macports) if someone finds it of use https://github.com/deddu/nyxt-docker
Fantastic, perhaps we should link that on our downloads page? I think we will, as an unofficial way to install.
Totally up to you, I’d be honored. Please be aware that I can’t really guarantee top of the line support for the repo. I guess I can put a GitHub action to have an image pushed to the hub, and maybe a little scraper to check the latest version.
As far as having a single standalone bundled runner, I still don’t know - I’ve to dig in the xquartz docs, and perhaps see how Inkscape did it.. open to ideas. Sadly x11docker does not support MacOS.
You know, I wonder if we can help you with that, we should be able to run docker on our machines and do part of the automation testing. Of course we can’t do xquartz stuff, but we COULD keep the repository up to date somehow. I’ll think about it.
Tbh I think the best way to deal with Mac would be to try to follow this process https://balintreczey.hu/blog/beautiful-wireshark-on-os-x-using-homebrew-and-gtk3quartz/ and have it in home brew.. docker does really seem like an extra dependency..
Nice! I have been close to tears trying to build this on macOS but anything that gets me away from WebKitGTK+ is a plus.
NYXT is fantastic in what it attempts to accomplish. I have but one question. If it quacks like Emacs then why not Elisp that already has many of these concepts and code to support them? What does CL buy you?
CL buys us a complete ‘batteries’ environment. It has a lot of really good APIs for multi-threading, is cross platform, cross implementation. Of course in the end it is a matter of preference, we just found CL to be more fitting for our applications.
Ok I’ll bite. Then why not Guile. U get all of the above as well as true to Emacs implementation of Elisp on top so pretty much all of that elisp I mentioned earlier
I have nothing against CL tbh, but imo Nyxt appeals first and foremost to Emacs users familiar with how powerful even such limited Lisp machine can be. Which brings out the question I originally asked
With CL at the helm I can’t decide who the target audience even is. It reminds of the Ratpoison vs StumpWM situation: we figured we’ve been mostly writing Lisp in C clothes and implementing half of Emacs so we we switched to … Common Lisp. Me: ok lets give it a try - some quicklisp whatever errors, but we muddle through and even have REPL attached over socket but code evals won’t update WM state because you need to set packages up just right and suddenly I’m ankles deep in CL ecosystem and I hardly wanted that … Emacs users may not be entirely against hacking some Elisp cause that’s what they already do. Not so with CL unless you already bought into it
Still, I’m glad Nyxt is a thing
Who are “the vast majority of users”? The majority of users of this specific web browser, all of whom are probably programmers and therefore probably don’t need or want a GUI to program their macros? Or the vast majority of computer users, a group of people who absolutely do not care enough to learn how to use a web browser with macros programmed in lisp of all things?
Well, many people have learned Excel, what will stop many people from learning a simple macro interface in Nyxt? If it provides them great benefit at low cost, I think many people will do it. At least I hope they will :-)
So, who is this for? Are there a lot of Emacs users who want a GUI to help them string together Elisp commands? No shade, I just don’t understand what I’m seeing here…
A good question, there are many users of Nyxt who do not know Lisp. We expect this percentage of users to increase over time.
Related to nyxt, although not at this post in particular, with a friend we have been able to dockerize it and run it on Mac without macports. I’m sure there’s a lot to improve, and an official version would be better, but if someone else is curious to give it a go, https://github.com/deddu/nyxt-docker.
Interesting. Reminds me of qutebrowser. One of the issues I ran into when working on that is the fact that Qt only ships engine upgrades when they do a release of the entire Qt library, which means you can be several browser versions behind. Does nyxt have that problem?
Nyxt uses webkitGTK, it seems to get updated relatively frequently. E.g. some stack size issues with musl were fixed in webkit and a webkitGTK release based on it was out in days IIRC
this site only supports avatar things through some service I don’t want to sign up for. EDIT: ok, I guess I had already signed up for wordpress.com. the avocado is back.
or if you’re asking why I’m not bugging you with requests/issues.. I kinda got overwhelmed trying to use lisp with vim (integration is really kludgy with having to start services, and I could never get any of the popular options to work). It’s sad when a simple text editor and a compiler are not all that is required to hack on things with a language, and I don’t really want to change my entire workflow to emacs :(
phew, I can express relief that the Avocado is back :-)
Don’t worry, you won’t need to use emacs to hack on Nyxt. Not for much longer!
Sure, we are constantly working on embedding a better editor into Nyxt :-). Actually you can edit the Nyxt source code from within Nyxt… but that is a story for another time :-D
I may be misunderstanding, but are you offering to publish a binary compiled by a stranger?
Is this browser intended to be useful for things like online banking?
Nyxt is a really interesting concept. It seems they’re moving in an Emacs-like direction with the browser getting more and more features, ending up like a software Lisp machine.
It’s also cool they’re targetting vim users as well as Emacs users. Lisp has always been closely tied to Emacs, but this is opening the door to more people, which is great!
Yeah, I love the idea – build the primitives in C/WebKit, control those primitives with Lisp, and the whole system is observable/customizeable. It’s Emacs for the Web.
The link to the deb-package results in a 404. When I downloaded the zip from Github’s releases page and unpacked it I got a deb-package.
How is nyxt funded? Is it a labor of love by people who happen also to work for a commercial consultancy? Or do Atlas intend to profit from it somehow?
One thing holding me back from adopting nyxt has been been the fear that it will be abandoned. Projects get abandoned all the time. It’s fine for something stable, or for something where I can easily replace. I wouldn’t want to use an unmaintained browser, though, and most of the appeal of nyxt is that I can sink a bunch of work into customizing it.
Nyxt is funded by grants from the European Union. We do plan on releasing (pending community support/acceptance), applications on top of Nyxt that we can sell. That is why we have the “applications” tab on our website.
We will not purposely limit Nyxt in order to sell more applications. The platform is comitted to being open and completely hackable. You can think of applications as a strictly value-add proposition. For example, one of the applications we have in mind is a email client.
that is very reassuring! I will see about installing it.
May I ask what the grant program is? Super cool that the EU funds stuff like this.
The grant program is titled “Next Generation Internet”, you can find out more about it online of course :-)
I contributed to the ‘1.4.0’ project at: https://www.indiegogo.com/individuals/19457518/campaigns
Edit: ‘Nyxt’ was previously ‘Next’
Very nefarious! I in general find these CI pipelines to be excessively wasteful. Is there a way to turn them on only when needed?
You can set rules in most CI systems to filter by branch name, tag, event type, etc. to limit when workflows run. You can also often trigger CI manually, e.g. workflow_dispatch
on GitHub Actions.
Disclaimer: GitHub employee, but not on Actions.
e-mail has a lot of legacy cruft. Regardless of the technical merits of e-mail or Telegram or Delta Chat, Signal, matrix.org or whatever, what people need to be hearing today is “WhatsApp and Facebook Messenger are unnecessarily invasive. Everyone is moving to X.” If there isn’t a clear message on what X is, then people will just keep on using WhatsApp and Facebook Messenger.
It seems clear to me that e-mail is not the frontrunner for X, so by presenting it as a candidate for replacing WhatsApp and Facebook Messenger, I think the author is actually decreasing the likelihood that most people will migrate to a better messaging platform.
My vote is for Signal. It has good clients for Android and iOS and it’s secure. It’s also simple enough that non-technical people can use it comfortably.
Signal is a silo and I dislike silos. That’s why I post on my blog instead of Twitter. What happens when someone buys Signal, the US government forces Signal to implement backdoors or Signal runs out of donation money?
Signal isn’t perfect. My point is that Signal is better than WhatsApp and that presenting many alternatives to WhatsApp is harmful to Signal adoption. If Signal can’t reach critical mass like WhatsApp has it will fizzle out and we will be using WhatsApp again.
If Signal can’t reach critical mass like WhatsApp has it will fizzle out
Great! We don’t need more silos.
and we will be using WhatsApp again.
What about XMPP or Matrix? They can (and should!) be improved so that they are viable alternatives.
(Majority of) People don’t care about technology (how), they care about goal (why).
They don’t care if it’s Facebook, Whatsapp, Signal, Email, XMPP, they want to communicate.
Yeah, I think the point of the previous poster was that these systems should be improved to a point where they’re just really good alternatives, which includes branding and the like. Element (formerly riot.im) has the right idea on this IMHO, instead of talking about all sorts of tech details and presenting 500 clients like xmpp.org, it just says “here are the features element has, here’s how you can use it”.
Of course, die-hard decentralisation advocates don’t like this. But this is pretty much the only way you will get any serious mainstream adoption as far as I can see. Certainly none of the other approaches that have been tried over the last ~15 years worked.
…instead of talking about all sorts of tech details and presenting 500 clients like xmpp.org, it just says “here are the features element has, here’s how you can use it”.
Same problem with all the decentralized social networks and microblogging services. I was on Mastodon for a bit. I didn’t log in very often because I only followed a handful of privacy advocate types since none of my friends or other random people I followed on Twitter were on it. It was fine, though. But then they shut down the server I was on and apparently I missed whatever notification was sent out.
People always say crap like “What will you do if Twitter shuts down?”. Well, so far 100% of the federated / distributed social networks I’ve tried (I also tried that Facebook clone from way back when and then Identi.ca at some point) have shut down in one way or another and none of the conventional ones I’ve used have done so. I realize it’s a potential problem, but in my experience it just doesn’t matter.
The main feature that cannot be listed in good faith and which is the one that everybody cares about is: “It has all my friend and family on it”.
I know it’s just a matter of critical mass and if nobody switches this will never happen.
Sure, but we’re not the majority of people.. and we shouldn’t be choosing yet another silo to promote.
XMPP and (to a lesser extent) Matrix do need to be improved before they are viable alternatives, though. Signal is already there. You may feel that ideological advantages make up for the UI shortcomings, but very few nontechnical users feel the same way.
Have you tried joining a busy Matrix channel from a federated homeserver? It can take an hour. I think it needs some improvement too.
Oh, definitely. At least in the case of Matrix it’s clear that (1) the developers regard usability as an actual goal, (2) they know their usability could be improved, and (3) they’re working on improving it. I admit I don’t follow the XMPP ecosystem as closely, so the same could be the same there, but… XMPP has been around for 20 years, so what’s going to change now to make it more approachable?
[…] it will fizzle out
Great! We don’t need more silos.
Do you realize you’re cheering for keeping the WhatsApp silo?
Chat platforms have a strong network effect. We’re going to be stuck with Facebook’s network for as long as other networks are fragmented due to people disagreeing which one is the perfect one to end all other ones, and keep waiting for a pie in the sky, while all of them keep failing to reach the critical mass.
Do you realize you’re cheering for keeping the WhatsApp silo?
Uh, not sure how you pulled that out of what I said, but I’m actually cheering for the downfall of all silos.
I mean that by opposing the shift to the less-bad silo you’re not actually advancing the no-silo case, but keeping the status quo of the worst-silo.
There is currently no decentralized option that is secure, practical, and popular enough to be adopted by mainstream consumers in numbers that could beat WhatsApp.
If the choice is between WhatsApp and “just wait until we make one that is”, it means keeping WhatsApp.
They can be improved so that they are viable alternatives.
Great! We don’t need more silos.
Domain-name federation is a half-assed solution to data portability. Domain names basically need to be backed by always-on servers, not everybody can have one, and not everybody should. Either make it really P2P (Scuttlebutt?) or don’t bother.
I sadly agree, which is why logically I always end up recommend signal as ‘the best of a bad bunch’.
I like XMPP, but for true silo-avoidance you need you run your own server (or at least have someone run it under your domain, so you can move away). This sucks. It’s sort of the same with matrix.
The only way around this is real p2p as you say. So far I haven’t seen anything that I could recommend to former whatsapp users on this front however. I love scuttlebutt but I can’t see it as a good mobile solution.
Signal really needs a “web.signal.com”; typing on phones suck, and the destop app is ugh. I can’t write my own app either so I’m stuck with two bad options.
This is actually a big reason I like Telegram: the web client is pretty good.
I can’t write my own app either so I’m stuck with two bad options.
FWIW I’m involved with Whisperfish, the Signal client for Sailfish OS. There has been a constant worry about 3rd party clients, but it does seem like OWS has loosened its policy.
The current Whisperfish is written in Rust, with separate libraries for the protocol and service. OWS is also putting work into their own Rust library, which we may switch to.
Technically you can, and the risk should be quite minimal. At the end of the, as OWS doesn’t support these efforts, and if you don’t make a fool of them, availability and use increases their brand value.
Don’t want to know what happens if someone writes a horrible client and steps on their brand, so let’s be careful out there.
Oh right; that’s good to know. I just searched for “Signal API” a while ago and nothing really obvious turned up so I assumed it’s either impossible or hard/hackish. To be honest I didn’t look very deeply at it, since I don’t really care all that much about Signal that much 😅 It’s just a single not-very-active chatgroup.
Fair enough, sure. An API might sound too much like some raw web thing - it is based on HTTPS after all - but I don’t think all of it would be that simple ;)
The work gone into the libraries has not been trivial, so if you do ever find yourself caring, I hope it’ll be a happy surprise!
Is there a specific reason why? The desktop version of Telegram is butter smooth and has the same capabilities as the phone version (I’m pretty sure they’re built from the same source as well).
Security is the biggest reason for me. Every other week, you hear about a fiasco where a desktop client for some communication service had some sort of remote code execution vulnerability. But there can be other reasons as well, like them being sloppy with their .deb packages and messing up with my update manager etc. As a potential user, I see no benefit in installing a desktop client over a web client.
Security is the reason that you can’t easily have a web-based Signal client. Signal is end-to-end encrypted. In a web app, it’s impossible to isolate the keying material from whoever provides the service so it would be trivial for Signal to intercept all of your messages (even if they did the decryption client-side, they could push an update that uploads the plaintext after decryption).
It also makes targeted attacks trivial: with the mobile and desktop apps, it’s possible to publish the hash that you get for the download and compare it against the versions other people run, so that you can see if you’re running a malicious version (I hope a future version of Signal will integrate that and use it to validate updates before it installs them by checking that other users in your network see the same series of updates). With a web app, you have no way of verifying that you’re running the same code that you were one page refresh ago, let alone the same code as someone else.
A web based client has no advantages with regards to security. They are discrete topics. As a web developer, I would argue that a web based client has a significantly larger surface area for attacks.
When I say security, I don’t mean the security of my communications over that particular application. That’s important too, but it’s nothing compared to my personal computer getting hacked, which means my entire digital life getting compromised. Now you could say a web site could also hijack my entire computer by exploiting weaknesses in the browser, which is definitely a possibility, but that’s not what we hear every other week. We hear stupid zoom or slack desktop client containing a critical remote code execution vulnerability that allows a completely unrelated third party complete access to your computer.
I just don’t like opening a new window/application. Almost all of my work is done with one terminal window (in tmux, on workspace 1) and a browser (workspace 2). This works very well for me as I hate dealing with window management. Obviously I do open other applications for specific purposes (GIMP, Geeqie, etc) but I find having an extra window just to chat occasionally is annoying. Much easier to open a tab in my browser, send my message, and close it again.
A fraction of users is moving, the technically literate ones. Everyone else stays where their contacts are, or which is often the case, installs another messenger and then uses n+1.
A fraction of users is moving, the technically literate ones
I don’t think that’s what’s happening now. There have been a lot of mainstream press articles about WhatsApp. The technical users moved to Signal when Facebook bought WhatsApp, I’m now hearing non-technical folks ask what they should migrate to from WhatsApp. For example, one of our administrators recently asked about Signal because some of her family want to move their family chat there from WhatsApp.
Yeah these last two days I have been asked a few times about chat apps. I have also noticed my signal contacts list expand by quite a few contacts, and there are lots of friends/family who I would not have expected to make the switch in there. I asked one family member, a doctor, what brought her in and she said that her group of doctors on whatsapp became concerned after the recent announcements.
I wish I could recommend xmpp/OMEMO, but it’s just not as easy to set up. You can use conversations.im, and it’s a great service, but if you are worried about silos you are back to square one if you use their domain. They make using a custom domain as friction-free as possible but it still involves DNS settings.
I feel the same way about matrix etc. Most people won’t run their own instance, so you end up in a silo again.
For the closest thing to whatsapp, I have to recommend Signal. It’s not perfect, but it’s good. I wish you didn’t have to use a phone number…
What happens when someone buys Signal, the US government forces Signal to implement backdoors or Signal runs out of donation money?
Not supporting signal in any way, but how would your preferred solution actually mitigate those risks?
Many different email providers all over the world and multiple clients based on the same standards.
Anyone who has written email software used at scale by the general public can tell you that you will spend a lot of time working around servers and clients which do all sorts of weird things. Sometimes with good reasons, often times with … not so good reasons. This sucks but there’s nothing I can change about that, so I’ll need to deal with it.
Getting something basic working is pretty easy. Getting all emails handled correctly is much harder. Actually displaying all emails well even harder still. There’s tons of edge cases.
The entire system is incredibly messy, and we’re actually a few steps up from 20 years ago when it was even worse.
And we still haven’t solved the damn line wrapping problem 30 years after we identified it…
Email both proves Postel’s law correct and wrong: it’s correct in the sense that it does work, it’s wrong because it takes far more time and effort than it really needs to.
I hear you (spent a few years at an ESP). It’s still better than some siloed walled garden proprietary thing that looks pretty but could disappear for any reason in a moment. The worst of all worlds except all others.
could disappear for any reason in a moment
I’m not so worried about this; all of these services have been around for ages and I’m not seeing them disappear from one day to the next in the foreseeable future. And even if it does happen: okay, just move somewhere else. It’s not even that big of a deal.
Especially with chat services. There’s not that much to lose. Your contacts are almost always backed up elsewhere. I guess people value their chat history more than I do, however.
My vote is for Signal. It has good clients for Android and iOS and it’s secure. It’s also simple enough that non-technical people can use it comfortably.
I’ve recently started using it, and while it’s fine, I’m no fan. As @jlelse, it is another closed-off platform that you have to use, making me depend on someone else.
They seem to (as of writing) prioritize “security” over “user freedom”, which I don’t agree with. There’s the famous thread, where they reject the notion of distributing Signal over F-Droid (instead having their own special updater, in their Google-less APK). What also annoys me is that their desktop client is based on Electron, which would have been very hard for me to use before upgrading my desktop last year.
My vote is for Signal. It has good clients for Android and iOS and it’s secure. It’s also simple enough that non-technical people can use it comfortably.
What I hate about signal is that it requires a mobile phone and an associated phone number. That makes it essentially useless - I loathe mobile phones - and very suspect to me. Why can’t the desktop client actually work?
I completely agree. At the beginning of 2020 I gave up my smartphone and haven’t looked back. I’ve got a great dumb phone for voice and SMS, and the occasional photo. But now I can’t use Signal as I don’t have a mobile device to sign in to. In a word where Windows, Mac OS, Linux, Android, and iOS all exist as widely used operating systems, Signal is untenable as it only as full featured clients for two of these operating systems.
Signal isn’t perfect.
This isn’t about being perfect, this is about being accessible to everyone. It doesn’t matter how popular it becomes, I can’t use it.
They’ve been planning on fixing that for a while, I don’t know what the status is. The advantage of using mobile phone numbers is bootstrapping. My address book is already full of phone numbers for my contacts. When I installed Signal, it told me which of them are already using it. When other folks joined, I got a notification. While I agree that it’s not a great long-term strategy, it worked very well for both WhatsApp and Signal to quickly bootstrap a large connected userbase.
In contrast, most folks XMPP addresses were not the same as their email addresses and I don’t have a lot of email addresses in my address book anyway because my mail clients are all good at autocompleting them from people who have sent me mail before, so I don’t bother adding them. As a result, my Signal contact list was instantly as big as my Jabber Roster became after about six months of trying to get folks to use Jabber. The only reason Jabber was useable at all for me initially was that it was easy to run an ICQ bridge so I could bring my ICQ contacts across.
Support for using it without a phone number remains a work in progress. The introduction of PINs was a stepping stone towards that.
What I hate about signal is that it requires a mobile phone and an associated phone number.
On the bright side, Signal’s started to use UUIDs as well, so this may change. Some people may think it’s gonna be too late whenever it happens, if it does, but at least the protocols aren’t stagnant!
Python has the ability to reload code inside of the repl and/or debugger.
To use the IPython
shell as your debugger, see https://github.com/gotcha/ipdb
If it now works correctly, then congratulations; you found the problem!
This notion if “correct” is “finished the current example as intended”. Running a suite of unit tests would give me more confidence.
Even that is only for programming in the small and that is comparatively easy to programming in the large. I don’t see how a REPL would help there.
That means a REPL makes easy things easier and hard things are unaffected. Does not sound like a competitive advantage to me.
If you want to write a system big enough to need “engineering” and professional maintenance, then I agree repl is flavour at best. If you want to be able to get more out of your computer without having to become a “programmer” it is a valuable strategy.
“you found the problem, [and you can now write regression tests]”. Of course one doesn’t exclude the other. Better yet, if a unit test is failing, ask your test framework to pop up the interactive debugger on error, use it to find the problem. It’s just faster than the usual cycle. Hard things are also made simpler.
It is a debugging and exploratory tool. As you are programming you can quickly test different hypotheses. Writing a test and scaffolding takes way more time.
Do we really need a new post for every single Nyxt release?
There has not been a post for every release. Don’t worry though, the next time will be for a major release :-)