Andrew Roach is a user on retro.social. You can follow them or interact with them if you have an account anywhere in the fediverse.

So web browsers are bad, right?

And web browsers being bad is making the internet bad, right?

Or maybe the internet being bad is making web browser bad.

Doesn't matter.

The upshot is that we should stop using bad web browsers recreationally, and stop using services that can only be accessed from bad web browsers.

And when that isn't possible, build alternatives that work from not bad browsers.

That's why I'm so happy that Brutaldon exists.

Andrew Roach @ajroach42

So, what are the core features a good web browser should have?

What shouldn't it have?

If you were redesigning the web, today, knowing what you know about popups, cookies, malicious javascript, etc. What would you design?

· Web · 5 · 2

@ajroach42 I guess the question is, how would you *split up* the web, so that applications that really do need the abused functionality went off into their own space (perhaps with its own protocol), while the pieces we like would stay in their own space in which annoyances are relatively difficult to implement.

@freakazoid Right. I'm not suggesting that we try to replace the web entirely. It is very useful, as much as it is a giant problem.

I'm wondering aloud what the core functionality of a modern document delivery platform should look like.

A thing that does what the web was supposed to do, rather than what the web does.

@ajroach42 @freakazoid
You hit it on the head wrt seperating document delivery from other uses. The most essential sites to me are all document delivery, and I couldn't give a fig's second fiddle whether they were http, ftp or gopher so long as I can find and get the files I need.

@ajroach42 @freakazoid
This deeply ties to: Most of my computer use is offline interaction with documents, or interaction with knowledge bases I would prefer to cache my segment of and use offline. There is no sense in hitting the net again just because I needed a refresh on the definition of Witt vectors for the fifth time this week.

@feonixrift @freakazoid changing relationships with networked data.

@ajroach42 @freakazoid
I've made the argument before that what HTTP does well gopher does better. For delivery, I'd probably opt for gopher.

With regard to formatting -- well, a subset of html might do, but maybe markdown would be better. Give the user complete control over fonts, sizes, and colors. Eliminate scripting entirely.

@ajroach42 @freakazoid
(The reason I say gopher for document delivery instead of IPFS is simply that gopher has been around longer and is simpler.

IPFS makes the guarantees web tech depends upon conceptually but cannot enforce & has never attempted to implement. I'd like actual permanent addressing, sure, but it's not necessary for a web replacement.)

@enkiv2 @ajroach42 @freakazoid
Can we throw a gopher frontend on something torrent-like for distributed retrieval, then add hella cross-indexing to replace citeseer?

@enkiv2 @ajroach42 @freakazoid I think gopher isn't 100% there (you'd really need a bit more metadata, better non-ascii support, etc), but it's def a good starting point

@enkiv2 Markdown is what I've been considering.

Server side code I'm okay with, but no client side.

@ajroach42 @enkiv2 fuck, I'm so glad someone else is doing this bc some variation of this idea has been threatening to eat me alive for about a year now

@aeonofdiscord @enkiv2 heh.

Just talking about, not doing. At least, not yet. :-D

@ajroach42 @enkiv2 you should talk to @garbados as well, she definitely has some relevant ideas about this space

@aeonofdiscord @ajroach42 @enkiv2 I HAVE MANY THOUGHTS i hope some of them are welcome

the browser is an application environment and it doesn't have to be a bad one. when we visit URLs that serve JS we are downloading software; it should be permissioned and constrained, but there's nothing fundamentally wrong with downloading software or executing it on your machine. major browsers over-privilege JS apps in order to favor surveillance and ads.

but... garbados.github.io/my-blog/bro

@garbados @enkiv2 @aeonofdiscord Your thoughts are always welcome. I have enjoyed our discussions on this front in the past.

@aeonofdiscord @enkiv2 @garbados I am of the opinion that we have reached the point where the browser as an application platform needs to exist separately from the browser as a document distribution and consumption platform.

@garbados @enkiv2 @aeonofdiscord
I am still trying to find the right words to explain my proposed solution, but basically:

- The web that exists should stay, and we should work to improve it. I am not trying to replace it, but augment it.
- A subset of the web that exists + other stuff that exists outside the web should be made available through a protocol/in a format that resists the problems with the web that exists, while also limiting it's functionality.

