Wander – A tiny, decentralised tool to explore the small web
171 points
15 hours ago
| 27 comments
| susam.net
| HN
susam
15 hours ago
[-]
Hello HN!

This tool is inspired by Kagi Small Web (recent thread: https://news.ycombinator.com/item?id=47410542). A common concern raised here is that Kagi Small Web currently accepts only blogs, comics and YouTube channels. It does not accept arbitrary small websites. That limitation motivated me to build Wander.

Wander is fully decentralised. Anyone can host it on their own website. It consists of just two files: an `index.html` for the Wander console and a `wander.js` where you link to other Wander consoles. It is a bit like a webring, but more flexible. Each console can link to any number of sites and other consoles.

There is no server-side code, no database, nothing to install. If you have a website, you can set it up by uploading just two files. In fact, you can host it on GitHub Pages or Codeberg Pages too.

If you like the idea, please join the network. I would love to see it grow.

More details about how it works and how to set it up here: https://codeberg.org/susam/wander#readme

reply
hamdingers
3 hours ago
[-]
This is so delightful! I'll be deploying this and sharing a link on the issue.

One issue I see: If I get you to include a link to my console but I don't link to any others, I can trap wanderers within my recommendations until they refresh.

If that's not desirable, it could be avoided by having the client keep a running list of all the consoles it has discovered this session and choosing from that list at random.

reply
susam
3 hours ago
[-]
Glad you like it. Yes, you are right. This is something I realised too initially as a natural consequence of being the only participant in the console network at the beginning. Keeping a list of discovered consoles is exactly what I was thinking too. I built this tool rather quickly as a proof-of-concept while taking a break from another activity, so I couldn't quite find the time to implement this solution. But I might implement it in the next update. Thank you for taking a close look at this project!
reply
InexSquirrel
3 hours ago
[-]
Very cool. Reminds me of stumbleupon, which I lost many hours to back in the day.

Curated discovery is one of biggest gripes with modern platforms like youtube - discovering something truly new and outside of your normal interests is really difficult, and the same goes for the web. If you have a topic you want to explore it's fine, but finding random things you'd never have thought of yourself is much harder.

reply
rando77
1 hour ago
[-]
I've thought of a service that scans new websites and GitHub repos and looks for things that don't look like anything else (using something like hdbscan for outlier detection), and creates a feed for people to follow.
reply
oystersareyum
2 hours ago
[-]
Stumble upon led to most of my interests in life, so happy for this
reply
Uncle_Clark
1 hour ago
[-]
Same. Curated content narrows the scope of discovery to find meaningful things. I always look for a way to turn off that "feature." Very cool!
reply
punknight
6 hours ago
[-]
I love this as a concept. The wander button is great, but it still needs some curating to decide what pages you like, and getting to the actual content. I guess I'd like to know the workflow moving forward? Just re-download the repo every couple weeks, and diff to see what new sites are on the list?
reply
susam
5 hours ago
[-]
Thank you for taking a look at this project. I'm glad you like the concept. I am not sure I have understood your question accurately, but let me attempt a response anyway. If I get it wrong, please feel free to correct me or ask me again.

There is no need to re-download https://codeberg.org/susam/wander every few weeks. The setup is a one-time activity. From that repository, you copy exactly two files (index.html and wander.js) and place them on your web server, preferably within a /wander/ directory. After that, you only maintain the wander.js file.

You curate your own links and choose which other Wander consoles to link to as neighbours. The contents of wander.js are entirely yours to define. There is no need to diff or compare it with the version in the repository.

In fact, if you do not care about updating or curating links often, you can leave both files untouched indefinitely. The only downside is that some links may eventually succumb to link rot, which could affect the wandering experience. So it may help to review your links occasionally and remove dead ones, but beyond that no ongoing maintenance is required.

reply
punknight
4 hours ago
[-]
I get that, but right now, if you traverse each "console", you end up with a list of 28 trusted "small web" links. The project grows in value if that list gets bigger over time either by you personally adding nodes or the community adding nodes. I don't really have a way of knowing if you are intending to add more links to your console (thus growing the project) or this is a one and done type of system.
reply
susam
4 hours ago
[-]
> I get that, but right now, if you traverse each "console", you end up with a list of 28 trusted "small web" links. The project grows in value if that list gets bigger over time either by you personally adding nodes or the community adding nodes.

Yes, all of this makes sense.

> I don't really have a way of knowing if you are intending to add more links to your console (thus growing the project) or this is a one and done type of system.

I personally do not plan to add too many page links to my console. However, I will add more console links, which has the effect of expanding my console neighbourhood and thereby increasing the pool of recommendations.

That said, I am not sure why it matters whether I add more links to my console specifically. In my opinion, any single Wander instance should not matter much on its own. What matters more is whether the network as a whole grows, that is, more consoles being set up and more of them linking to each other.

One of my design goals has been to avoid giving any particular console a special status. All consoles are equal participants in the network from a technical perspective. You should be able to pick any console from the network, perhaps one belonging to your favourite blogger, perhaps even your own and explore the neighbourhood from there. Yes, the neighbourhood would look different from each console but that's pretty much the point of this project. As long as the overall graph of consoles is connected, you could in theory reach any community recommendation from any starting point. Even if the graph is not fully connected, I do not see that as a significant issue. It just reflects how connections tend to form in a decentralised system. Please let me know if you think I have missed your point again.

reply
dgb23
6 hours ago
[-]
I want to like it, but I don't fully understand why one wouldn't just put a bunch of links on a /wander page and maybe randomize the order?
reply
susam
5 hours ago
[-]
What you are describing sounds a bit like a blogroll, which many of us do indeed maintain. Mine is here, by the way: https://susam.net/roll.html

However, Wander is meant to be a bit like StumbleUpon, but without requiring a centralised service that everyone must go through. One limitation of a blogroll is that it does not provide a consistent way to discover recommendations recursively. For example, I might visit your website A, which recommends website B. I might then visit B, but B may not have any recommendations at all.

Every Wander instance, on the other hand, has a defined list of recommendations. It also links to the /wander pages of its neighbouring sites. If you visit the /wander page of website A, the tool can discover its neighbours (B, C, etc.), then the neighbours of those neighbours and so on. It can fetch recommended links from them and present the links within the same console.

Additionally, the tool provides a way to leave the current console and move to a neighbour's console if the visitor wants to continue browsing from there.

reply
dreko
6 hours ago
[-]
Because the discovery is transitive. When you wander, it fetches another console's wander.js and picks from their pages, so you're not just exploring one person's list, you're hopping across a graph of curated lists. A static link page can't necessarily do that.
reply
thewanderer1983
2 hours ago
[-]
Have you considered including Gemini and gopher support? There is a very nice small web community there.
reply
pacoWebConsult
5 hours ago
[-]
We're inventing stumbleupon from first principles.
reply
tlavoie
4 hours ago
[-]
That... seems like a good thing!
reply
moebrowne
6 hours ago
[-]
It includes only 17 URLs: https://susam.net/wander/wander.js
reply
susam
6 hours ago
[-]
17 + 11 URLs from https://dahlstrand.net/wander/wander.js + 26 URLs from https://www.siddharthagolu.com/wander/wander.js that I link to from the above link. So 54 URLs so far.

The number of URLs grow as more people add this tool to their website and add each other as neighbours. The tool is capable of discovering neighbouring consoles and showing URLs from there.

reply
Balinares
3 hours ago
[-]
Did we just reinvent webrings 25 years later? :)

