https://www.timothychambers.net/2025/06/18/113327.html
Fantastic article. Should be required reading for all #FediDevs
https://www.timothychambers.net/2025/06/18/113327.html
Fantastic article. Should be required reading for all #FediDevs
Hi friends!
I want to tell you all about a new thing I'm trying, where I'll accept bounties to work on specific features or bug fixes for Sharkey. If there's something you really want implemented, then you can make a donation and I'll prioritize that work over whatever other ticket I was going to work on.
To be clear, this is an agreement to work on a particular project, not a promise to finish it! I'll dedicate a certain amount of time to the work based on the size of the donation, and if I finish the work - then great! If not, I'll upload my progress to branch to either finish later or hand off to another interested party. I may choose to complete the work anyway if it's something that I also want, but that's not a gaurantee!
Pricing is in lose terms because tracking my hours or comtting to deadlines will take all the fun out of everything. Sorry if that's an issue, but I'm not willing to negotiate on this. I will make sure not to "count it" if I don't actually get much work done, so don't worry about picking a bad week and wasting your money. If I don't manage enough work when I initally plan to, then I'll just save my progress and resume when I have more time.
Time slots are broken down like this:
• $20 - I work on my lunch break. This is usually about an hour, so I probably won't complete a whole ticket unless it's something small.
• $30 - I dedicate an evening or two. The exact number of hours varies, but it's usually 2-4 per evening. I'll aim for at least 3 hours in total.
• $50 - It's my weekend project. Again, my availability varies - but sometimes I spend 12+ hours between Saturday and Sunday.
• $100 - This is my focus for the week. I won't devote any more Sharkey time than I would normally, but all of that time is devoted to this work item.
If this sounds like something you'd like, then please reply or send a DM! For this first trial phase, I've picked a curated list of tickets that I'm willing to work on. Assuming everything goes well, I'll add more options and open up the possibility of working on brand new ideas too. I hope this can be a good deal for everyone!
---
Ticket options:
• #499 - enhancement: Context menu button for muting the instance of a post
• #548 - enhancement: Admin feature: Ability to safely reset MFA for end users
• #675 - enhancement: API Endpoint for validating scoped tokens, returning a list of assigned scopes
• #746 - bug: When editing a quote, the "quote" indicator and button are not aligned
• #836 - enhancement: Log IP Address of Registrants
• #910 - enhancement: Allow moderators to set a content warning on any post
• #943 - enhancement: Allow moderators to force a content warning for all posts by an instance
• #953 - enhancement: Investigate a better on-disk structure for drive files
• #997 - enhancement: Increase options for number of poll options
• #1001 - enhancement: Add option to delete all users from remote instance
• #1002 - bug: "Force Content Warning" does not apply to boosts
• #1008 - bug: Search menu does not lookup url containing emoji
• #1034 - enhancement: Multi select for adding notes to clips
• #1039 - enhancement: Add change UI language when logged out
• #1040 - enhancement: Hide alt-text
• #1065 - enhancement: Option to hide note that are replies to a reply of a note
• #1069 - bug: Send abuse reports to contact email
• #1070 - enhancement: Translate Content Warning
• #1071 - enhancement: Translate Alt Text
• #1072 - enhancement: Allow user to specify the source language for translation
• #1076 - enhancement: Support multiple hosts for email delivery
• #1106 - bug: Dont mark post as long for just including certain mfm
• #1110 - enhancement: Allow admins to change bio length limit
---
Clarifications and Disclaimers:
1. As stated above, this is not a promise to complete any work item! I'll put effort in - that's the only gaurantee.
2. This is not a contract of employment or payment for services.
3. If something "important" comes up, then I may pause your work item to focus on that. Think urgent bugs, security issues, or project management responsibilities. This won't count against the promised effort.
4. If multiple donations are made around the same time, then I'll complete them in order of submission.
5. If a work item is completed before I get to your request, then I'll offer the chance to select another ticket instead.
6. You're welcome to ask how long I expect a particular item to take! I may not answer in hours, but I can give a relative estimate of complexity.
#Sharkey #FediDevs #FediDev #SoftwareDev
Notes from the 2025-06-12 Geosocial Task Force meeting
Notes from the 2025-06-12 Geosocial Task Force meeting
The geosocial task force in the W3C Social Web Incubator Community Group meets today at 19:00 CEST / 13:00 EDT.
Join if you would like to discuss details related to representing location on the social web. @herebox is leading the writing of an explainer for the most common location-related usecases.
https://www.w3.org/events/meetings/ed630a3d-7581-4053-9978-75949ad42f2a/20250612T130000/
One more thing for us #FediDevs to keep an eye on…
This is how I am thinking about pointing to the GreatApe WebSocket API in the activity file.
The GreatApe WebSocket API — ActivitySocket ? — is sending ActivityPub activities over a WebSocket, along with some other stuff (such a queries, and commands).
Right now, I am using the "endpoints" field with the sub-field "inoutbox" to point to the WebSockets API end-point.
2/
One thing that is interesting about the GreatApe WebSocket API is that —
Because the WebSocket can be both read from and written to — the WebSocket is in a sense both an ActivityPub outbox and an ActivityPub inbox at the same time.
1/
GreatApe is a conferencing platform for the Fediverse and the Social Web — where an audience can listen & watch live, and can be invited to join the speakers on the stage.
GreatApe makes use of a WebSocket for communications.
I am working on turning the WebSocket API that @muhammadzaidali and @benyamin0 created into something more ActivityPub / ActivityStreams like.
Interestingly —
4/
This relay could even use the ActivityPub actor type "Feed".
3/
I think you could address this 'want' (for community feeds) by using relays.
A relay could represent a community.
And could selectively relay posts from specific users (across the Fediverse) that are part of that community.
2/
I remember some people years ago saying that — they wanted to "subscribe" to the "server live feeds" on community servers different from the one that they are on
This is a way of following & perhaps even joining a community without necessarily being on that server
Which for example is useful if you wanted to be part of more than one community but use the same account
1/
Some servers on the Fediverse represent a community.
Maybe a community of bird photographers, or a cognitive science community, or a community of open-source software developers, etc.
...
May it be, that one can not add accounts from bawü.social to a starter pack, @fedidevs?
#starterpack #fedidevs
A HEALTH-CHECK URL would, for example, make sure:
• the web-server is up,
• the database connection is fine,
• maybe query one or more important tables to make sure that still works,
• make sure any 3rd party APIs are working,
• etc.
If any of those things has a problem, then it would return "500 Internal Server Error".
Else (if everything was fine then) it would return "200 OK".
A lot of Fediverse software has a HEALTH-CHECK URL.
But not all Fediverse does.
It would be better if ALL Fediverse software had a HEALTH-CHECK URL.
...
A HEALTH-CHECK URL is a special URL that tell others if the system is running properly.
It would return "200 OK" if everything is fine. And return "500 Internal Server Error" if there is a problem
...
A HEALTH-CHECK URL is important to those who actual run and administrate Fediverse servers
A reasonable ActivityPub / ActivityStreams API to schedule something to be posted in the future might be — to HTTP POST something to an account's outbox with the `published` field set to a date-time in the future.
Dealing with JSON-LD would be easier in many ways if everything was defined inline.
Rather than having to get the content from a URL in the context, parse it, etc.
The ActivityPub specification does not have an example of the "sharedInbox" field in use.
Although it does say "An optional endpoint..." — I suspect a lot of people won't know (with confidence) that it can go under the "endpoints" field. For example:
"endpoints": {
"sharedInbox": "https://social.example/inbox"
},
Especially if the person is still trying to understand ActivityPub, and isn't aware of the "endpoints" field yet.
2/
I think there is a need for a "dumb" document format.
HTML is no longer that.
Markdown probably isn't it.
No one really uses enriched-text (IETF RFC 1896).
(I prefer wiki like formats, for various reasons, but —)
I don't think there is an obvious choice for a "dumb" document format, right now.