I’m currently developing an application for libraries (borrowing, not code) called Means Of Production.
A large part of this will be the federation between the servers - this will enable users of one library to browse and even use items from another. So I have to make a federation protocol of some sort.
I’m wondering if there’s value in extending what’s in AP to do this - while we don’t have posts or anything like that, it’s not hard to map the current model of Borrowers and Libraries into Actors, who can do Actions on our Items, etc.
I’m wondering though if this is just trying to make something fit that the protocol won’t care about and won’t help it.
Does anyone else have experience or any projects doing something similar?
I think what you need to ask yourself is this: For this federation between instances of your application, do you expect all remote instances to be the same software? I.e. all of them running this Means of Production server? If so, use a specially designed protocol between these as there is no reason to use ActivityPub and federate with other sites that run entirely different software.
However, integrating with ActivityPub might allow users on other sites running other software to interact with your library. For instance, you could theoretically imagine a Mastodon user or a Lemmy user (if Mastodon or Lemmy started supporting your AP extension) requesting to borrow something from a remote Means of Production server. If that’s a use case you’d like to support, integrating with ActivityPub might make sense.
Some ActivityPub applications are less “social” than others. For example, Funkwhale (music libraries) and flohmarkt (small marketplaces).
I think ActivityPub is a good choice even if you don’t need social features right now – you may discover an interesting use case for them later during development.
Software > Inventaire is your friend. Their purpose is to enable sharing books among people. It wouldn’t be surprising that you can build on it for actual libraries. I guess you’d need to take into account a few transactional options (who can access to what books, for how long…) but I would definitely start from there.
And there is Calibre that already works for similar purposes, but I’m not sure how they work with library software – there’s a web interface.
I’m familiar with both of these. My project is designed more for libraries of things, and also federation between libraries. Long-term plans are to provide an adapter to allow it to work with Inventaire, but every conversation I’ve had with their dev group is that they’re focused on physical books and committed to that area.
Calibre is for organizing a personal library, it’s not really focused upon lending.
Then indeed you can either follow Inventaire’s lead and focus on “things”, or work along with Software > Flohmarkt. You probably have some intersections with both projects.
I find your approach very interesting for hackerspaces and neighborhoods to share tools and other assets. A few years ago with a consortium we tried to propose something similar: a “decentralized marketplace”, where local communities could optimize their cooperation and people would generate compound offers by picking from various existing offers. In the 1990s, Pierre Lévy and Michel Authier worked on something their called knowledge trees: each individual would map their skills and experience, and each community would have a common knowledge tree; when one would join a community, they would see what part of their experience was most needed, or what skills they could learn best in that community.
Ah very cool info, thanks, I’ll checkk out the knowledge tree stuff for sure!
The ideas aren’t necessarily mine - it’s from a concept called library socialism that’s been synthesized by others. But I’m hoping the use of federation and easy adapters via OOP can make it easy for different solutions to build a common platform together!
I really like your use case, and in addition to the recommendations that were given above, a good focus is to keep as much as possible the general interoperability between these existing apps into consideration. Maybe start collaborations between you all. This will increase the ‘potential social’ of your work.
As for “less social”. This is a matter of perspective and how you define social, social networking and social media. What isn’t social about going to learn about other’s people’s works of intricate thought?
Capitalism and corporate giants have severely warped our idea of what “social” means, and on fedi we see a dogmatic focus on rebuilding “social” as the decentralized mirror image of traditional social media platforms.
If you take social networking to be “any direct or indirect human interaction between people”, then that truly opens the work field for creating solutions that encompass the whole of society.
That actually is a balance I worry about striking to support the openness of ActivityPub with the needs of a user - publishing library use can be a bit invasive.
Books can be one thing, but when it comes to tools and other items, might not be something people are comfortable with. For example, do I want people to see I’m using a nose-hair trimmer? Or that I have a high-cost electronic item in my house currently - is that a safety concern?