Show HN: nEXT Browser – A Lisp-based browser

132 points by jmercouris ↗ HN
A demonstrator of what is possible with Common Lisp and what kind of new interface a rethink of browsers could provide.

https://github.com/nEXT-Browser/nEXT

Very Alpha. Missing history, bookmarks, sessions etc.

nEXT is not intended to replace your current browser. It is just like adding another tool in your toolbox, you use nEXT when you want to get actual work done.

45 comments

[ 3.6 ms ] story [ 87.4 ms ] thread
The logo and odd capitalization of "nEXT" might get some attention from Apple laywers, if they care about the NeXT trademarks at all anymore.
Well if the success of Firefox (née "Phoenix", née "Firebird") is anything to go by, that could be a good start!
I love it! Now, if it can render content where:

- HTML is replaced with S-Exprs

- CSS is replaced with lisp

- javascript is replaced with lisp

Then I think I'll be ready to join whatever cult you ever feel like starting :-)

I wouldn't like to see CSS replaced with lisp. CSS is declarative, lisp is imperative/functional.
Lisp can be very much declarative. It can be literally any paradigm by virtue of being a direct representation of it's AST while all other languages have to be parsed into AST.
CSS's cascading rules can be diagrammed as a tree, so can be shown as s-exprs.
Wouldn't that be "reinventing the flat tire"? The Web needs far more serious redesign than just replacing the syntaxes.
What rendering engine does nEXT utilize, assuming you didn't write a rendering engine in Lisp?
Looks like the QT WebKit engine.
Now that Vimperator is mostly dead, this looks like a potentially interesting alternative to have a programmable browser.
less and sass called. they disagree.

you're all idiots.

This feels like a particularly ill-considered name.

First off, there is already commercial software called "Next Browser" -- it appears before your code in google searches. I don't think they have a US trademark (yet). They might have a chinese trademark. At any rate, it might not be wise to be naming something that puts you in potential future trademark jeopardy.

Second, when I think of "Next Browser" I think of this:

https://www.w3.org/People/Berners-Lee/WorldWideWeb.html

I'm sure others do too. You sure you want to be competing with WorldWideWeb.app, of all applications, for mindshare?

Hi Sean, thank you for your feedback. You're right, it's probably not a really good idea. I'm open to any ideas for names, having said all of that, I really like the name nEXT Browser because it gives an idea of efficiency, progress, and getting stuff done.

In terms of names in general, I think you will always be stepping on toes somewhere, there are so many names out there, and especially when you want to use a normal English word, it is hard to find anything really available without making up something.

Holy cow. Great job. Sadly i'm busy even on weekends atm, but i'm bookmarking this and i will try to contribute when i find some time.
Oh, this is awesome! Between StumpWM, emacs & now nEXT, my entire desktop could be Lisp.

Rather than using ECL to embed Lisp in C++, have you considered using an FFI to call out to QT from Lisp? Nothing's wrong with your approach, of course (the venerable emacs is Lisp atop a C core, after all!).

I wonder how difficult it'd be to get uBlock-style adblocking working on this.

Hi zeveb, thank you for the kind words!

I have thought about that, and afaik that is the approach of CommonQT, definitely a good solution, but I chose EQL + ECL specifically due to the fantastic support their respective developers provided. They're really smart guys, and I appreciate what they're doing.

Ad-blocking shouldn't be too hard to do in QT, I think I may have to do it in the C++ Layer below though. I believe one has to extend QNetworkManager or some other similarly named class.

Anyways, thank you for your interest, lots of new features in the works :)

The readme references a "releases" section to go to for pre-built binaries. Is this not available yet?
Hi yes! They are available for Mac OS High Sierra from release 0.03 onwards

Working on others too!

How is this “Lisp-based” when it’s a wrapper around QtWebKit?

I’d expect a “Lisp-based” browser to implement its rendering engine in Lisp, probably atop CLIM. Otherwise you’re just using Lisp as a scripting language to glue a couple prefab components together.

Well, that would be quite slow :D

You’re right in a most technical sense, it’s a lisp programmable browser

Why do you think so? Compiled Common Lisp can be quite fast.
Compiled Common Lisp can be quite fast, but not fast enough. Additionally, I don't see the added value in having the rendering be done in Lisp, I'm only interested in the manipulation of the data in Lisp
Considering the amount of work it would take to write an HTML rendering engine from scratch, this is a perfectly reasonable way to go.
And yet WebKit came from the KDE folks deciding to do just that.
Then Emacs does not count as a Lisp based editor too, given it's renderer is in C.
GNU emacs certainly isn’t a Lisp-based editor like the various implementations of Zmacs were, or like Hemlock is. It’s an editor with Lisp as a scripting language.
I don't think that's completely right, given that much of the editing functionality has been implemented in Emacs Lisp. Emacs Lisp is as much an implementation language as a scripting language. It's just that there is another implementation language underneath...
Eh, why not a 3D browser ala croquet/cobalt?

I mean, Croquet WAS designed to show what a peer-to-peer internet could do.

An interesting idea, but a browser is only designed to render and manage web pages, I think what you’re more talking about is the underlying protocol and network implementation
JMercouris,

Thanks for this, you made my day!! I was always curious of what could be done using EQL.

Do you have binaries compiled for Windows​? What would your recommendation be for building under windows? Just regular ECL configured for working with EQL? plus GCC tools?

Keep the light of Common Lisp shining like a beacon of hope and joy for the devoted hackers!

Hi Flavio, no problem, happy to make your day!!

Unfortunately I don’t have access to a Windows machine.

The EQL5 repository has a readme, which I believe has windows instructions, if you can run EQL5, running nEXT is trivial, you would just type in ‘eql5 run.lisp’ from the source directory and it would just work!

Please post the link directly.