(Not a diss. Webrings were cool.)

reply
deanebarker
6 hours ago
[-]
Love this, but I need it to allow me to break the frame. I found some neat sites, but I need a button to open them in a new tab, frame-free, if I want to.
reply
susam
4 hours ago
[-]
Thank you for taking a look at this project. I'm glad you liked it.

You make a fair point. I put this together in about 1.5 hours in the early hours of the morning while taking a break from other academic work, so it is not as polished as it could be. Adding an 'Open' button to launch a link in a new tab sounds like a useful feature. I will consider this for the next update. Thank you for the feedback!

reply
mzajc
6 hours ago
[-]
Firefox has a neat feature for this; if you right click an iframe, it'll have a "This Frame" menu with options including "Open Frame in New Tab".
reply
cosmicgadget
3 hours ago
[-]
Seems like a perfect addition to any links page.

Would it be possible to create a list of sites with a Wander?

reply
bovermyer
5 hours ago
[-]
So, is this a meta-webring, that allows for showing individual sites but also sites that show other sites?
reply
weedhopper
6 hours ago
[-]
Awesome it’s hosted on codeberg too
reply
xnorswap
5 hours ago
[-]
So is this web rings all over again?
reply
worldsayshi
50 minutes ago
[-]
I kind of want webrings but with federated OIDC. I.e. you can create an account at any of the sites and re-use the login on the others to leave comments/add content. This has to exist in some neat package right?
reply
moralestapia
5 hours ago
[-]
It is StumbleUpon over again.
reply
susam
4 hours ago
[-]
There is indeed a lot of similarity with webrings and StumbleUpon but there are some differences as well. I discuss this in more detail in the project README here: https://codeberg.org/susam/wander#faq
reply
moralestapia
2 hours ago
[-]
Just to clarify, I like Wander. I'd really like to see something fill in the void left by StumbleUpon.