@ajroach42 @aeonofdiscord @enkiv2 @garbados so, bringing back BBS's, but putting them on a secure protocol that isnt just straight up telnet?

@chuck @garbados @enkiv2 @aeonofdiscord BBS + FidoNet style federation + SSH + a markdown browser might just do it.

@ajroach42 @aeonofdiscord @enkiv2 @garbados TBH the whole scuttlebutt thing appeals to me on this level. If you're just syncing json there's about a million ways to present that data that are valid options.

@chuck @garbados @enkiv2 @aeonofdiscord Agreed.

SSB has some drawbacks that worry me, but I'm in favor of the general ideas.

@ajroach42 @aeonofdiscord @enkiv2 @chuck yes, SSB and its ilk are really fascinating but are still dealing with critical standards and implementation issues (no deletes, etc). beaker and the dat ecosystem are muddling through tooling hell (hashbase, etc). all the pieces of a better web are coming together, and they improve with time

@garbados @ajroach42 @aeonofdiscord @enkiv2 @chuck ability to delete/be forgotten is as important in tech as it is IRL. Until IPFS etc have privacy and deletability (within the realms of what's practical, mind) then it's just a really cool name with a bunch of smart people working very hard on something that is not widely applicable.

@dch @ajroach42 @aeonofdiscord @enkiv2 @chuck i have some demo libs in the shop that support federated deletes (like deletes on fedi) but still i feel these technologies are wrong for certain data models that are otherwise being shoehorned into them

@aeonofdiscord @enkiv2 @garbados

Not only do I not want to load up a javascript application in order to read a news article, I don't want that to even be an option.

@ajroach42
This brings up the interesting possibility of a web browser that is incapable of networking.

Download 'sites' with a package manager to run in the browser, which cannot access the network at all.

@garbados @aeonofdiscord

@enkiv2 @aeonofdiscord @garbados

FEtch the content however you'd like, view it with a rendering engine that's not allowed to connect to the network?

That works as longa s there's nothing async happening (and, in general, there should rarely be anything async happening, IMO.)

@ajroach42
That's exactly my line of thinking.

Even things that seem like they need networking don't necessarily. For instance, a social network 'app' could be offline-first (like ssb is) -- a daemon syncs posts periodically, and the 'app' just renders & allows you to drop hints for things the daemon should post next time it syncs.

@garbados @aeonofdiscord

@garbados @aeonofdiscord @ajroach42 @enkiv2 tbh i think a key difference is that web code is loaded last second, and programs etcetera, at least on linux, are explicitly updated by the user.

At least in principle, the latter allows news to spread, if there were something wrong with the version.

@aeonofdiscord @ajroach42 @enkiv2 I think about this way too much. I'd like to experiment with separating content and layout.

This would allow devs to share layouts for common design patterns, or users could modify existing page layouts to increase accessibility. And I would want it so different pieces of page content could be user signed, for federated identity.

I have this dream of a browser with basic flex layouts, svg-inspired styling, and lua for lightweight scripting.

@enkiv2 @ajroach42 @freakazoid I mean, I'd rather something more LaTeX like then markdown like. The problem with that of course being LaTeX is Turing-complete so you'd want a subset of it, rather then just moving from Javascript to TeX as your programming language.

But LaTeX is focused around good text layout by default, and has every tool you'll need for that without style sheets or other garbage.

@Canageek @freakazoid @enkiv2 I don't want anything other than very basic layout to be pre-defined.

The author of a document won't know the configuration of my screen. Plaintext reflows very well.

Give me some very basic rich text. I don't need anything more than that.

@ajroach42
Yeah, this is basically why I didn't suggest TeX -- it's not just that it's turing complete, but actually to powerful.

Subset of TeX for equations might make sense.

@freakazoid @Canageek

@ajroach42 @enkiv2 @freakazoid Right, so use Knuth's algorithem's to relayout the text to your screen: These days they are plenty fast (compared to most websites at least, as long as you don't do a lot of weird stuff) But then you could also have stuff like decent hyphenation and justification.

@ajroach42 @enkiv2 @freakazoid But a lot of the default assumptions in LaTeX would work well for the web: You float figures to the place they fit, rather then trying to put them EXACTLY where you want most of the time.

It figures out exactly how the text flows, based on the size of the page, etc.

You'd have to modify it to not be turing complete, but from a conceptual perspective it seems a good fit.

@ajroach42 @enkiv2 @freakazoid That means it still won't work well with scientific equations, chemical formulas, tables, etc.

@Canageek @enkiv2 @ajroach42 LaTeX is intended to be compiled to some display format anyway, generally via DVI. Is DVI turing-complete?

A subset of HTML + SVG, with all resources required to be in-document, might work.

@freakazoid @ajroach42 @enkiv2 LaTeX typically compiles to PDF these days via pdflatex or lualatex. The TeX macro language itself is Turing complete.

But what LaTeX compiles to was always meant to be generic. These days if you removed some of the bits that made it possible to program in it, and a few of the slower bits, you could easily have it compile to the dimensions of the browser page. either as a single massive page, or with some sorts of breaks in it.

@ajroach42 @enkiv2 @freakazoid @Canageek I think layout is a problem, and we need a semantic markup language.

Basic text formatting, fine. Blockquotes, tables, lists, good. Images with captions, but letting the UI choose the dimensions for displaying them, and whether to put them into a gallery.

Instead of header and footer and sidebar, there's just a <navigation> element. Maybe several, to represent levels of a site or document. UI can choose how to display it (header, floating sidebar...)

@varx @ajroach42 @enkiv2 @freakazoid LaTeX can be pretty close to semantic already,

"(Germanium crystal: \SIrange{4000}{700}{\per\cm}) using \SI{2}{\per\centi\metre} resolution and 64 scans."

(SI = the unit system)

@ajroach42 @enkiv2 @freakazoid

I should be able to write stuff like this on the web without trying.

@Canageek @enkiv2 @ajroach42 At the other end, there's the criticism (from Alan Kay?) of the fact that we've essentially replicated paper books on computers. So maybe we're taking too narrow of a view and over-simplifying. Perhaps we're limiting ourselves too much by trying to make annoyances impossible; maybe that's a problem to be solved socially instead of technologically, except perhaps for the elimination of 3rd party content (or at least cookies).

@ajroach42 @enkiv2 @Canageek What we've described so far couldn't even express a typical PLATO lesson.

@ajroach42 @enkiv2 @freakazoid I just thought of something: Browsers are going to have to help control text width if it isn't specified in the document. Ever tried to read a raw text file on a wide monitor? Once you are over a few inches across its just unworkable.

But I don't want to have to resize my browser constantly.

On the other hand, if there are apps and everything uses the same formatting then one window size would be fine? But if I hit maximize getting it back might be a pain.

@Canageek
Wrap is a solved problem for plaintext. Even word wrap: backtrack to word boundaries unless the token is longer than the line, in which case switch to character wrap.

This mechanism works so long as you don't switch text directions in the middle of a line & don't try to apply restrictions like non-breaking spaces to character wrap.

@ajroach42 @freakazoid

@enkiv2 @ajroach42 @freakazoid 1) I mean, how do you pick how wide a column to show? In HTML either it is as wide as the window (Fine when we used 800x600 monitors, not fine at 1920x1280!) or the document specifies a width.

If the document doesn't specify a width, and we don't want it full window width wide, browsers are going to have to handle that.

@enkiv2 @ajroach42 @freakazoid 2) That algorithm should have been cast into a fire years ago. Knuth wrote a better algorithm in 1978, and its been possible to run it in real time for quite a while en.wikipedia.org/wiki/TeX#Hyph (I've heard that you CAN use this in browsers these days, just no one does)

