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. NodeBB <> Lemmy federation issue (re: nullable image/icon)

NodeBB <> Lemmy federation issue (re: nullable image/icon)

Scheduled Pinned Locked Moved Technical Discussion
lemmynodebbactivitypub
26 Posts 4 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.
  • 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
    #1

    nutomic@lemmy.ml reported a federation issue with a NodeBB instance and we debugged it. It turns out Lemmy is unable to handle actors who have image or icon set to null.

    Lemmy is taking steps to handle this (source, source), and NodeBB will update its actor logic to omit properties without an avatar or cover photo set.

    evan@cosocial.caE julian@activitypub.spaceJ 2 Replies Last reply
    0
    • julian@activitypub.spaceJ julian@activitypub.space

      nutomic@lemmy.ml reported a federation issue with a NodeBB instance and we debugged it. It turns out Lemmy is unable to handle actors who have image or icon set to null.

      Lemmy is taking steps to handle this (source, source), and NodeBB will update its actor logic to omit properties without an avatar or cover photo set.

      evan@cosocial.caE This user is from outside of this forum
      evan@cosocial.caE This user is from outside of this forum
      evan@cosocial.ca
      wrote last edited by
      #2

      @julian @nutomic null values are bad in JSON-LD. We really have to avoid them. There are some bad references to `null` in the AP spec; they're likely to get removed sometime soon.

      julian@activitypub.spaceJ 1 Reply Last reply
      0
      • evan@cosocial.caE evan@cosocial.ca

        @julian @nutomic null values are bad in JSON-LD. We really have to avoid them. There are some bad references to `null` in the AP spec; they're likely to get removed sometime soon.

        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
        #3

        evan@cosocial.ca I had no idea that was the case. That is very good to know and having it called out in some sort of best practices doc (an existing w3c explainer?) would be helpful 😄

        trwnh@mastodon.socialT 1 Reply Last reply
        0
        • julian@activitypub.spaceJ julian@activitypub.space

          nutomic@lemmy.ml reported a federation issue with a NodeBB instance and we debugged it. It turns out Lemmy is unable to handle actors who have image or icon set to null.

          Lemmy is taking steps to handle this (source, source), and NodeBB will update its actor logic to omit properties without an avatar or cover photo set.

          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
          #4

          NodeBB v4.6.1 contains the fix so that if an avatar and cover photo are not set, they are not included in the ActivityPub actor data.

          liaizon@social.wake.stL 1 Reply Last reply
          0
          • julian@activitypub.spaceJ julian@activitypub.space

            evan@cosocial.ca I had no idea that was the case. That is very good to know and having it called out in some sort of best practices doc (an existing w3c explainer?) would be helpful 😄

            trwnh@mastodon.socialT This user is from outside of this forum
            trwnh@mastodon.socialT This user is from outside of this forum
            trwnh@mastodon.social
            wrote last edited by
            #5

            @julian @evan aside from potentially causing null pointer exceptions when you try to dereference null, using null is equivalent to just leaving out the statement in the first place. there's no reason to use null. the only time you'd need null values is if your schema required a certain key to be present but allowed the value to be nullable, which is generally a bad idea compared to just making the key optional. tony hoare, the inventor of null, called it their "billion-dollar mistake".

            julian@activitypub.spaceJ 1 Reply Last reply
            0
            • trwnh@mastodon.socialT trwnh@mastodon.social

              @julian @evan aside from potentially causing null pointer exceptions when you try to dereference null, using null is equivalent to just leaving out the statement in the first place. there's no reason to use null. the only time you'd need null values is if your schema required a certain key to be present but allowed the value to be nullable, which is generally a bad idea compared to just making the key optional. tony hoare, the inventor of null, called it their "billion-dollar mistake".

              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
              #6

              trwnh@mastodon.social said in NodeBB <> Lemmy federation issue (re: nullable image/icon):
              > using null is equivalent to just leaving out the statement in the first place.

              That's not true, there are specific scenarios where having an explicit "no value" is significant vs "missing value"...

              evan@cosocial.caE trwnh@mastodon.socialT 2 Replies Last reply
              0
              • julian@activitypub.spaceJ julian@activitypub.space

                trwnh@mastodon.social said in NodeBB <> Lemmy federation issue (re: nullable image/icon):
                > using null is equivalent to just leaving out the statement in the first place.

                That's not true, there are specific scenarios where having an explicit "no value" is significant vs "missing value"...

                evan@cosocial.caE This user is from outside of this forum
                evan@cosocial.caE This user is from outside of this forum
                evan@cosocial.ca
                wrote last edited by
                #7

                @julian @trwnh there are specifically processing problems with JSON-LD when an `id` property is `null`. I agree, we need better guidance. I'm adding an issue for it.

                https://github.com/w3c/activitystreams/issues/656

                1 Reply Last reply
                0
                • julian@activitypub.spaceJ julian@activitypub.space

                  trwnh@mastodon.social said in NodeBB <> Lemmy federation issue (re: nullable image/icon):
                  > using null is equivalent to just leaving out the statement in the first place.

                  That's not true, there are specific scenarios where having an explicit "no value" is significant vs "missing value"...

                  trwnh@mastodon.socialT This user is from outside of this forum
                  trwnh@mastodon.socialT This user is from outside of this forum
                  trwnh@mastodon.social
                  wrote last edited by
                  #8

                  @julian if you give me any specific examples of when you would want to use null, i can recommend better alternatives. generally, it's always possible that there is missing information.

                  julian@activitypub.spaceJ 2 Replies Last reply
                  0
                  • julian@activitypub.spaceJ julian@activitypub.space

                    NodeBB v4.6.1 contains the fix so that if an avatar and cover photo are not set, they are not included in the ActivityPub actor data.

                    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

                    @julian love to see the reports of cross project colab!

                    1 Reply Last reply
                    0
                    • trwnh@mastodon.socialT trwnh@mastodon.social

                      @julian if you give me any specific examples of when you would want to use null, i can recommend better alternatives. generally, it's always possible that there is missing information.

                      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
                      #10

                      trwnh@mastodon.social found one.

                      NodeBB uses audience to denote which audience an object (or context) belongs to.

                      Posts and Topics in NodeBB can belong to no context at all. null would be the way to communicate this, since omission might mean one isn't specified.

                      Likewise, a Move(Context) where a topic is moved out of a category but not into another. You probably shouldnt omit target there.

                      1 Reply Last reply
                      0
                      • trwnh@mastodon.socialT This user is from outside of this forum
                        trwnh@mastodon.socialT This user is from outside of this forum
                        trwnh@mastodon.social
                        wrote last edited by trwnh@mastodon.social
                        #11

                        @julian no, null is the same as nothing. what you want is more like [] (the empty set). in the case where you Move something without a target, you should be sending an Update (or Remove) instead. just like a Move without an origin would instead be an Add.

                        trwnh@mastodon.socialT 1 Reply Last reply
                        0
                        • trwnh@mastodon.socialT trwnh@mastodon.social

                          @julian no, null is the same as nothing. what you want is more like [] (the empty set). in the case where you Move something without a target, you should be sending an Update (or Remove) instead. just like a Move without an origin would instead be an Add.

                          trwnh@mastodon.socialT This user is from outside of this forum
                          trwnh@mastodon.socialT This user is from outside of this forum
                          trwnh@mastodon.social
                          wrote last edited by
                          #12

                          @julian but more generally my question is, what practical application would you need to make use of an empty set []? like, a consumer encountering a value should do A, encountering a null or missing property should do B, encountering an empty set should do C... what is the difference between B and C?

                          julian@activitypub.spaceJ 1 Reply Last reply
                          0
                          • trwnh@mastodon.socialT trwnh@mastodon.social

                            @julian but more generally my question is, what practical application would you need to make use of an empty set []? like, a consumer encountering a value should do A, encountering a null or missing property should do B, encountering an empty set should do C... what is the difference between B and C?

                            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
                            #13

                            trwnh@mastodon.social receiving a Move(Context) where target is null would tell NodeBB to move the topic to -1, uncategorized.

                            For those not supporting the catch-all bucket, deleting the context is ok too.

                            1 Reply Last reply
                            0
                            • trwnh@mastodon.socialT This user is from outside of this forum
                              trwnh@mastodon.socialT This user is from outside of this forum
                              trwnh@mastodon.social
                              wrote last edited by
                              #14

                              @julian so this is still in effect a Remove or Update, not a Move. if you wanted it to be a Move, you would instead have an "uncategorized" category whose id is /categories/-1 or something like that.

                              1 Reply Last reply
                              0
                              • trwnh@mastodon.socialT trwnh@mastodon.social

                                @julian if you give me any specific examples of when you would want to use null, i can recommend better alternatives. generally, it's always possible that there is missing information.

                                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
                                #15

                                trwnh@mastodon.social oh, another one.

                                Glitch-soc apparently lets you hide follower counts, and federates a -1. That works but null would be a more explicit statement that the follower collection is hidden/not accessible.

                                1 Reply Last reply
                                0
                                • trwnh@mastodon.socialT This user is from outside of this forum
                                  trwnh@mastodon.socialT This user is from outside of this forum
                                  trwnh@mastodon.social
                                  wrote last edited by
                                  #16

                                  @julian leaving out the totalItems statement entirely would do the same thing. the problem is when you ignore the (lack of) information presented and synthesize your own.

                                  you could also define a vocab term for "hidden" or "unavailable", although this isn't much better than leaving it out in the first place

                                  julian@activitypub.spaceJ 1 Reply Last reply
                                  0
                                  • trwnh@mastodon.socialT trwnh@mastodon.social

                                    @julian leaving out the totalItems statement entirely would do the same thing. the problem is when you ignore the (lack of) information presented and synthesize your own.

                                    you could also define a vocab term for "hidden" or "unavailable", although this isn't much better than leaving it out in the first place

                                    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
                                    #17

                                    trwnh@mastodon.social leaving out totalitems is absolutely not the same as explicitly declaring a null value. You don't know whether the implementation just didn't send totalItems or whether it was omitted on purpose.

                                    1 Reply Last reply
                                    0
                                    • trwnh@mastodon.socialT This user is from outside of this forum
                                      trwnh@mastodon.socialT This user is from outside of this forum
                                      trwnh@mastodon.social
                                      wrote last edited by
                                      #18

                                      @julian what's the difference between "not sending" vs "omitting"? those are synonyms

                                      julian@activitypub.spaceJ 1 Reply Last reply
                                      0
                                      • trwnh@mastodon.socialT trwnh@mastodon.social

                                        @julian what's the difference between "not sending" vs "omitting"? those are synonyms

                                        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
                                        #19

                                        trwnh@mastodon.social not sent due to implementation differences, rather.

                                        trwnh@mastodon.socialT 1 Reply Last reply
                                        0
                                        • julian@activitypub.spaceJ julian@activitypub.space

                                          trwnh@mastodon.social not sent due to implementation differences, rather.

                                          trwnh@mastodon.socialT This user is from outside of this forum
                                          trwnh@mastodon.socialT This user is from outside of this forum
                                          trwnh@mastodon.social
                                          wrote last edited by
                                          #20

                                          @julian there's no difference on the consuming side (and in many programming languages you can check for truthiness with something like `if x.get("totalItems")` which defaults to returning null if missing anyway)

                                          functionally, you either have the information, or you don't

                                          julian@activitypub.spaceJ 1 Reply Last reply
                                          0
                                          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