Basically, I'm thinking... the Zen of Palm effectively says that a lot of things shouldn't be done on a palmtop at all, just provide a way to collect info so the user can do it at home on their real computer.
I'm wondering if web browsing (that is, going on the web to discover content) is actually one of those things. Use AvantGo-style preprocessing of web content to make existing streams of content readable on the go, but maybe don't even try for discovery.
There are email-shaped objects, wikis, and television-shaped objects. All three are pretty amenable to lazy loading.
Email-shaped objects are well-suited to store-and-forward (and even centralized ones have at best eventual consistency anyway so the same mechanisms can be used for offline-first systems the way SSB does).
Wikis need to be synced periodically but probably can be heavily compressed. Codebases are the same.
@enkiv2 I was actually counting the television-shaped objects in the e-mail-shaped object set, although there are differences in presentation.
(Fundamentally, a YouTube video is the root of an e-mail-shaped thread in my vision, just with the body being a video instead of text. Playing a video does require vastly different UI and has different data requirements, though.)
I'd distinguish them only insomuch as there are hugely different data requirements.
With any comment system, it's conceivable for any user to preemptively archive all the content the user is likely to want to read. I can put all of wikipedia and all of project gutenberg on my phone. I can't do that with the whole archive of one longish-running podcast.
However! Also, we can distinguish based on primacy of comments.
Video responses to youtube videos aren't given the same primacy as text comments to youtube videos, and text comments aren't given the same primacy as recommendations or subsequent playlist entries, and this might not be a bad thing. Seeing it as a series of media objects with one author, and with comments being separate and connected by references, makes sense with the way people consume it.
@enkiv2 That's an interesting thing, how threads are connected, too.
Anything that feels like a natural stream of content feels like the thread UI works well for it... but sometimes elements within that stream can have their own sub-threads. (e.g. YouTube videos could be a stream, but each video has its own attached threads. Fediverse timelines are streams, but have parts of threads interspersed within them.)
Yeah. I think of podcasts & youtube videos the same way I think of series on a streaming platform: a sequence of media objects with a specific order, where new elements are append-only.
Some of these things have other second-order things hanging off of them too, like comment threads, but the way I use them I don't actually end up looking at them.
This is an rss vs email distinction, too: is there one entity that controls each sequence, or is a sequence non-centrally controlled?
@enkiv2 I think the way to do it probably ends up looking like this:
The pre-chewing server implements a hierarchy of where things come from. So, you have an e-mail hierarchy, an RSS hierarchy, a Fediverse hierarchy, a YouTube hierarchy, a Facebook hierarchy, whatever, really. APIs and screenscraping are used to construct the hierarchies and the feeds.
There's also views of this content, based on various heuristics. (The master Inbox is basically where things deemed important go.)
I was thinking of this in terms of trying to categorize stuff for the sake of organizing synchronization & distribution, assuming that basically all technologies would be reinvented for it anyway.
If you're thinking of an email-inbox/rss-reader style periodic-syncing local-storage interface for existing things, that's a pretty different situation -- one that's a little easier to implement but harder to guarantee good performance from.
@enkiv2 Note that a lot of performance issues can be solved by throwing a modern desktop computer or rackmount server at the problem, instead of trying to do it on the phone, though...
(That said, that's no excuse for not writing tight code, but it means that techniques that are only barely practical on a modern smartphone application processor can be done on a server, letting the smartphone have what would be considered a microcontroller nowadays.)
I think @drwho might be worth bringing into the conversation since he already has a framework for pulling down content he's subscribed to and preprocessing it. From what I understand, the processing isn't optimized for making it easier to handle on lower-spec machines, but maybe some ideas are applicable to low-connection and low-spec machines.
Of course, I realize some issues here - web-style search actually is a very common usage model for mobile internet, for starters. (People do use phones for up-to-the-minute unpredictable reference material - "is this business near me open?" as an example. That's not something you can easily cache on the device.)
That could be contorted into a threaded model (here's a stream of the products available), but wow that would be ugly. And, store-specific apps won't happen (critical mass needs to happen for that), and sucking brains out of something handling payment information is questionable, so... shit, I think there does have to be a web browser.
What I mean is: if this is an overall better mobile device, and it's used by people who also have home computers, discouraging impulse purchases on the go & providing no mechanism for advertising and in-app purchases are probably features.
Purchasing things on a phone is often an accident. Looking at prices can be distinct anyhow. If somebody does their window shopping on their phone and then makes the decisions at home, that's probably good for a lot of people.
Basically, the /ultimate/ point of this thread was, "how can we kill the web browser on the phone, to enable much lower-end phones".
I think in practice, we can't. We can certainly reduce its usage, and I think we can reduce its performance requirements (apply the Opera Mini approach to Firefox).
* Server sends static images only when they change (possibly in terms of a diff from the current image), and only checks for changes when the browser indicates the page is fully loaded (by the same mechanism as the reload button is animated)
* Client sends only events to be emulated (clicks, scroll wheel manipulation, keys)
Lazy loading is a nasty one for this, although you could probably detect it and have a trigger for a round trip (and have the server lazy load ahead of the client). And, finally, there's simply having an option to force a round trip at a certain point on the page (maybe "update page" in addition to "refresh").
Une instance se voulant accueillante pour les personnes queers, féministes et anarchistes ainsi que pour leurs sympathisant·e·s. Nous sommes principalement francophones, mais vous êtes les bienvenu·e·s quelle que soit votre langue.
A welcoming instance for queer, feminist and anarchist people as well as their sympathizers. We are mainly French-speaking people, but you are welcome whatever your language might be.