@Canageek @ajroach42 @enkiv2 That makes me want to write a command line Mastodon frontend just so I can pipe everything through par.

@freakazoid @enkiv2 @Canageek what’s par?

And there are a couple, I’ve fiddled with one of them idly when I was trying to figure out if I could make my pocket chip useful. I have notes somewhere.

@Canageek @freakazoid @enkiv2 well that sounds exceptionally useful, and I wish I had known it existed sooner.

@ajroach42 @enkiv2 @freakazoid Yeah, but it uses fixed-width spaces, which are non-ideal for reading.

@Canageek @freakazoid @enkiv2 right. Hence user styles.

Have a clearly defined, sane max-width default, and make it user overridable.

Just like we do now, but in the control of the user, not the publisher.

@ajroach42 @enkiv2 @freakazoid I was thinking of the actual layout within the window.

Would tabs still be the best approach if you aren't going to be using all the space at the sides? I've thought they should move UI elements to the left and right sides of the screen for a while.

Or would it be better to go back to a multiwindow model so the OS can do nice layout things?

Would it be better to have split windows inside the browser, or open two browser windows, etc?

@Canageek
Multicolumn support sounds like a good idea -- not so much because it makes lines shorter (I don't understand why we would want that) but because it makes supporting transpointing windows or other forms of alignment between documents easier.

@ajroach42 @freakazoid

@enkiv2 @ajroach42 @freakazoid Studies have shown it is harder to read long lines. After a certain length your eye gets confused about which line it is on and has to spend extra time double checking it is reading the right thing.

@enkiv2 @freakazoid @Canageek it’s easier to read shorter lines, especially for folks with certain kinds of vision problems.

@ajroach42 @freakazoid @enkiv2 en.wikipedia.org/wiki/Line_len has a good explanation.

Its interesting that digital studies are showing a lot of confusion about the optimal length off a printed page, or if there is one.

@Canageek @freakazoid @enkiv2 ah. A valid discussion. Ultimately, IMO, that should beg left in the hands of the user. Set some sane defaults, allow for simple customization.

I like the idea of pulling in content from multiple sources in to multiple columns on one screen, personally. But I suspect there is no “right answer” here.

@ajroach42 @enkiv2 @freakazoid Right, but feature support has to be there. I think Vivaldi is experimenting with some of these features actually.

@Canageek @freakazoid @enkiv2 sure. If someone implements a windowing system that can handle these things, I don’t see a reason not to support them.

But most of that should be handled by the windowing system, I think?

GUI design is not my area of expertise.

@ajroach42 @enkiv2 @freakazoid The issue is due to tabs, browsers are basically window managers now.

@Canageek @enkiv2 @ajroach42 Tabs are a hack around the fact that the window management available to most users is an utter disaster.

Which brings up an interesting point: applications are hobbling themseves by being crossplatform. They're stuck either not integrating in any interesting way or doing their own bespoke internal integrations that don't match anything else on the platform.

@freakazoid @ajroach42 @enkiv2 I mean, at the same time, it lets me have a hundred tabs saved that I don't have cluttering up my desktop. Basically lets me put all my windows into a browser box rather then trying to deal with them each one by one.

@Canageek @enkiv2 @ajroach42 Like I said, window management is a disaster. There are a bunch of Linux window managers that let you stack windows into a single tabbed box.

@freakazoid @ajroach42 @enkiv2 Which ones would you recommend? I've only got experience with Gnome and XFCE. I liked KDE3.X when I used it, but it wouldn't run on the linux machine I had back when I was using it daily.

@Canageek @enkiv2 @ajroach42 I have tried dozens of window managers, including many few here will have ever heard of (GWM, for example), and I think i3 is the best one hands down. I tried Awesome and Ratpoison when I was looking for a tiling window manager, and I found Awesome to be too inflexible and Ratpoison to be too minimalist. I3 is fully controllable via CLI (dbus, actually), and its configuration language is powerful without being overly complex.

@freakazoid @ajroach42 @enkiv2 Is that a weird one, or kind of similar to Windows/KDE in how you interact with it?

@Canageek @enkiv2 @ajroach42 It's a tiling window manager. You mostly interact with it via keyboard shortcuts, though I guess theoretically you could bind most actions to mouse events.

@freakazoid @ajroach42 @enkiv2 Yeah, no. I'm not moving my hands back and forth between keyboard and mouse every time I want to resize a window.

@Canageek @enkiv2 @ajroach42 Oh, resizing can be done with the mouse; just drag the borders around. There are keyboard shortcuts to do it, but you don't need them.

@ajroach42 @enkiv2 @Canageek Fluxbox and Pekwm also support tabbed/grouped windows, but otherwise they're more traditional stacking window managers, which might be closer to what you are looking for.

@freakazoid @enkiv2 @ajroach42 I've used Fluxbox with Knoppix, good for loading off a CD quickly, but way more lightweight then what I want.

I liked how KDE2 was like, if Windows just threw in every linux feature they could think of, without breaking the basic design. Window bar at the bottom, start menu, but also able to pin windows to the top, snap them to eachother and so on.

@freakazoid @enkiv2 @ajroach42 When using gnome I discovered focus follows mouse, and was VERY happy (Make the figure I'm looking at nearly full screen and still type into the window under it!)

@Canageek @ajroach42 @enkiv2 I seem to recall GNOME going back and forth on focus-follows-mouse. I've been using X11 since 1995, with my first window manager being TVTWM. I used that one for a long time before switching to FVWM, which I probably used longer than I've used any other manager. i3 will probably surpass it soon in terms of longevity.

@freakazoid @enkiv2 @ajroach42 It wasn't on by default, but it was available. This was before Gnome went crazy, back when it was trying to be Mac OS Classic with more bells and whistles.

A bit after KDE went WIDGETS, WIDGETS EVERYWHERE and then was too slow to run on the Pentium 4 I was using at work.

@ajroach42 @enkiv2 @Canageek Which is good because there is approximately a 100% chance that you will want to customize it. While dmenu is nice, I have recently switched to rofi and like it much better.

@ajroach42 @enkiv2 @Canageek What I'm thinking of is the way ACME works with Plan 9.

@freakazoid
If acme did hypertext -- well, we wouldn't have a browser exactly, but we'd have something that does better on all the things that we're looking to keep browsers doing.

@Canageek @ajroach42

@freakazoid
I was working on a lightweight hypertext thing with parallel windows (not transpointing but spans are color-coded and aligned) & acme would probably be a substantially better model than the UI I currently have for it.
@Canageek @ajroach42

@enkiv2 @ajroach42 @Canageek Even X11 apps used to use multiple windows quite extensively. Not sure what led to the switch. We're not quite back to MDI, but the main difference between the current approach and MDI is that we have little to no control of the layout of subwindows within the main window.

@freakazoid
I don't think being cross-platform is a bad thing. It's just a shame that the most popular mechanism for cross-platform GUI dev is the only one that doesn't have good support for pseudo-native widgets.

@ajroach42 @Canageek

@enkiv2 @Canageek @ajroach42 Which mechanism is that? Qt seems to do a decent job. SDL, not so much, but it's targeted more at game dev.

@freakazoid
SDL doesn't have a native widget mechanism because SDL doesn't have widgets.

I'm thinking of the equivalent of mmtk for tk. Swing has one, whose name I've forgotten. GTK & QT have them but I never knew their names in the first place. It's a mechanism to skin toolkit widgets based on current OS themes & make them behave like native widgets (sometimes by actually turning them into native widgets).
@ajroach42 @Canageek

@freakazoid
Both TK & Swing actually have this mechanism (sort of) out of the box, in that both can simulate sets of native widgets through a built-in config setting for a certain set of styles -- notably motif. mmtk seems not to be a wrapper over this that identifies which style is apprpriate: it creates even the elaborate osx translucent scrollbars and such.

@ajroach42 @Canageek

@freakazoid @ajroach42 @enkiv2

For example, LaTeX the standard way to size an image is as a fraction of \textwidth (or \pagewidth) (Though you can do it in cm, that could be removed)

See: en.wikibooks.org/wiki/LaTeX/Fl

@enkiv2 @ajroach42 @freakazoid I'm just saYING... that's, just basic BBCode you've described:
en.wikipedia.org/wiki/BBCode

Markdown is fine if you're (a) expecting it and already familiar, and (b) talking about programming stuff, but that cuts out a LOT of people.

(... also (c) just... don't use asterisks a lot I guess, like gosh DARNIT it trips me up every time.)

@ajroach42 No JS. No transclusion of third-party content. Cookies, but no third-party cookies (which are meaningless without third-party content anyway). Little to no control over layout by the author, with all formatting being based on semantics. Images can be embedded, but they need to be literally embedded in the document.

@freakazoid

@ajroach42

I agree with all of that aside from the formatting. Users should have a *choice* to override formatting but I don't think it should be removed completely.

Support should exist for viewing all content in a variety of ways, but don't throw out the baby with the bathwater.

@ajroach42 for me, something like firefox containers is a must at this point, it's really great for preventing tracking even when you already have some other form of tracking prevention. i've had websites suggest things related to what i'd searched on other websites even with tracking protection in browsers that don't have anything like firefox containers

@headachebooth Such a feature wouldn't be required if there was no capacity within the browser/server to track you, though.

@ajroach42 I'd build a web without imperative clientside code.

Everything would be declarative!

And everything that sent an HTTP request to a non-origin location would be behind a permission dialog:
* Always allow [domain]
* Always allow [domain] from [origin]
* Allow [domain] from [origin] this session
(+ disallow variants of the above options)

@zatnosk @ajroach42 I think dialogs as a whole fail to prevent sites from doing bad things. I've seen too many sites that say We are unable to show you our content because you have #JavaScript turned off and users then allow whatever the site and its third party partners want to do.
.
I'd make the client default to being unable to perform most tasks involving 3rd parties.

This is one of the reasons I love .

The Gopher protocol, bolted on to a basic rendering engine could actually do something pretty special.

I like inline images, for example. I'd love to be able to render documents with a stylesheet of my choosing. I'd like to see some very basic markup, and hypertext linking.

But that's it.

No client side code. I'm okay with first party cookies, because they enable some good behavior, but they should be transparent and Obvious.

In my head, a gopher browser with a markdown rendering engine, with support for inline images and in document hyperlinks would be something close to an ideal balance.

Not perfect, but close.

@ajroach42 I love this approach, but I personally can't and won't throw my eggs in the gopher basket as long as there's no encryption and no authentication.

It's pretty damn useful to share documents privately.

@ajroach42 so i don't understand most of what you've said in this here toot thread but i can tell you i measure response times in chrome in the seconds or tens of seconds, to say nothing of the minutes for my laptop outside of chrome.

it stinks and i would indeed like an alternative.

@ajroach42 I've just started a project to provide my answer to this question: The "Memex" browser engine.

It'll take care to not have any Turing Completeness on the client side. You'll be informed of any network requests that'll happen before you trigger them, and I'm looking to a cookies alternative so you can be better informed of those too.

And if you want a site to update live, send the site your location, etc you'd have to bother to look to activate that.

@ajroach42 Lynx but with media support, client-side CSS and asynchronous refresh. I think some javascript is inevitable but it should be kept in its cage a lot more.

@ajroach42 the web is a good idea, but remove all JavaScript, CSS, and plug-ins (including NPAPI, PPAPI, ActiveX, and EME)

also make sure that what's left isn't Turing complete

@ajroach42 For blogs, journalism and articles I want text (a single column preferably), light / dark theming support, pictures and videos. For many websites, this is enough. Perhaps some navigation stuff but keep everything as simple as possible. Because I want the focus to be about the content not the site. However, sites for other purposes (eBay, email, peertube etc) will need different styles. But simplicity, imo, is key.

@ajroach42

Everything except for client-side scripting and stuff that is only useful with it, automatic loading of pictures or other embedded elements unless hosted on the same server as the page and the expectation that the client faithfully follows the style sheet.

@ajroach42

The problem with the modern web browser is that it's become a software runtime. This is handy for writing lightweight(ish) clients and games but 95% of the web is just documents.

So every document is potentially a program without looking like one and a huge amount of effort goes into (semi-successfully) trying to keep those secret programs from harming us.

So I say cut the Gordian Knot: use a document reader when reading web pages and the app runner ONLY on websites you trust.

@suetanvil that’s the idea I’m considering here, yeah.

@ajroach42 I would remove client-side scripting altogether and look for alternative solutions. I would allow for a <link rel="application"> so I can "install" on my desktop Web Applications from a Web Page, so *then* they would run sandboxed with JS.