I used to spend hoooooooours wandering there.

reply
bovermyer
7 hours ago
[-]
Oh, that's neat. I think to really understand it though I'll have to explore it and experiment with hosting my own Console.
reply
dreko
6 hours ago
[-]
This is really cool, I think the idea here is fantastic!
reply
realaliarain74
1 hour ago
[-]
this is more nuanced than the title suggests. worth reading the whole thing
reply
warkdarrior
6 hours ago
[-]
This will get really fun when influencers get a hold of the idea and start connecting themselves into the Wander community.
reply
superkuh
2 hours ago
[-]
It would be cool if the javascript were re-written a bit to only use standard long existing javascript features so one didn't have to run a modern corporate browser to use the "wander" functionality. It did not work in my browser even with JS enabled.
reply
ab_testing
5 hours ago
[-]
So like StumbleUpon
reply
surgical_fire
6 hours ago
[-]
This is actually pretty cool. Once I have my own personal webpage, I may even add this tool to it.

It is a project I keep postponing lol

reply
vydd
4 hours ago
[-]
Delightful!
reply
touwer
2 hours ago
[-]
love it!
reply
Babkock
6 hours ago
[-]
Looks cool. Good job!
reply
shevy-java
5 hours ago
[-]
I don't know how useful this is, but I am getting tired of Google and co ruining the world wide web how it once was. Something has to be done. I have no idea whether this here can be of help or not but the more people think about this, the better. Otherwise the quality will continue to degrade.
reply
pbronez
6 hours ago
[-]
Cool idea - it’s like a recommended set of links, but integrated into an interface like stumble upon or Kagi’s small web browser
reply
desireco42
6 hours ago
[-]
Ahhh... this is like my OneRandomSite.com from... 2006 or so... nice.

I think we need things like this. To be reintroduced over and over.

reply
thenthenthen
4 hours ago
[-]
Tangent but wow codeberg is not blocked by the Great Firewall?
reply
jna_sh
4 hours ago
[-]
Title is wrong, isn’t it Wander?
reply
susam
4 hours ago
[-]
Yes, I am not sure how I managed to mess up the project name. I have emailed the moderators to ask for help in fixing it.
reply
tomhow
3 hours ago
[-]
That was me sorry! I was quickly fixing it up while a meeting was starting, and I hurriedly re-typed it rather than copying+pasting like I should always do with project names.
reply
dvh
4 hours ago
[-]
Remove the iframe padding/margin on mobile.
reply
jna_sh
4 hours ago
[-]
Oh I totally missed you had submitted it yourself! Thanks for a wonderful project :)
reply