Hello from a software developer and social adventurist

Hi all,

I’ve spent the last decade working on software and attempting to understand decentralization as a social phenomenon. I come to this community in search of understanding, opportunity and a desire to do something that matters.

My journey started a couple decades ago with the free software movement and the four freedoms. I learned then that my thinking is particularly oriented toward the user, or the person, and ultimately humanity. That led me to support lots of people with their computers and technology and later developing software since it scales so damn well.

After noticing the astronomical value users were creating for proprietary software developers, and seeing social networks as more of the same, I wondered how users could benefit from the value they were creating in the form of a user-owned social network. If it was going to happen, the system would need to handle money to pay for servers at least, and PayPal came to mind. It was at this time though that PayPal shut down Wikileaks. I went looking for other ways to send money online which could not be shutdown and found Bitcoin.

This took me on another important leg of the journey toward understanding decentralization, when it works, how it works, what are the tradeoffs, and how it can be fostered. Fast forward to today, I wish to spend my free time on something truly important and again I return to this orientation toward humanity.

Many of today’s problems have been developing for decades as corporate power grew consistently putting profits over people. It is my belief that the most effective tools for reasserting sovereignty in the future will come through open source software and decentralization which returns privacy and agency to the individual.

The last couple of weeks, I’ve been doing a deep dive on the fediverse, examining Mastodon and Diaspora code and the AP spec, thinking about how I can best help these and other federated free software platforms and networks.

I’m glad to be joining you all and looking forward to what we can all do together.

Thanks,

David (@weex / @weex@mstdn.social)

6 Likes

Hey @weex, nice to meet you!

I’ve just joined SocialHub a few days ago too. We are trying to federate hospitality exchange platforms, but have little knowledge about activity pub so far. Our project is hosted here: fedihospex.github.io

You are welcome to join the discussion here, help us figuring out how fediverse might look like for us, prototype or organize.

2 Likes

Thanks @mariha! I had no idea there were so many systems in the hospitality exchange market and how exciting to federate what looks to be a well-established project in Trustroots.

One facility that many of these systems could really benefit from is a plugin system. I haven’t seen one yet in an AP-supporting project but I think they’ve been a key part of the success of platforms like Wordpress, Drupal, etc.

It might be interesting to think about how AP can be added as a plugin to something like Trustroots. Perhaps it’s too much since AP tends to interact with core objects but something to think about.

2 Likes

Most welcome to SocialHub, David! I just saw you posted to Hospitality Exchange topic. Most exciting to me is exploring new fields of application, and enabling strong interoperability of different, very diverse application types that go beyond Microblogging. Not only building these apps, but the process of designing, building and integrating, are quite interesting. Big strides can be made, but they need close cooperation of the people involved, so I am very happy you joined.

1 Like

In the interests of maintaining accuracy I’ve built an entire family of fediverse applications that all support plugins and have also implemented AP itself as a plugin to other applications, so would agree that this is worthy of investigation.

3 Likes

Wow, I’d be interested to learn which applications, about the plugins, and your experience designing plugin architectures. Might make sense to post a thread to continue that!

1 Like

All of the Nomad projects (Zap, Roadhouse, Osada, Redmatrix, Hubzilla, and Mistpark) as well as Friendica (a code branch from many years ago) have plugins. These are built on a hook or event-listener system very much like WordPress. It’s very simple architecturally. The hardest bit has been documentation as every hook receives different data appropriate to its needs. We normally just document the hook names and refer people to the code or copying what other addons do to figure out how to use it. This isn’t ideal but it has worked for us. We’ve built everything from LDAP and openid authentication to post filters to “Facebook federation” (before they outlawed social federation around 2012) and games/utilities/apps using this system. I made a guitar chord generator for my own use. It’s fascinating what the community comes up with. Some of the more interesting addons have been a facial recognition feature and a shopping cart and an alternate delivery engine. In one project which was built before ActivityPub existed we implemented ActivityPub as an addon. Any time our projects get a feature request which we refuse to put in core, we usually recommend that an addon be used instead so that the “customer” can get exactly what they want and other sites aren’t forced to live with it but can choose to install it if they wish. Oh and anything that requires code or interfaces from one of the corporate providers automatically becomes a plugin because we don’t want their excrement in core where it could become a system dependency. We learned this the hard way.

3 Likes

