Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse

NodeBB

  1. Home
  2. Technical Discussion
  3. When I first started working with #ActivityPub, before #Fedify existed, it felt like writing web apps in Perl and CGI in the late '90s.

When I first started working with #ActivityPub, before #Fedify existed, it felt like writing web apps in Perl and CGI in the late '90s.

Scheduled Pinned Locked Moved Technical Discussion
fedifyfedidevfediverseactivitypub
1 Cross-posts 11 Posts 6 Posters 0 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • hongminhee@hollo.socialH This user is from outside of this forum
    hongminhee@hollo.socialH This user is from outside of this forum
    hongminhee@hollo.social
    wrote last edited by
    #1

    When I first started working with #ActivityPub, before #Fedify existed, it felt like writing web apps in Perl and CGI in the late '90s. Interesting, even exciting—but never comfortable. That era where your business logic and your protocol plumbing were just… the same thing:

    print "HTTP/1.1 200 OK"
    print "Content-Type: text/html"
    print
    print "Hello, world!"
    

    Decades of web development have given us layers of abstraction we now take for granted. Nobody hand-parses application/x-www-form-urlencoded query strings anymore. Nobody writes their own JSON codec, or manually constructs HTTP request/response messages. These things just aren't your problem when you're building an app.

    ActivityPub development still feels like they are your problem. What do you do when the https://www.w3.org/ns/activitystreams#actor property comes in as a string instead of an array? What about when https://www.w3.org/ns/activitystreams#object is an embedded entity rather than a URI? How exactly do you implement HTTP Signatures? And wait—what's Linked Data Signatures, and do you need that too?

    The real issue isn't that ActivityPub is complicated per se. It's that you can't get away with understanding it at a high level. You have to know it the way an implementor knows it—every edge case, every inconsistency in how different servers serialize JSON-LD, every signature scheme that exists in the wild. That's a lot to learn before you can even start thinking about your actual app. And when developers understandably cut corners on the protocol to focus on their product, it quietly becomes an interoperability problem for the whole ecosystem.

    What I want ActivityPub development to feel like: you spend a day understanding the big picture, and then you just… build your app. That was the goal when I started Fedify, and honestly, we're not fully there yet. But it's where I want to get.

    #fedidev #fediverse

    1 Reply Last reply
    1
    • ? Guest crossposted this topic to General Discussion
    • julian@activitypub.spaceJ This user is from outside of this forum
      julian@activitypub.spaceJ This user is from outside of this forum
      julian@activitypub.space
      wrote last edited by julian@activitypub.space
      #2

      @hongminhee@hollo.social I think you're completely right, and this is coming from somebody who went deep into the weeds of ActivityPub when building out his own implementation.

      Generic C2S servers offload the server side aspects to a trusted third party.

      Generic S2S frameworks (like fedify!) give you even more control.

      We need both! We need fewer idiots like me who decided to implement the entire protocol from the ground up 🤣

      Do it @hongminhee@hollo.social! DEPRECATE ALL MY HARD WORK ALREADY!!!

      1 Reply Last reply
      0
      • rick@rmendes.netR This user is from outside of this forum
        rick@rmendes.netR This user is from outside of this forum
        rick@rmendes.net
        wrote last edited by
        #3
        With Fedify & Claude code it took me just 1 few hours to develop a indiekit plugin to exist on the Fediverse with @rick@rmendes.net I spent more time on creating the AP reader to consume data from the Fediverse than anything else that's for sure! Thanks for your absolutely amazing foundational work with Fedify!
        hongminhee@hollo.socialH 1 Reply Last reply
        0
        • silverpill@mitra.socialS This user is from outside of this forum
          silverpill@mitra.socialS This user is from outside of this forum
          silverpill@mitra.social
          wrote last edited by
          #4

          @hongminhee Better developer tooling is the only correct answer to rising complexity. Getting 200 different servers to smoothly interoperate is impossible, but we can do that with 10 libraries.

          hongminhee@hollo.socialH 1 Reply Last reply
          1
          • hongminhee@hollo.socialH This user is from outside of this forum
            hongminhee@hollo.socialH This user is from outside of this forum
            hongminhee@hollo.social
            wrote last edited by
            #5

            @julian@activitypub.space Haha, most ActivityPub implementers have their own frameworks, they just haven't separated them out! It would be really great if there were full-featured ActivityPub frameworks for each of the major programming languages.

            1 Reply Last reply
            0
            • silverpill@mitra.socialS silverpill@mitra.social

              @hongminhee Better developer tooling is the only correct answer to rising complexity. Getting 200 different servers to smoothly interoperate is impossible, but we can do that with 10 libraries.

              hongminhee@hollo.socialH This user is from outside of this forum
              hongminhee@hollo.socialH This user is from outside of this forum
              hongminhee@hollo.social
              wrote last edited by
              #6

              @silverpill@mitra.social That's right. I think client-side abstraction will be necessary when ActivityPub C2S interactions become more widespread, too.

              1 Reply Last reply
              0
              • rick@rmendes.netR rick@rmendes.net
                With Fedify & Claude code it took me just 1 few hours to develop a indiekit plugin to exist on the Fediverse with @rick@rmendes.net I spent more time on creating the AP reader to consume data from the Fediverse than anything else that's for sure! Thanks for your absolutely amazing foundational work with Fedify!
                hongminhee@hollo.socialH This user is from outside of this forum
                hongminhee@hollo.socialH This user is from outside of this forum
                hongminhee@hollo.social
                wrote last edited by
                #7

                @rick@rmendes.net Great work, Ricardo! And thank you for using Fedify!

                1 Reply Last reply
                0
                • quaff@thecanadian.socialQ This user is from outside of this forum
                  quaff@thecanadian.socialQ This user is from outside of this forum
                  quaff@thecanadian.social
                  wrote last edited by
                  #8

                  @hongminhee Is there no official reference SDK for AP?

                  liaizon@social.wake.stL 1 Reply Last reply
                  0
                  • quaff@thecanadian.socialQ quaff@thecanadian.social

                    @hongminhee Is there no official reference SDK for AP?

                    liaizon@social.wake.stL This user is from outside of this forum
                    liaizon@social.wake.stL This user is from outside of this forum
                    liaizon@social.wake.st
                    wrote last edited by
                    #9

                    @quaff @hongminhee nope, theres not an official anything...

                    quaff@thecanadian.socialQ 1 Reply Last reply
                    0
                    • liaizon@social.wake.stL liaizon@social.wake.st

                      @quaff @hongminhee nope, theres not an official anything...

                      quaff@thecanadian.socialQ This user is from outside of this forum
                      quaff@thecanadian.socialQ This user is from outside of this forum
                      quaff@thecanadian.social
                      wrote last edited by
                      #10

                      @liaizon @hongminhee speaks to the nature of truly open protocols. but would be cool if there was one that devs could rally behind because it's got the best coverage of the spec.

                      liaizon@social.wake.stL 1 Reply Last reply
                      0
                      • quaff@thecanadian.socialQ quaff@thecanadian.social

                        @liaizon @hongminhee speaks to the nature of truly open protocols. but would be cool if there was one that devs could rally behind because it's got the best coverage of the spec.

                        liaizon@social.wake.stL This user is from outside of this forum
                        liaizon@social.wake.stL This user is from outside of this forum
                        liaizon@social.wake.st
                        wrote last edited by
                        #11

                        @quaff @hongminhee thats the main issue, "the spec" doesn't have the coverage to have an implementation to cover it all. there are a ton of things that are under defined in it or that you need to point to some other spec that points to some other spec etc. thats sorta at the heart of this whole meta conversation thats been taking place recently

                        1 Reply Last reply
                        0

                        Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                        Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                        With your input, this post could be even better 💗

                        Register Login
                        Reply
                        • Reply as topic
                        Log in to reply
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes


                        • Login

                        • Don't have an account? Register

                        • Login or register to search.
                        Powered by NodeBB Contributors
                        • First post
                          Last post
                        0
                        • Categories
                        • Recent
                        • Tags
                        • Popular
                        • World
                        • Users
                        • Groups