CC0 licensed POI images on atproto

Hoi,

i’ve worked on a few map based apps over the last years and while map data is freely available (openstreetmap), photos of POIs (and additional POI info) are usually locked behind a pretty expensive api. i’d like to change that and build a website that allows people to upload CC0 licensed POI photos using atproto (with additional POI info maybe coming later).

i’ve been working on a prototyp, but i’m new to atproto and not sure what exactly my lexicon should look like, i’ve read the posts here regarding geo locations and found the geo.json and the fsq.json lexicons.

also looked into beaconbits which is really close to what i want (main things missing being the automatic permissive license and it being a bit too hard to upload lots of images imo) but i cloudnt find their lexicon and they seem to do images only by linking to a bsky post which i dont want to do (as otherwise if you upload lots of images you spam your bsky feed).

like someone mentioned in one of their posts one way is just to start doing something and then look how it goes, which i like, but still wanted to get some initial feedback on what i figured out so far and if that all makes sense.

here is my rough lexicon so far:

{
    "lexicon": 0,
    "id": "zz.yy.xx",
    "description": "Geo pics",
    "defs": {
        "main": {
            "type": "object",
            "required": [
                "images",
                "location",
                "mainPoiUri",
                "license"
            ],
            "properties": {
                "images": {
                    "type": "array",
                    "items": {
                        "type": "ref",
                        "ref": "#image"
                    }
                },
                "location": {
                    "type": "ref",
                    "ref": "community.lexicon.location.geo"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the location."
                },
                "mainPoiUri": {
                    "type": "ref",
                    "ref": "#poi",
                    "description": "main uri to map provider"
                },
                "otherPoiUris": {
                    "type": "array",
                    "items": {
                        "type": "ref",
                        "ref": "#poi"
                    }
                },
                "license": {
                    "type": "string",
                    "description": "image license default to CC0"
                },
                "attribution": {
                    "type": "string",
                    "description": "what to put into attribution"
                }
            }
        },
        "image": {
            "type": "object",
            "required": [
                "image"
            ],
            "properties": {
                "image": {
                    "type": "blob",
                    "accept": [
                        "image/*"
                    ],
                    "maxSize": 1000000
                },
                "aspectRatio": {
                    "type": "ref",
                    "ref": "app.bsky.embed.defs#aspectRatio"
                },
                "alt": {
                    "type": "string",
                    "description": "Alt text description of the image, for accessibility."
                }
            }
        },
        "poi": {
            "type": "object",
            "required": [
                "uri"
            ],
            "properties": {
                "uri": {
                    "type": "string",
                    "description": "uri to osm or other map data provider, in the format of {provider}://{type}//{id} e.g. osm://node/XYZ"
                }
            }
        }
    }
}

questions:

- regarding the license, is it enough if i just mention on my app that all uploaded photos are CC0 and that people should only upload photos they own the rights too? i’ve added a license field so people could in theory also upload images with a different license later on.

- is setting a main poi uri (+ and optional list of other uris) like i did a good idea?

tips and feedback welcome!

2 Likes

My only suggestion is to make that location attribute a union to allow it to flexible support future location types and remote record references.

{
  "type": "array",
  "items": {
    "refs": [
      "community.lexicon.location.geo"
    ],
    "type": "union"
  }
}

Even if you aren’t immediately supporting other lexicon community location types like h3 and fsq, doing this would open the door to supporting them in the future.


As for the licensing, I’m not a lawyer and you shouldn’t take any legal advice from people on an internet forum.

That said, your terms of service should include a note that users should only interact with content that they have the right and authority to do so. Images that users upload is going to their own PDS, so as long as your app is not trying to claim any ownership of that content, I’m not really sure there’s anything you need to do.

Any other disclosures or notices would be superficial for marketing and promotional purposes.

3 Likes

Thanks! I also found your tool! https://lexicon.garden/ Very nice just what I was looking for!

1 Like

I’m very very new here. About the attribution, could it be the user’s DID, i.e., {“did”:“did:plc:nw5n44qarl4gpoks2bw5doqr”}? If so, how would that be handled in the lexicon?

first alpha alpha version is online now: atlas.atmo.pics (@ngerakines.me I implemented your suggestion, thanks again)

@alphabitali.bsky.social did is actually already kinda part of each record (/you have to know the did to get a record), attribution I was thinking more for text based extra information (e.g. your name), your atproto profile is already “connected” to the record.

See 100 most recently uploaded images here: atlas.atmo.pics/map/recent

1 Like