I must say, it’s really something to hear about all of these projects a few weeks into my exploration of the fediverse. I’m taking it as a signal that discoverability is a challenge that needs help. Your page listing instances of so many AP and other projects is really good. Fediverse.party is really good. And I hope to be able to raise some attention on the question… when you venture off of mainstream social media what’s the best way to get to know your options. Feels similar to what I imagine an expat has to contend with. How many nations could they have visited and for how long? Or is the pull really social, as in following who you know?

I’m taking it as a signal that discoverability is a challenge that needs help.

Not really. We stay mostly under the radar because that is our choice.

Concerning discoverability I think that the fediverse already established some mechanisms. Most projects support the nodeinfo protocol. Also many systems provide API endpoints where they publish their known servers they are peering with. And last but not least, in AP the contacts can publish a list of their followers and followings.

In Friendica we are using this data for example for suggestions whom to follow.

What I like about the fediverse is that the different software projects and users can decide on their own if they want to be part of this discovery. Users can set a flag if they want to be searchable. In Friendica users can also not only chose if they want to publish their contacts but even when they do so, they can exclude some contacts from these lists if they want to.

1 Like

@heluecht I believe @weex was probably referring more to discovery of what the 70-80 (?) currently known ActivityPub platforms offer and what kind of target audience would best be served by each platform.

There have been a number of attempts at independent discovery services such as fediverse.party and the former switching.social. The issue I’ve found with these is that they are heavily biased to the publisher’s personal preferences and they spend maybe 30 seconds looking at a project. Many of the reviews and descriptions are not well informed and are usually wildly inaccurate and quickly outdated.

You may have noticed that whenever a fediverse platform shows up on hackernews, 60+% of the comments are along the lines of “they’ll never succeed. Where’s the business model?”. Most of the remainder complain about the “marketing” and “branding” because these are the only concepts the commenters believe in - it’s all about unlimited growth and making billions of dollars and brand names. Then there are 3-4 comments from actual fediverse users or developers trying to explain that these not only aren’t a priority, they are all merely facets of the multi-headed dragon called corporate capitalism and world domination we are determined to move beyond before it kills us as a species.

As I quote often from the former CEO of Netscape -

“The outcome of a battle between a bear and an alligator depends on the terrain.”

I’ve also said this before, but I think the best solution for this is for a website of some kind providing an open discovery process where people can engage with others who have actually used the software on a daily basis and provide open reviews and relevant commentary. Preferably using a fediverse-based platform so they don’t need to register on the review site to participate. I would build it myself tomorrow if it weren’t for the obvious conflict of interest. Any volunteers?

Well said. As a developer it’s tempting to think here’s a funnel (I know what to do with funnels!) but as a user I went off of stories I had seen, what I currently use, and picked one platform to try. A year later, here I’m digging deeper with a desire to suss out what kind of social networking, if any is good for my humanity.

I don’t want to be driven by likes. I want to have deeper conversations vs gotchas and dunks. I feel that video and audio conversations are superior to text for connection so wondering about how those might be integrated. At a high level, I see loads of features and loads of networks and that the mainstream players all evolved with the dollar at the helm.

Putting my developer hat back on, I’m now looking for a platform to build on and it’s that old problem: the longer a project has taken, the even-longer it will take on average. That’s how I feel about finding platforms to evaluate as a base. It’s a good problem to have though… I shall get back to it.

Very broadly speaking, there are four major categories of AP projects.

  1. Twitter-like (“microblog”)
  2. Facebook-like (“conversational” with groups, events, and media management)
  3. Dedicated-purpose (pixelfed, peertube, funkwhale, etc.)
  4. libraries and plugins (“tools”)

Within the categories, there’s a lot of variation. But a good place to start is to at least figure out which of these is closest to your requirements and that narrows the field substantially. The fediverse is dominated by #1 and to some extent #3. My own software falls firmly into #2. The first two realms are not completely compatible. At best we co-exist in the same space and can interact with each other in a basic sense, but they are very different worlds attracting very different people and usage patterns and expectations.

1 Like

I am co-maintainer of the wiki watchlists that are input Fediverse Party. These watchlist have the inclusion criteria that even the intent to build an AP federated app is enough. And if that project is no longer maintained, we’ll keep it on the list still because the code may still be worth a peek by other fediverse developers. Entries are input to the Fediverse Party website itself, that is maintained by one volunteer - @light - who can only spend so much time on it and is aware that for a general audience a different setup is needed.

List maintenance is time-consuming, and a boring chore, but someone has to do it :smiley: Nonetheless the AP apps watchlist is the most complete you’ll find, while the AP dev watchlist created by me is slowly growing. I invite anyone to suggest improvements on the issue tracker, or to become a co-maintainer of the wiki.

