@lili
I agree, but I also think there's a balance to be struck with opinionated design, with masto itself being a decent case study. like inevitably someone will want to make a feed that sorts people they interact with more frequently higher on their feed, which seems very normal to me.
so what might other ways of making that healthier look like? one way might be to add some explicit noise, weighting, or damping parameter that prevents that from being the most dominant feature. if that parameter is under their control, they can decrease it until it isn't a harmful feedback loop. to help with that, another idea might be to offer a toggle switch to generate an "inverse feed" across the whole algorithm or a single parameter on it - what is getting filtered out of my feed as a result of how it's designed? that would make it easier to identify things that might be driving them into some unhelpful bubble or etc.
just thoughts, I think the whole question is v far from simple so thinking about what a healthy social internet looks like is never final or complete for me
(forgive me for tagging and making public, this is largely a way of taking notes to self through another imperfect UI lol #DIYAlgorithms )
Ok I'm gonna try and do 1 hour on #DIYAlgorithms per programming day until I get a reasonable prototype with some basic Algo examples, that'll be here: https://git.jon-e.net/jonny/diyalgo
prior context here: https://wiki.jon-e.net/Masto_Forks/DIY_Algorithms
the first things I think are simple but the most requested ones I've seen on here:
for now this all just world by POSTing an array of status IDs to a modified lists endpoint in order to be maximally general/interoperable with other Algo implementations. things like NRecent make me think there should be some way to do diffs instead, where you remove one item on the feed and/or insert one in a position too tho. maybe I am preoptimizing.
I am thinking the way to do this will be to have a system of
a) features that can be lazily computed for different object types (status, account, or derived types like lists of accounts, etc.)
b) a tree of procession steps with each node returning a value bounded 0-1 and the root being used as the position on the feed. posts that should not be put on a feed have a special value of NA that terminates processing the rest of the tree.
so that
c) an algo can be defined as an easily serializable eg. JSON/#JSONLD-like format that specifies features as dependencies and then describes the processing tree with an array of node objects, each pointing to some node type (and where it comes from, to plan ahead for plugins), parameters, and how it's connected in the tree.
d) eventually, new URL routes/API endpoints so you can link to, follow, and re-use other people's (opt-in public) algos in-medium.
the goal is to get very low-fi, ie. no big data, inaccessible hardware requiring NLP or neural nets and shit - explainability and transparency by designing simpler qualities that people combine in specific ways. yno. like .... designing an algorithm on purpose. for our own benefit, not some investor.
#diyalgorithms #nrecent #chronomatching #exclusivefeeds #monsterdon #longpost #mastodev #mastohacks
@futurebird
i gotta get back on this. I bet I could put this together by this evening. how about instead of having it be an option for your home feed, it's one of many different feeds you can select between? or would you rather it be an option for every feed?
#DIYAlgorithms
@LeonDLotter @ryneches @x1l3f @MattHodges @mauforonda @icymi_law @Colarusso @Sho_Ishiguro
there's also a working version that is going to be coming to your very instance shortly:
https://social.coop/@jonny/109545449455062668
#DIYAlgorithms
@NireBryce @hipsterelectron yes i have heard of them and am aware of basically how they work, but is there some history aside from them just being abandoned i should know about???
I am thinking about that + the ability to declare structured relationships between them and also n-deep circles, and then also esp w.r.t. how i've been expanding lists to also be able to explicitly include posts, what it would be like to be able to just even do simple set operations on them, like "this group of posts go to this metacircle of people minus this smaller circle of people."
esp if it was possible to like, share that set logic around in the same way as with #DIYAlgorithms, like be able to share around some post damping logic across the more heterogeneous space of circles than just 'public' vs 'private' and figure out what works collectively
@NicoleCRust @admin a couple more things: part of this is about experimenting with different relationships we can have with our communication systems. the normal model in academia is the journal, a communication venue usually run by a small, closed group of board members and editors, usually without much consideration to its economic structure (or so says the preponderance of for-profit APC-driven journals). The question is whether we can operate differently, by taking collective ownership over the means of communication, and practicing what that looks like. So figuring out a way to make that meaningful, and ideally feel good to do by being part of a cooperative community as opposed to feeling like a burden or a regrettable ethical failure as is the case with most contemporary journals is the goal. That, of course necessarily means taking into account the busy schedules of profs and other academic workers, so it's definitely top of mind.
Another part is experimenting with credit for things that usually don't get credit. Sure you can put on a CV that you "helped with neuromatchstodon," but that doesn't really look like anything. So both for professional purposes as well as helping ppl feel proud of the work they've done on infrastructure for the commons, we're building that credit into the communication and information systems themselves.
Eg. on the wiki I have a user page: https://wiki.neuromatch.io/Jonny_Saunders
There is a section "Contributions," which is automatically populated with all of the things I have contributed to on the instance. That's from a property that can be put on any page listing who contributed to something: https://wiki.neuromatch.io/Property:Has_Contributor
usually that is part of a form, so you are both prompted to give yourself credit as well as don't need to understand how the wiki works. We also have a WikiBot on the discord that can take your posts and embed them on the wiki with reference to you as the source, so even very minor contributions to a project can be creditable. The goal is to make the work not be thankless, where it's possible to just point to "look here is what I have contributed," as well as to make the structure of the instance not be some faceless bureaucracy - all information and all rules are socially defined, they were made in a time and a place by people, and those people can be you!
We can also build additional things off the wiki or integrate them with it, so eg. @patrickmineault was talking about #DIYAlgorithms earlier today: we can make a framework where we can have Algo "presets" in structured and human readable data on the wiki and swap them around, make them easy to fork and make different versions of, and then also link them to a system of credit and dialogue about them. So that might include the ability to link back to discussions you have about papers, so we can go from "credit for work done on the instance" to "the instance as a medium for a different kind of academic credit en route to replacing the extremely broken system of citations from journal articles to other journal articles being the only thing that matters"
anyway I am just trying to round out the thought a bit less polemically, but this is the subject of https://arxiv.org/abs/2209.07493 which is more of a long-term strategy and technical blueprint but is grounded in making distributed systems of governance and sensemaking
@neuralreckoning @patrickmineault @kordinglab yes. this is the idea behind #DIYAlgorithms (am afk but that tag should have my posts at least from this instance kn the matter, otherwise on social.coop) - making an API endpoint where you can POST status IDs into it so they can be read in-medium via the lists interface. so any Algo you want to cook up you could hook up to that. need to see if lists can be made public, if so then we could have any number of different public algo feeds on the instance:)
Do we have any #Ruby or #Rails #RubyOnRails people on our instance yet??? would be awesome to have someone to work with because I truly do not know what I'm doing and I want to merge what I've been doing with #DIYAlgorithms to the instance at some point....
#ruby #rails #rubyonrails #diyalgorithms