As for solutions to manual list aggregation might be using the Murmurations protocol, for which I started two topics:

(These are more focused on documentation; other topics on this forum that go deeper into capability discovery and negotiation a la NodeInfo).


On the whole a serious issue of ‘slow’ Fediverse evolution is that most people are all too happy to work on own projects, but none to willing to spend any time to collaborate across projects and solidify the foundations on which their project stands.

I compared us to Spiral Island, a beautiful though fragile island made with - what other people consider - trash, floating precariously in rough seas of bad tech (the real Spiral Island was destroyed in a hurricane). I’ve been trying to rally others to help build an archipelago, pointing countless people to this community and created Fedi Foundation as a site for community empowerment.

Thus far there hasn’t been much enthusiasm, and I may repurpose the website for my own projects which are on hold because of time spent on advocacy. (I guess I’m finding that “grassroots” means ‘individualism with coincidental encounters along similar interests’). It is what it is… :man_shrugging:

Okay. I’m bad at reading between the lines, which only gets worse when a text is not in my native language.

none to willing to spend any time to collaborate across projects

It takes two to tango.

2 Likes

Thanks for this. I hadn’t thought about the categories but they do help when thinking about markets. Your point about very different people is a big one as well. Being social creatures, I imagine people follow their friends wherever when they see them having more fun “over there.”

These lists are great. I played around with some of the numbers in the fediverse.party git and was surprised to find more networks (aardwolf, ganggo, postactiv) that made appearances over the past few years.

It would be interesting to survey people on how they chose the platform/server they’re on. How many were via a directory, how many followed a friend, or read a story or did a random web search. Data collection seems to be a challenge but if the value is clear and data anonymized, then it should be possible to provide better guidance on growth.

And doesn’t this sum up FOSS development at large.

I’ve been listening to a lot of Pieter Hintjens and I really liked his focus on problem solving. Devs like to solve their own problems. There’s also a philosophy he fostered in ZeroMQ of minimal sanity checking + merge everything which helps devs feel valued. If they submit a PR it’s not going to be perfect, but with linters and tests and an aggressive bias toward merging, they’ll know what they’re getting into when they press the button… and it pushes the quality enforcement to the edge node (the dev) which I find much better aligned to decentralized systems than epic discussions happening in github issues.

Maybe taking decentralization to the core of the development process, removing any sort of social gatekeeping could help bring more devs in, among other things. Might just be that it’s what I’m listening to now so everthing’s a nail. :slight_smile:

1 Like

Thank you :slight_smile: As for the survey… might start with a basic poll in a toot to get a first feel of how people encountered the fediverse.

I guess that’s true. But in a normal FOSS project there’s less risk in not being involved with, say, the programming language evolution or projects you depend on. Maybe ‘risk’ is not the right word, but federated project devs bought into a vision of highly interoperable apps, and are passionate for the culture and community vibes of the fediverse.

But the fediverse has no project driving it forwards. There is no organization conveniently publishing the next standard, or bring forth a new release to update your dependency against. It’s community all the way down. Not participating means stalled progress, or a dead end eventually.

Could you elaborate on this? I wrote United Software Development: A new paradigm? but that is probably not what you mean…

Sure, the way I understand the model that Hintjens/ZeroMQ implemented is that the software isn’t designed to a grand vision but grows in different ways as it solves problems as they come up. An issue, which could be a bugfix or a new feature, is stated as a problem and the community is free to argue whether it’s the right problem, or not a problem, or if accepted to be a real problem it is prioritized vs. others. Then developers take a problem from the stack, solve it with a PR which barring build failure gets merged.

A clear and mechanical policy on merging means that there is some risk of breaking the build, but that tends over time to trigger stronger build processes, more test coverage but … and here’s the attractive bit for me, developers get the satisfaction of committing code. The debate all happens at the problem definition phase. The developer has the freedom to create and of course it won’t be perfect but the project will keep moving. Developers who are satisfied have a higher chance of sticking around to keep solving problems. To hear Hintjens describe projects that use this, the main branch moves fast while maintaining high quality.

Much the same way that ActivityPub is a protocol that enables federation, a protocol for merging code centered on contracts and scripts for build/test can unleash a tremendous wave of development.

Using Ctrl-F on “:” actually gives a decent count of projects, “:tada:” for the AP supporting ones, and " - " for the It’s dead Jim section. There are some exceptions so I was just going to suggest a few edits to enforce that convention and probably very niche utility.