{
    "AllowManualLogin": true,
    "BookmarkCount": 17,
    "Bookmarks": [
        {
            "id": 34,
            "created_at": "2025-05-12T09:33:47.326625752Z",
            "updated_at": "2025-05-13T16:44:56.672658825Z",
            "deleted_at": null,
            "url": "https://lobste.rs/",
            "title": "Lobsters",
            "notes": "Lobsters is a computing-focused community centered around link aggregation and discussion, launched on July 3rd, 2012.",
            "domain": "lobste.rs",
            "favicon": "data:image/png;base64,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",
            "tags": [
                {
                    "id": 12,
                    "created_at": "2025-05-08T13:11:36.698923158Z",
                    "updated_at": "2025-05-08T13:11:36.698923158Z",
                    "deleted_at": null,
                    "text": "news",
                    "bookmarks": null
                },
                {
                    "id": 13,
                    "created_at": "2025-05-08T13:11:36.707366009Z",
                    "updated_at": "2025-05-08T13:11:36.707366009Z",
                    "deleted_at": null,
                    "text": "IT",
                    "bookmarks": null
                },
                {
                    "id": 25,
                    "created_at": "2025-05-11T08:31:09.13689209Z",
                    "updated_at": "2025-05-11T08:31:09.13689209Z",
                    "deleted_at": null,
                    "text": "tech",
                    "bookmarks": null
                },
                {
                    "id": 27,
                    "created_at": "2025-05-13T16:44:56.666544072Z",
                    "updated_at": "2025-05-13T16:44:56.666544072Z",
                    "deleted_at": null,
                    "text": "feed",
                    "bookmarks": null
                }
            ],
            "snapshots": [
                {
                    "id": 34,
                    "created_at": "2025-05-12T09:33:47.343589958Z",
                    "updated_at": "2025-05-12T09:33:47.462654013Z",
                    "deleted_at": null,
                    "title": "",
                    "key": "7deed9918e6fb6554e048ee8acf7284e1d887a1f16f9f46d999c1c09be6b57a6",
                    "text": "Active Recent Comments Search Login|||39|||Migrating to Codeberg vcs guix.gnu.org|||via FedericoSchonborn 7 hours ago | caches | 12 comments|||19|||Windows Todo application built with pure C and the Win32 API c windows github.com/efeckc17|||via runxiyu 8 hours ago | caches | 9 comments|||30|||Plain Vanilla Web web plainvanillaweb.com|||via elorm 13 hours ago | caches | 5 comments|||80|||XKCD's \"Is It Worth the Time?\" Considered Harmful programming will-keleher.com|||via laktak 26 hours ago | caches | 26 comments|||19|||Impressions on the new 13 inch Framework laptop hardware linux marius.federated.id|||authored by mariusor 16 hours ago | caches | 5 comments|||16|||Build iOS apps on Linux and Windows (WSL) ios linux forums.swift.org|||via downrightnifty 10 hours ago | caches | 3 comments|||8|||Stop Saying \"Responsible Disclosure\" practices security da.vidbuchanan.co.uk|||via freddyb 2 hours ago | caches | no comments|||21|||Flattening Rust's Learning Curve rust corrode.dev|||via stip 13 hours ago | caches | 3 comments|||63|||Ian Lance Taylor of the Go team leaves Google go person airs.com|||via carlana 30 hours ago | caches | 22 comments|||46|||One-click RCE in ASUS’s preinstalled driver software security mrbruh.com|||via jmillikin 22 hours ago | caches | 5 comments|||12|||Flakes Have Failed nix rant kilo.bytesize.xyz|||via austreelis 3 hours ago | caches | 17 comments|||159|||I Want to Love Linux. It Doesn’t Love Me Back a11y linux fireborn.mataroa.blog|||via kowale 41 hours ago | caches | 52 comments|||7|||How I ruined my vacation by reverse engineering WSC reversing security windows blog.es3n1n.eu|||via videah 6 hours ago | caches | no comments|||5|||Communicating Chorrectly with a Choreography pdf distributed programming decomposition.al|||via brokebit 6 hours ago | caches | no comments|||7|||Software License Management with Polar.sh programming skatkov.com|||authored by skatkov 16 hours ago | caches | no comments|||9|||How Cursor Indexes Codebases Fast editors merkle-trees vibecoding read.engineerscodex.com|||via Mordo 19 hours ago | caches | 5 comments|||3|||proposal: net/http: add CrossOriginForgeryHandler go security github.com/golang|||via trousers 11 hours ago | caches | 4 comments|||8|||The Amoeba Microkernel pdf osdev citeseerx.ist.psu.edu|||via calvin 15 hours ago | caches | no comments|||1|||Patela: A basement full of amnesic servers networking security osservatorionessuno.org|||via mjturner 58 minutes ago | caches | no comments|||20|||Mipmap selection in too much detail graphics pema.dev|||via asb 27 hours ago | caches | 5 comments|||9|||The caching behind Elm's Html.Lazy elm jfmengels.net|||authored by jfmengels 24 hours ago | caches | no comments|||16|||Dotless Domains (2021) networking lab.avl.la|||via runxiyu 29 hours ago | caches | 6 comments|||58|||Changelog Slack is dead. Long live Zulip culture changelog.com|||authored by jerodsanto 43 hours ago | caches | 49 comments|||7|||A review of documentation in the Rust ecosystem rust harudagondi.space|||via jmillikin 18 hours ago | caches | no comments|||19|||Sierpiński triangle? In my bitwise AND? c math lcamtuf.substack.com|||via meithecatte 28 hours ago | caches | no comments|||Page 2 \u003e\u003e|||About Tags Filter Moderation Log",
                    "bookmark_id": 34,
                    "bookmark": {
                        "id": 0,
                        "created_at": "0001-01-01T00:00:00Z",
                        "updated_at": "0001-01-01T00:00:00Z",
                        "deleted_at": null,
                        "url": "",
                        "title": "",
                        "notes": "",
                        "domain": "",
                        "favicon": "",
                        "tags": null,
                        "snapshots": null,
                        "collection": null,
                        "public": false,
                        "unread": false,
                        "user_id": 0
                    },
                    "size": 42038,
                    "resources": null
                }
            ],
            "collection": null,
            "public": true,
            "unread": false,
            "user_id": 1
        },
        {
            "id": 7,
            "created_at": "2025-05-08T08:37:57.738166235Z",
            "updated_at": "2025-05-13T16:44:03.009147397Z",
            "deleted_at": null,
            "url": "https://nlnet.nl/",
            "title": "NLnet; Welcome to NLnet Foundation",
            "notes": "We support organisations and people who contribute to an open internet for all. We fund projects that help fix the internet through open hardware, open software, open standards, open science and open data. After its historical contribution to the early internet in Europe in the 1980's, NLnet has been financially supporting the open internet since 1997.\r\n\r\n",
            "domain": "nlnet.nl",
            "favicon": "data:image/vnd.microsoft.icon;base64,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",
            "tags": [
                {
                    "id": 5,
                    "created_at": "2025-04-02T14:13:58.496800641Z",
                    "updated_at": "2025-04-02T14:13:58.496800641Z",
                    "deleted_at": null,
                    "text": "free software",
                    "bookmarks": null
                },
                {
                    "id": 26,
                    "created_at": "2025-05-13T16:44:02.994741399Z",
                    "updated_at": "2025-05-13T16:44:02.994741399Z",
                    "deleted_at": null,
                    "text": "foundation",
                    "bookmarks": null
                }
            ],
            "snapshots": [
                {
                    "id": 7,
                    "created_at": "2025-05-08T08:37:57.753709426Z",
                    "updated_at": "2025-05-08T08:37:59.322536475Z",
                    "deleted_at": null,
                    "title": "",
                    "key": "89cf8162324cee435022b8a4d38592cd32d1e178463c34e74d4a5ddf868cc961",
                    "text": "Send in your ideas. Deadline June 1, 2025|||Apply for funding|||Projects we support|||News \u0026 events|||Support NLnet|||Welcome to NLnet Foundation|||We support organisations and people who contribute to an open internet for all. We fund projects that help fix the internet through open hardware, open software, open standards, open science and open data. After its historical contribution to the early internet in Europe in the 1980's, NLnet has been financially supporting the open internet since 1997.|||Projects we support|||NLnet has contributed funding to many important and very visible projects around fundamental standards from securing the core routing protocols and the domain name system of the internet to safer email, vendor-independent videoconferencing, more reliable wireless networks and private instant messaging - all based on open standards and verifiable open source software and/or hardware. It spawned the world-renowned NLnet Labs, and supported great open source projects like Jitsi, Peertube, WireGuard, NoScript, Tor Hidden Services, GPLv3, GNUnet, and CryptPad. And many more ....|||Active funds|||The goal of the NGI Zero Commons Fund is to reclaim the public nature of the internet. It is the widest in scope of the active funds and supports projects that help to deliver, mature and scale new and existing internet commons across the whole technology spectrum.|||Apply for funding|||NGI TALER is a pilot programme with the very concrete objective to roll out a new, best-in-class electronic payment system. It builds on the strong foundations of GNU Taler — the privacy-preserving digital payment system developed by the GNU community and Taler Systems SA.|||Apply for funding|||NGI Mobifree is a pilot programme specifically aimed at creating more ethical and human mobile software involving a number of Android-based open source efforts. Let's get beyond the status quo and create a virtuous cycle of innovation within and on top of the foundation of Mobifree.|||Apply for funding|||NGI Fediversity is a pilot programme focussing on bringing easy-to-use, hosted cloud services with service portability and personal freedom at their core to everyone. It aims to provide everyone with high-quality, secure IT systems in a way that runs everywhere and scales effortlessly.|||Apply for funding|||Practical support In addition we run the NGI Zero Review programme, which supports projects within the larger Next Generation Internet initiative to improve their quality and inclusiveness — for instance by hardening security and privacy, improving accessibility, tackling open source licensing compliance issues and through standardisation. \u003e\u003e more...|||Search|||Currently open for proposals:|||NGI0 Commons Fund|||NGI TALER|||NGI Mobifree|||NGI Fediversity|||Job openings NGI Zero is looking for Regional Representatives.|||Listen to our podcast Conversations with people building the Next Generation Internet|||Events|||2025-05-31 - Hope To See You At T-DOSE|||2025-02-01 - Let's meet at FOSDEM 2025|||2024-12-27 - 38C3 Here We Come!|||Upcoming webinars \u0026 recordings|||Event archive|||News|||42 Free and Open Source Projects Receive Funding to Reclaim the Public Nature of the Internet 2025-04-22|||Eleven new projects for NGI Pilots 2025-04-21|||Apply for funding before June 1st 2025 2025-04-01|||56 Projects Receive Grants for Improving Core Technological Building Blocks 2025-03-21|||Apply for funding before April 1st 2025 2025-02-01|||More news|||Want to help?Help us by protecting open source and its users with 5 minutes of your time.|||Donate todayYour donation can help grow the future!|||NLnet|||Foundation|||People|||Press|||In the media|||Contact|||Privacy statement|||News \u0026 events|||News|||Events|||Webinars|||NGI Zero Tour Schedule|||Speaker bureau|||Connect with us|||Fediverse: NLnet|||Fediverse: NGI Zero|||Our podcast|||Our webinars|||RSS feed|||Site search|||Funding|||Open calls|||Theme funds|||NGI Zero|||Support services|||Projects|||All projects|||Currently running|||Thematic index|||Stories|||Newsletters|||NLnet newsletter|||NGI Zero newsletter (subscribe)|||NGI Zero newsletter (RSS)|||Support NLnet|||Financial contribution|||Join the Open Invention Network",
                    "bookmark_id": 7,
                    "bookmark": {
                        "id": 0,
                        "created_at": "0001-01-01T00:00:00Z",
                        "updated_at": "0001-01-01T00:00:00Z",
                        "deleted_at": null,
                        "url": "",
                        "title": "",
                        "notes": "",
                        "domain": "",
                        "favicon": "",
                        "tags": null,
                        "snapshots": null,
                        "collection": null,
                        "public": false,
                        "unread": false,
                        "user_id": 0
                    },
                    "size": 3164482,
                    "resources": null
                }
            ],
            "collection": null,
            "public": true,
            "unread": false,
            "user_id": 1
        },
        {
            "id": 18,
            "created_at": "2025-05-08T20:22:54.662592876Z",
            "updated_at": "2025-05-08T20:22:54.662592876Z",
            "deleted_at": null,
            "url": "https://meta.wikimedia.org/wiki/Mastodon",
            "title": "Mastodon - Meta",
            "notes": "Mastodon is a microblogging application that's part of the Fediverse. ",
            "domain": "meta.wikimedia.org",
            "favicon": "data:image/vnd.microsoft.icon;base64,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",
            "tags": [
                {
                    "id": 1,
                    "created_at": "2025-04-02T14:11:26.52753391Z",
                    "updated_at": "2025-04-02T14:11:26.52753391Z",
                    "deleted_at": null,
                    "text": "wikipedia",
                    "bookmarks": null
                },
                {
                    "id": 23,
                    "created_at": "2025-05-08T20:22:54.655430057Z",
                    "updated_at": "2025-05-08T20:22:54.655430057Z",
                    "deleted_at": null,
                    "text": "mastodon",
                    "bookmarks": null
                }
            ],
            "snapshots": [
                {
                    "id": 18,
                    "created_at": "2025-05-08T20:22:54.68529015Z",
                    "updated_at": "2025-05-08T20:22:55.192431097Z",
                    "deleted_at": null,
                    "title": "",
                    "key": "2d0eceb40925e7d1b157e000483e3cb9a42172aa3aa95cb732065f47e229eb14",
                    "text": "Search|||English|||Donate|||Create account|||Log in|||Contents hide|||Beginning|||Instances|||Accounts|||Tools|||Organizations|||Mastodon|||54 languages|||Tools|||Appearance hide|||Text|||Small|||Standard|||Large|||Width|||Standard|||Wide|||This external system is not subject to the WMF Privacy Policy.|||Mastodon is a microblogging application that's part of the Fediverse. It is free software and uses open standards to create a social media ecosystem that supports users rather than exploiting them as a product. Its servers are decentralized and run by volunteers or corporations, with moderation and user registration being decided by the server admin. Learn more on the Mastodon site.|||Instancesedit|||social.wikimedia.de, operated by Wikimedia Deutschland, only WMDE staff and board members are allowed accounts (more details).|||social.wikimedia.es, operated by Wikimedia España.|||wikimedia.social (announcement), operated by the Wikimedia Foundation, only WMF staff are allowed accounts.|||Wikis World, a Mastodon server for wiki enthusiasts, operated by volunteers|||wiki.style, a wiki-themed Mastodon server, operated by volunteers|||Accountsedit|||Microblogging handles lists Mastodon handles for some Wikimedia affiliates, organizations and projects. Some accounts are largely managed on-wiki, including:|||@Wikipedia@wikis.world|||@MediaWiki@wikis.world|||Furthermore, Wikidata has a property for Mastodon address that can be added to items on the platform. There are some regularly updated listeria lists of accounts such as d:Wikidata:List of free software accounts on Mastodon as well as a list of all items with Mastodon accounts (so far not populated due to a listeria bug but the WDQS query can be used).|||Toolsedit|||The fedi-share tool can be used to create \"share this page\" buttons/links for Mastodon users.|||Organizationsedit|||To get an inventory of Wikimedia Organizations using Mastodon, visit the page: FLOSS-Exchange.|||Category:|||Mastodon|||This page was last edited on 21 March 2025, at 13:29.|||Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. See Terms of Use for details.",
                    "bookmark_id": 18,
                    "bookmark": {
                        "id": 0,
                        "created_at": "0001-01-01T00:00:00Z",
                        "updated_at": "0001-01-01T00:00:00Z",
                        "deleted_at": null,
                        "url": "",
                        "title": "",
                        "notes": "",
                        "domain": "",
                        "favicon": "",
                        "tags": null,
                        "snapshots": null,
                        "collection": null,
                        "public": false,
                        "unread": false,
                        "user_id": 0
                    },
                    "size": 135957,
                    "resources": null
                }
            ],
            "collection": null,
            "public": true,
            "unread": false,
            "user_id": 1
        },
        {
            "id": 17,
            "created_at": "2025-05-08T15:16:46.56575049Z",
            "updated_at": "2025-05-08T15:16:46.56575049Z",
            "deleted_at": null,
            "url": "https://www.json.org/json-en.html",
            "title": "JSON",
            "notes": "JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming Language Standard ECMA-262 3rd Edition - December 1999. JSON is a text format that is completely language independent but uses conventions that are familiar to programmers of the C-family of languages, including C, C++, C#, Java, JavaScript, Perl, Python, and many others. These properties make JSON an ideal data-interchange language.\r\n\r\n",
            "domain": "www.json.org",
            "favicon": "data:image/png;base64,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",
            "tags": [
                {
                    "id": 19,
                    "created_at": "2025-05-08T14:33:03.54179813Z",
                    "updated_at": "2025-05-08T14:33:03.54179813Z",
                    "deleted_at": null,
                    "text": "documentation",
                    "bookmarks": null
                },
                {
                    "id": 22,
                    "created_at": "2025-05-08T15:16:46.554420848Z",
                    "updated_at": "2025-05-08T15:16:46.554420848Z",
                    "deleted_at": null,
                    "text": "json",
                    "bookmarks": null
                }
            ],
            "snapshots": [
                {
                    "id": 17,
                    "created_at": "2025-05-08T15:16:46.578009555Z",
                    "updated_at": "2025-05-08T15:16:46.787524932Z",
                    "deleted_at": null,
                    "title": "",
                    "key": "0ea9071946beca2b29df88a00cd8c10a82dfe55b3ce791fce7a4156e8dc3e339",
                    "text": "Introducing JSON|||العربية Български 中文 Český Dansk Nederlands English Esperanto Français Deutsch Ελληνικά עברית Magyar Indonesia Italiano 日本 한국어 فارسی Norsk Polski Português Română Русский Српско-хрватски Slovenščina Español Svenska Türkçe Українська Tiếng Việt|||ECMA-404 The JSON Data Interchange Standard.|||JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming Language Standard ECMA-262 3rd Edition - December 1999. JSON is a text format that is completely language independent but uses conventions that are familiar to programmers of the C-family of languages, including C, C++, C#, Java, JavaScript, Perl, Python, and many others. These properties make JSON an ideal data-interchange language.|||JSON is built on two structures:|||A collection of name/value pairs. In various languages, this is realized as an object, record, struct, dictionary, hash table, keyed list, or associative array.|||An ordered list of values. In most languages, this is realized as an array, vector, list, or sequence.|||These are universal data structures. Virtually all modern programming languages support them in one form or another. It makes sense that a data format that is interchangeable with programming languages also be based on these structures.|||In JSON, they take on these forms:|||An object is an unordered set of name/value pairs. An object begins with {left brace and ends with }right brace. Each name is followed by :colon and the name/value pairs are separated by ,comma.|||An array is an ordered collection of values. An array begins with [left bracket and ends with ]right bracket. Values are separated by ,comma.|||A value can be a string in double quotes, or a number, or true or false or null, or an object or an array. These structures can be nested.|||A string is a sequence of zero or more Unicode characters, wrapped in double quotes, using backslash escapes. A character is represented as a single character string. A string is very much like a C or Java string.|||A number is very much like a C or Java number, except that the octal and hexadecimal formats are not used.|||Whitespace can be inserted between any pair of tokens. Excepting a few encoding details, that completely describes the language.|||json element|||value object array string number \"true\" \"false\" \"null\"|||object '{' ws '}' '{' members '}'|||members member member ',' members|||member ws string ws ':' element|||array '[' ws ']' '[' elements ']'|||elements element element ',' elements|||element ws value ws|||string '\"' characters '\"'|||characters \"\" character characters|||character '0020' . '10FFFF' - '\"' - '\\' '\\' escape|||escape '\"' '\\' '/' 'b' 'f' 'n' 'r' 't' 'u' hex hex hex hex|||hex digit 'A' . 'F' 'a' . 'f'|||number integer fraction exponent|||integer digit onenine digits '-' digit '-' onenine digits|||digits digit digit digits|||digit '0' onenine|||onenine '1' . '9'|||fraction \"\" '.' digits|||exponent \"\" 'E' sign digits 'e' sign digits|||sign \"\" '+' '-'|||ws \"\" '0020' ws '000A' ws '000D' ws '0009' ws|||8th|||json|||ActionScript|||ActionScript3|||Ada|||GNATCOLL.JSON|||AdvPL|||JSON-ADVPL|||APL|||⎕JSON|||ASP|||JSON for ASP|||JSON ASP utility class|||AWK|||JSON.awk|||rhawk|||BlitzMax|||bmx-rjson|||C|||mu_json|||JSON_checker|||YAJL|||LibU|||json-c|||json-parser|||jsonsl|||WJElement|||M's JSON parser|||cJSON|||Jansson|||jsmn|||parson|||ujson4c|||frozen|||microjson|||mjson|||progbase|||lwjson|||cisson|||nanoJSONc|||C++|||JSONKit|||jsonme--|||ThorsSerializer|||JsonBox|||jvar|||rapidjson|||JSON for Modern C++|||minijson|||jsoncons|||jsoncpp|||univalue|||jsovon|||ArduinoJson|||QJson|||CAJUN|||libjson|||nosjob|||JSON library for IoT|||qmjson|||JSON Support in Qt|||JsonWax for Qt|||progbase|||Qentem-Engine|||C#|||fastJSON|||JSON_checker|||Json.NET|||JSON for .NET|||Manatee Json|||FastJsonParser|||LightJson|||Liersch.Json|||Liersch.JsonSerialization|||progbase|||JSON Essentials|||Clojure|||data.json|||Cobol|||Redvers COBOL JSON Interface|||ColdFusion|||SerializeJSON|||D|||std.json|||asdf|||vibe.data.json|||Dart|||json library|||Delphi|||Delphi Web Utils|||JSON Delphi Library|||E|||JSON in TermL|||Erlang|||erl-json|||Fantom|||Json|||FileMaker|||JSON|||Fortran|||json-fortran|||YAJL-Fort|||jsonff|||Go|||package json|||Groovy|||groovy-io|||Haskell|||RJson package|||json package|||Java|||JSON-java|||esson|||JSONUtil|||jsonp|||Json-lib|||Stringtree|||SOJO|||json-taglib|||Flexjson|||Argo|||jsonij|||fastjson|||mjson|||jjson|||json-simple|||json-io|||google-gson|||FOSS Nova JSON|||Corn CONVERTER|||Apache johnzon|||Genson|||cookjson|||progbase|||jackson|||MOXy|||JavaScript|||JSON|||json2.js|||clarinet|||Oboe.js|||progbase|||LabVIEW|||flatten|||Lisp|||Common Lisp JSON|||LiveCode|||mergJSON|||LotusScript|||JSON LS|||Lua|||JSON Modules|||M|||DataBallet|||Matlab|||JSONlab|||20565|||23393|||Net.Data|||netdata-json|||Nim|||Module json|||Objective C|||NSJSONSerialization|||json-framework|||JSONKit|||yajl-objc|||TouchJSON|||OCaml|||jsonm|||PascalScript|||JsonParser|||Perl|||CPAN|||Photoshop|||JSON Photoshop Scripting|||PHP|||PHP 5.2|||PicoLisp|||picolisp-json|||Pike|||Public.Parser.JSON|||Public.Parser.JSON2|||PL/SQL|||pljson|||PureBasic|||JSON|||Puredata|||PuRestJson|||Python|||The Python Standard Library|||simplejson|||pyson|||Yajl-Py|||ultrajson|||metamagic.json|||progbase|||R|||rjson|||jsonlite|||Racket|||json-parsing|||Rebol|||json.r|||RPG|||JSON Utilities|||Rust|||Serde JSON|||json-rust|||Ruby|||yajl-ruby|||json-stream|||progbase|||Scala|||circe|||Scheme|||MZScheme|||JSON-struct|||Shell|||Jshon|||JSON.sh|||jwalk|||Squeak|||Squeak|||Tcl|||JSON|||Visual Basic|||VB-JSON|||PW.JSON|||.NET-JSON-Transformer|||progbase|||Visual FoxPro|||fwJSON|||JSON|||vfpjson|||Wing|||json-type|||Videos about JSON|||Videos about the JSON Logo|||Heresy \u0026 Heretical Open Source: A Heretic's Perspective|||Nota Message Format",
                    "bookmark_id": 17,
                    "bookmark": {
                        "id": 0,
                        "created_at": "0001-01-01T00:00:00Z",
                        "updated_at": "0001-01-01T00:00:00Z",
                        "deleted_at": null,
                        "url": "",
                        "title": "",
                        "notes": "",
                        "domain": "",
                        "favicon": "",
                        "tags": null,
                        "snapshots": null,
                        "collection": null,
                        "public": false,
                        "unread": false,
                        "user_id": 0
                    },
                    "size": 196402,
                    "resources": null
                }
            ],
            "collection": null,
            "public": true,
            "unread": false,
            "user_id": 1
        },
        {
            "id": 16,
            "created_at": "2025-05-08T14:59:12.819683535Z",
            "updated_at": "2025-05-08T14:59:12.819683535Z",
            "deleted_at": null,
            "url": "https://go-colly.org/",
            "title": "Scraping Framework for Golang",
            "notes": "Fast and Elegant Scraping Framework for Gophers\r\n",
            "domain": "go-colly.org",
            "favicon": "",
            "tags": [
                {
                    "id": 10,
                    "created_at": "2025-04-02T14:22:06.770610425Z",
                    "updated_at": "2025-04-02T14:22:06.770610425Z",
                    "deleted_at": null,
                    "text": "golang",
                    "bookmarks": null
                },
                {
                    "id": 21,
                    "created_at": "2025-05-08T14:59:12.809269216Z",
                    "updated_at": "2025-05-08T14:59:12.809269216Z",
                    "deleted_at": null,
                    "text": "scraping",
                    "bookmarks": null
                }
            ],
            "snapshots": [
                {
                    "id": 16,
                    "created_at": "2025-05-08T14:59:12.834497225Z",
                    "updated_at": "2025-05-08T14:59:13.497313424Z",
                    "deleted_at": null,
                    "title": "",
                    "key": "1375a44d1cff3f6ad438858dedb9b435c715f951b21244c2095555e008ff3ed1",
                    "text": "Colly Docs Articles Services Datasets GoDoc|||Fast and Elegant Scraping Framework for Gophers|||Colly provides a clean interface to write any kind of crawler/scraper/spider|||With Colly you can easily extract structured data from websites, which can be used for a wide range of applications, like data mining, data processing or archiving.|||Features|||Clean API|||Fast (\u003e1k request/sec on a single core)|||Manages request delays and maximum concurrency per domain|||Automatic cookie and session handling|||Sync/async/parallel scraping|||Distributed scraping|||Caching|||Automatic encoding of non-unicode responses|||Robots.txt support|||Google App Engine support|||1func main() { 2 c := colly.NewCollector() 3 4 // Find and visit all links 5 c.OnHTML(\"a\", func(e *colly.HTMLElement) { 6 e.Request.Visit(e.Attr(\"href\")) 7 }) 8 9 c.OnRequest(func(r *colly.Request) {10 fmt.Println(\"Visiting\", r.URL)11 })1213 c.Visit(\"http://go-colly.org/\")14}|||Batteries included|||Colly comes with all the tools you need for scraping. Examples|||Business ready|||Free for commercial use. License|||Open Source|||Development of Colly is community driven and public. Project|||Contact Us Documentation Services GitHub|||© 2025 Colly Team|||Page SourceSite map",
                    "bookmark_id": 16,
                    "bookmark": {
                        "id": 0,
                        "created_at": "0001-01-01T00:00:00Z",
                        "updated_at": "0001-01-01T00:00:00Z",
                        "deleted_at": null,
                        "url": "",
                        "title": "",
                        "notes": "",
                        "domain": "",
                        "favicon": "",
                        "tags": null,
                        "snapshots": null,
                        "collection": null,
                        "public": false,
                        "unread": false,
                        "user_id": 0
                    },
                    "size": 530677,
                    "resources": null
                }
            ],
            "collection": null,
            "public": true,
            "unread": false,
            "user_id": 1
        },
        {
            "id": 15,
            "created_at": "2025-05-08T14:40:41.607954783Z",
            "updated_at": "2025-05-08T14:40:41.607954783Z",
            "deleted_at": null,
            "url": "https://en.wikipedia.org/wiki/Fediverse",
            "title": "Fediverse - Wikipedia",
            "notes": "collection of social networking services that can communicate with each other (formally known as federation) using a common protocol. Users of different websites can send and receive status updates, multimedia files and other data across the network. The term Fediverse is a portmanteau of federation and universe.",
            "domain": "en.wikipedia.org",
            "favicon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAACgCAAAAACupDjxAAAE6ElEQVR4AezOAQEAAAQAIP9PMwPUgiKHExQUFBQUFBQUFBQUFBS8GRQUFBQUFBQUFBQUFBQUFBQUFBQs4szAQ5UujMN/1I+RiLEkElkiRMRHCCEilhDiYkNEliyEi3AJIQsXi2VZliAkiwhZWWGM33dvzrzONHMWbjPzAJz7+R4z5zzvmfa/m0KpWm92evejx+lkPOi1G7VSPmvndjzl7Wyx+mdp8DB9GPa7rUatXMzmPugUU3a+XG/3huPxsN9pVPJ2qkIurfTNn3/fvR89jAbdZrVgp0r/LpiDgVceLYTxzC2ClMkHBLj9d8H3fjnEw64PvsinTj7wf2wNj3Qf7yrQSdcGK/Jj2C5Aw6rcb66yB4/LW/jIzxwqNg1otNf0WLfgUZjLP3cXedEbHa93SJxpGgIKB2rMND9quJ760KHGKqVe+ea6p/hFM3yjj6EsPPn/E5wZ008Xf8nvr52ZX/DIuPThlKBYUOeIv7R4wVSdpKt3UPZUIA3PUPygzg4Asp8UtC3RjSDU25R3JB1e4O22mxM1fgfeuuyI9C4CQf6AYhlIERRzanQANEPKL4/62oIfXg8bND3CMgXuLcAKHtWDBVgfkQiyA8UmcMah+E1hIE8qcEY6jEbwDYo+L6mqlSo99mkgc2CAW+nU9QVZ8UITmAFLKF70HTsiw058hVEJSgunvMD1hmHda0wKsI/hsZpHJniylUbRDdZN8c4zPQATBthZQNaJTJCDwGEQ9yygTY6tBeRODI3giNEJflOaCRRrkrwD8JMBnCxg7SMUZNNYms+MWrkjubaAgsMAC7UeneCzuTT3asX6MB+FmmzSqAR5ayzNzhL3FYCSywArKWV0glNjadhVK6l9Iziw5WjPIxY8ZoylWUNRN8T4mJbGRCfIvrE0bELAs+Hpjxm14BrG0rxC+M+wf6195IKsG0vDKjxeDQW4Y/SCSymNealu+mZ4j0HQyUtpjFeGvBM+hquMQZATc2lmwbu/MAKwiEXwkJLSGK8MJTdsDOecWAR5J6UxP91l2Bh+YDyC71Ia81Il5GMutY9JkFVjadqmUq/laz0OwbmpNGsI9eAYXsUmeLoxlKYFAW+XI7zG2AQ5DJRGdqC8/ublGF7EKLizQkvTAKxtQ7v7CyVpTDyCbIWV5u28K1+g6FB4kcbEJSgWDf81Ir2nnHFrqx/u1CFWQZakND7poX5l6Om/I3UZr+BPKY2eYvuTpFuUu782hlcxC35lpDTade/Rf2W45xknJzfY+AT547I0VfktQa4MmYOM4WXsghv4S/MEYHZ5ZRh77z7vxC7Ihr80ZeDWufyVwf5S82/C+AWffKVZ+l7jQH//fSB9SEDQLWilcUtAJWTS5JzzGO4yAUE+an8emV9csLpQzM5BWiUieEhLaZwiUA+9dxWdkjQmXkH9MU1/Bb4omzJOZHPGL7iSx1QA2sZfGaQxsQuyBsHamNcmTEpwAaFnqpA0JglBJysSO/N9p8fEBDmCYvDNH1XWCQruVZDtAwM4Ofm8S06QbTkGxpA/JScoNcmeGMLRPjfGTVSQZQD4+c3H6SOTFZydx5lhh6aA9GfCgif7my/ynjQmOUGOv7kKbO30JnFB7lwa+Tr+364dCwAAAAAI87cOo2cRDCD/ICAgICAgICDgEyAgICAgICAgICAgICAgICBgYUeNfR+Kw20AAAAASUVORK5CYII=",
            "tags": [
                {
                    "id": 1,
                    "created_at": "2025-04-02T14:11:26.52753391Z",
                    "updated_at": "2025-04-02T14:11:26.52753391Z",
                    "deleted_at": null,
                    "text": "wikipedia",
                    "bookmarks": null
                },
                {
                    "id": 17,
                    "created_at": "2025-05-08T14:08:28.132535627Z",
                    "updated_at": "2025-05-08T14:08:28.132535627Z",
                    "deleted_at": null,
                    "text": "activitypub",
                    "bookmarks": null
                },
                {
                    "id": 20,
                    "created_at": "2025-05-08T14:40:41.59965853Z",
                    "updated_at": "2025-05-08T14:40:41.59965853Z",
                    "deleted_at": null,
                    "text": "fediverse",
                    "bookmarks": null
                }
            ],
            "snapshots": [
                {
                    "id": 15,
                    "created_at": "2025-05-08T14:40:41.640084869Z",
                    "updated_at": "2025-05-08T14:40:42.243594065Z",
                    "deleted_at": null,
                    "title": "",
                    "key": "666d3fff95206d522d727e5e5bad82c120c2122bdca713f4a83a0247420b3ac9",
                    "text": "Search|||Donate|||Create account|||Log in|||Contents hide|||(Top)|||Design|||Content moderation and user safety|||History|||Historical protocols|||ActivityPub|||Adoption|||Content management systems|||Microblogging|||News aggregators|||Alternatives|||Software|||See also|||References|||Further reading|||Fediverse|||35 languages|||Tools|||Appearance hide|||Text|||Small|||Standard|||Large|||Width|||Standard|||Wide|||Color (beta)|||Automatic|||Light|||Dark|||From Wikipedia, the free encyclopedia|||Proposed symbol for the Fediverse from 2018, the \"fedigram\". Widely used and recognised.1|||Proposed symbol for the Fediverse from 2024, an asterism (⁂).23|||The Fediverse (commonly shortened to fedi)456 is a collection of social networking services that can communicate with each other (formally known as federation) using a common protocol. Users of different websites can send and receive status updates, multimedia files and other data across the network. The term Fediverse is a portmanteau of federation and universe.7|||The majority of Fediverse platforms are based on free and open-source software, and create connections between servers using the ActivityPub protocol. Some software still supports older federation protocols as well, such as OStatus, the Diaspora protocol and Zot. Diaspora* is the only actively developed software project classified under the original definition of Fediverse that does not support ActivityPub.89|||Designedit|||While a traditional social networking service will host all its content on servers managed by the owner of the website, the decentralized structure of the Fediverse allows any individual or organization to host a social platform using their own servers (referred to as an \"instance\").|||Every instance is independent, and can set its own rules and expectations. Even so, much like how users of one email service such as Gmail can still send emails to users of another service such as Outlook, users may still view content and interact with users on any other instance in the Fediverse. A user on one Mastodon instance, for example, may still view and interact with posts made by a user on a different Mastodon instance.10|||Instances hosted by different social networking services may communicate with one another as well. A user on the microblogging platform Misskey, for example, may view and interact with posts made by users on Mastodon. Some Fediverse networks even allow users to interact with different social networking formats from the same platform. For example, a user on a social news instance running Lemmy can interact with another post from an mbin instance, a similar service, as well as microblog statuses from Mastodon.1112|||Content moderation and user safetyedit|||Decentralized social networking platforms introduce new challenges and difficulties for user trust and safety.1314 By nature of the Fediverse, operators of an instance are solely responsible for moderation of its content. As there is no form of centralized governance or moderation across the Fediverse, it is impossible for an instance to be \"removed\" from the Fediverse; it can only be defederated per an instance operator's choice, which makes that instance's content inaccessible from the operator's instance.15 Individual instances are responsible for defining their own content policies, which may then be enforced by its staff. Moderation of a Fediverse instance differs significantly from that of traditional social media platforms, as moderators are responsible not only for content posted by users of that instance (\"local users\"), but also for content posted by users of other instances (\"remote users\").14|||With toxic or abusive content being common in the Fediverse,14 as well as available moderation tools and the legal or financial impetus to moderate content lacking in comparison to those of centralized social media platforms,16 the Fediverse exhibits shortcomings in child safety.15 A 2023 study by the Stanford Internet Observatory's Cyber Policy Center found that, out of approximately 325,000 Fediverse posts analyzed over a two-day period, 112 were detected as instances of known child sexual abuse material (CSAM); 554 were detected as containing sexually explicit media alongside keywords associated with child sexual exploitation; 713 contained media alongside the top twenty CSAM-related hashtags on the Fediverse; and 1,217 contained text relating to distribution of CSAM or child grooming. The study additionally noted that, during a test run of its analysis pipeline, detection of its first instance of known CSAM occurred within approximately five minutes of runtime. All detected instances of CSAM were reported to the National Center for Missing and Exploited Children (NCMEC) for triage.15|||A 2024 paper observed that operators of Fediverse instances lack the ability to moderate content to the same standards as conventional social media, on both a logistical level and often also a technical level; however, they enjoy the same legal immunity under the United States' Section 230, \"with none of the incentives to [moderate] anyway.\" The paper provides, as an example, instances whose purpose is specifically not moderating content, including \"the second-largest Mastodon instance\", which contains sexually explicit material of children.16|||Various solutions for development of content moderation and child safety on the Fediverse have been proposed. The Stanford Internet Observatory proposes development of distributable blocklists similar to BlueSky's functionality; mechanisms for pluggable hash matching and content classification (the same technology used by PhotoDNA); moderator tools such as grayscaling and blurring for certain report categories, as well as basic user fingerprinting; support and administrative interfaces for PhotoDNA and NCMEC CyberTipLine APIs; and a system of federated attestation of media analysis.15 Legal reform has also been proposed, most notably around Section 230 of the Communications Decency Act, as well as proposed legal requirements for instance operators to engage in good-faith moderation of instance connections.16|||Historyedit|||Historical protocolsedit|||Excerpt of common protocols and platforms in the fediverse (2024)|||The concept and the functionality of the Fediverse has existed before the ActivityPub protocol and the term itself. One of the first projects that included support for a decentralized social networking service was Laconica, a microblogging platform which implemented the OpenMicroBlogging protocol for communicating between different installations of the software. The software was later renamed to StatusNet in 2009,17 before being merged into the GNU social project in 2013 along with Free Social, with the two latter servers being a fork of StatusNet.1819|||Over time, the limitations of the OpenMicroBlogging protocol became more apparent, being designed as a one-way text messaging system.20 To replace the aging protocol, OStatus was devised as an open standard for microblogging, combining various other technologies like Salmon, Atom, WebSub and ActivityStreams into a single protocol used for communicating between instances. StatusNet first implemented the OStatus protocol on March 3, 2010, with version 0.9.0, and OStatus quickly became the most popular federated protocol in usage.|||Around the same time as OStatus was gaining popularity, the diaspora* social network was formed, using its own federated protocol. To illustrate the differences between the two protocols, the terms of the Fediverse and the federation began to enter common usage, mainly after 2017. The term \"the Fediverse\" was used to describe the network formed by software using the OStatus protocol, such as GNU Social, Mastodon, and Friendica, in contrast to the competing diaspora* protocol under \"the federation\".21|||ActivityPubedit|||Main article: ActivityPub|||The various platforms of the Fediverse, as well as other federated networks, visualized as a tree|||In December 2012, the flagship StatusNet instance at the time, identi.ca, transitioned away to a new software named pump.io, with a new federation protocol to replace OStatus. The new protocol was designed to be useful for general activity streams and not just status updates, and replaced many of OStatus' external dependencies with JSON-LD and a REST API for its messaging and inbox systems, as well as making more use of ActivityStreams. While not as utilized as its OStatus predecessor, it would end up becoming influential in the development of the ActivityPub standard.|||In January 2018, the W3C presented the ActivityPub protocol as a recommended standard.22 The standard aimed to improve the interoperability between different software packages running on a wide network of servers and to succeed both the OStatus protocol and Pump.io.23 By 2019, almost all software that was using OStatus had added support for ActivityPub. While Mastodon began to remove OStatus support, other projects maintained it in their code, such as Friendica (which also maintained diaspora* support along with ActivityPub),2425 and the term Fediverse has since come to mainly refer to the ActivityPub protocol and its supporting server software.[citation needed]|||Adoptionedit|||Users have been slow to embrace the Fediverse due to poor user experience and excessive complexity.2627|||Following the acquisition of Twitter by Elon Musk in November 2022, certain major social networks, including Threads,2829 Tumblr and Flipboard, expressed interest in supporting the ActivityPub protocol, as a large number of users began to migrate to Mastodon, a server that supported the Fediverse and was also the most popular alternative to Twitter at the time. Flickr also expressed support in supporting ActivityPub. As of November 2022, no information had been released by the company after the initial tweets by the CEO, with support for ActivityPub suspected to be on hold or cancelled.3031|||In 2024, the local government of the Stary Sącz municipality in Poland launched their own PeerTube instance32 in order to de facto abolish its presence on YouTube. According to the government, they stopped using YouTube for official communications \"in order to adhere to the appropriate regulations\".33 In the same year, VIVERSE, HTC Vive's metaverse platform, implemented support for ActivityPub in their chat feature, allowing users to send direct messages to other fediverse users.34|||Content management systemsedit|||WordPress has an officially supported plugin that integrates WordPress blogs into the Fediverse, allowing for comments to be exchanged between the comment section of a blog post and a Fediverse instance's reply function. The plugin was acquired by Automattic in March 2023,35 and became available for all WordPress.com users in October of that same year.3637|||Ghost, a blogging platform and content management system, announced in April 2024 that they would be implementing Fediverse support via ActivityPub.383940 The feature had been highly requested on its forums.41 In July 2024, Ghost started federating its development newsletter for the feature.42|||Microbloggingedit|||Automattic CEO Matt Mullenweg tweeted on November 22, 2022, that Tumblr was adding support for ActivityPub interoperability, in response to a user's complaints about Mastodon's complexity.43 However, no further information was revealed for over a year, and was expected to be cancelled after a leaked reorganization that moved most of Tumblr's staff to other Automattic projects. However, following a question from a TechCrunch reporter during a questionnaire about the leaked memo, he revealed that the interoperability feature was not cancelled and that there was a small team working on studying the potential of implementing the protocol.44 The plan was once again affirmed by Automattic in January 2025, with the ActivityPub plugin for WordPress most likely being the main method used for interoperability with the fediverse.45|||The release of Threads by Meta in July 2023 had included in its press release that it planned to support interoperability with the ActivityPub protocol.4647 In December 2023, select Meta employees began to federate with ActivityPub.48 A roadmap was revealed in January 2024 that detailed the integration of ActivityPub in Threads.49|||A faction of fediverse server admins, some of whom have listed their names under a pledge named \"Fedipact\", have expressed resistance to open federation with Threads over concerns that Meta would adopt an “embrace, extend, and extinguish\" policy towards the network, or that Threads' moderation would fail to prevent the spread of abusive content targeted towards marginalized communities.505152|||In March 2024, Threads implemented a beta version of Fediverse support, allowing Threads users to view the number of Fediverse users that liked their post, and allowing Fediverse users to view posts from Threads on their own instances.535455 On April 2, the official Threads account for President Joe Biden enabled federation on its profile, making Biden the first President of the United States to have a presence on the Fediverse.56 The ability to view replies from the Fediverse within Threads was added in August.57|||News aggregatorsedit|||This section needs expansion with: Flipboard integration and Lemmy's growth during the Reddit API controversy. You can help by adding to it. (August 2024)|||In December 2023, Flipboard announced that it started federating selected profiles and magazines with the Fediverse. It had previously run its own Mastodon instance, flipboard.social, as a test of the Fediverse.58|||Alternativesedit|||While the Fediverse has traditionally been the network most commonly referred to and used as an example regarding the subject of decentralized social networks, alternatives to it and the accompanying ActivityPub have been developed and deployed. A major protocol in competition with the Fediverse is the AT Protocol, which powers the Bluesky social network and has formed its own separate network dubbed by developers as the Atmosphere,59 while smaller competitors such as Nostr and Farcaster have become popular within the cryptocurrency community.60 These protocols have used ActivityPub in comparisons to their own architecture, as these newer protocols use a different federation model based on publishing content to relays for distribution rather than ActivityPub's server-centric model.6162 Despite their differences, software exists that permit the bridging of user content between these protocols, including \"double-bridges\" that span multiple protocols for the purpose of distributing the same content.6364|||Softwareedit|||Many Fediverse platforms have applications to use them on smartphones.|||Further information: ActivityPub § Software using ActivityPub|||ActivityPub is the most widely used protocol in the Fediverse and a W3C standard. Some popular Fediverse software includes:6566|||Content management system|||Drupal (via third-party plugin)67|||WordPress (via official plugin)68|||Image sharing/video sharing|||Pixelfed, an Instagram alternative|||PeerTube, a video streaming service similar to YouTube|||Macroblogging|||Friendica, an alternative to Facebook written in PHP|||Microblogging|||Mastodon, a microblogging social network written in Ruby|||Misskey, a popular Japanese social network written in TypeScript|||Pleroma, a lightweight microblogging server written in Elixir|||Social news|||Lemmy, a Reddit alternative written in Rust|||mbin, written in PHP|||See alsoedit|||Free and open-source software portal|||Internet portal|||AT Protocol – Decentralized social networking protocol|||Comparison of software and protocols for distributed social networking|||Distributed social network – Collection of services that communicate through a common protocol|||IndieWeb – Movement to self-host and control web content|||RSS – Family of web feed formats|||XMPP – Communications protocol for message-oriented middleware|||Referencesedit|||^ \"A Brief History of the Fediverse Symbol\". We Distribute. Retrieved March 15, 2025.|||^ \"A symbol for the fediverse ⁂\". ⁂ fediverse symbol. Retrieved March 11, 2025.|||^ \"The asterism: the proposed new symbol for the fediverse. So say we\". Retrieved March 11, 2025.|||^ Kiderlin, Sophie (November 11, 2022). \"Musk's Twitter takeover sent thousands flocking to Mastodon. Here's what I discovered using the app\". cnbc.com. Retrieved June 18, 2024.|||^ Bayliss, Mark (June 29, 2023). \"Op-ed: Why the great #TwitterMigration didn't quite pan out\". arstechnica.com. Retrieved June 18, 2024.|||^ Confino, Paolo (July 6, 2023). \"Meta's Threads wants you in the 'fediverse.' Here's what that is\". fortune.com. Retrieved June 18, 2024.|||^ \"Definition of fediverse\". PCMAG. Retrieved April 3, 2024.|||^ Tilley, Sean (September 24, 2017). \"A quick guide to The Free Network\". We Distribute. Archived from the original on November 8, 2020. Retrieved July 25, 2023.|||^ https://medium.com/@denschub/activitypub-final-thoughts-one-year-later-194fe591e900|||^ Woloshyn, Roxannna (July 19, 2023). \"What is the fediverse and why does Threads want to join?\". CBC. Archived from the original on July 24, 2023. Retrieved July 24, 2023.|||^ \"Home | kbin.pub – Fediverse of content\". /kbin. Archived from the original on July 25, 2023. Retrieved July 24, 2023.|||^ \"Mbin - a fork of kbin - community-focused\". fedidb.org/software/mbin. Archived from the original on February 28, 2024. Retrieved February 28, 2024.|||^ Thiel, David; DiResta, Renee (July 24, 2023). \"Addressing Child Exploitation on Federated Social Media\". cyber.fsi.stanford.edu. Retrieved February 6, 2025.|||^ a b c Agarwal, Vibhor; Raman, Aravindh; Sastry, Nishanth; Abdelmoniem, Ahmed M.; Tyson, Gareth; Castro, Ignacio (May 28, 2024). \"Decentralised Moderation for Interoperable Social Networks: A Conversation-Based Approach for Pleroma and the Fediverse\". Proceedings of the International AAAI Conference on Web and Social Media. 18: 2–14. arXiv:2404.03048. doi:10.1609/icwsm.v18i1.31293. ISSN 2334-0770.|||^ a b c d Thiel, David; DiResta, Renée (2023). \"Child Safety on Federated Social Media\". doi:10.25740/vb515nd6874.|||^ a b c Mahadeva, Nikhil (2024). \"Everyone Everywhere All at Once: The Fediverse Problem\". SSRN Electronic Journal. doi:10.2139/ssrn.4716427. ISSN 1556-5068.|||^ \"Laconica is now StatusNet « StatusNet – Open Source microblogging service\". August 31, 2009. Archived from the original on August 31, 2009. Retrieved April 4, 2024.|||^ \"GNU social\". June 8, 2013. Archived from the original on August 22, 2013. Retrieved April 4, 2024.|||^ \"StatusNet, Identi.ca, and transitioning to pump.io [LWN.net]\". lwn.net. Retrieved April 4, 2024.|||^ \"Understanding OStatus | StatusNet\". December 26, 2011. Archived from the original on December 26, 2011. Retrieved April 4, 2024.|||^ Tilley, Sean (September 24, 2017). \"A quick guide to The Free Network\". We Distribute. Archived from the original on November 8, 2020. Retrieved July 25, 2023.|||^ \"Victory for libre networks: ActivityPub is now a W3C recommended standard — Free Software Foundation — Working together for free software\". www.fsf.org. Retrieved April 4, 2024.|||^ \"Pleroma Encyclical: ActivityPub\". Lainblog. February 10, 2018. Retrieved April 3, 2024.|||^ \"Remove OStatus-related code · Issue #10740 · mastodon/mastodon\". GitHub. Archived from the original on July 25, 2023. Retrieved July 25, 2023.|||^ \"Mastodon 3.0\". October 11, 2019. Retrieved April 3, 2024.|||^ \"Why the Fediverse is so slowly adopted – Rand0mise it!\". Retrieved April 25, 2024.|||^ Böck, Max (November 12, 2022). \"The IndieWeb for Everyone\". Max Böck. Retrieved April 25, 2024.|||^ \"Introducing Threads: A New Way to Share with Text\". July 5, 2023. Retrieved December 25, 2023. Our vision is that people using compatible apps will be able to follow and interact with people on Threads without having a Threads account, and vice versa, ushering in a new era of diverse and interconnected networks.|||^ Bell, Karissa (July 5, 2023). \"Meta's Threads app is here to challenge Twitter\". Engadget. Yahoo. Archived from the original on July 6, 2023. Retrieved July 6, 2023.|||^ Davenport, Corbin (November 25, 2022). \"Tumblr and Flickr Might Join Mastodon's \"Fediverse\" Network\". How-To Geek. Retrieved April 3, 2024.|||^ \"Flickr: The Help Forum: ActivityPub/Mastodon support status\". www.flickr.com. Retrieved April 3, 2024.|||^ \"VideoPortal - Gmina Stary Sącz\". video.starysacz.um.gov.pl. Retrieved November 23, 2024.|||^ \"Komunikat systemowy - Sesje Rady Miejskiej - YouTube\". YouTube. August 5, 2024. Archived from the original on August 5, 2024. Retrieved November 23, 2024.|||^ Team, VIVERSE (May 2, 2024). \"VIVERSE Joins the Fediverse: Cross-Platform Connection Made Possible\". VIVERSE Blog. Retrieved February 20, 2025.|||^ \"Making the Social Web a Better Place: ActivityPub for WordPress Joins the Automattic Family\". WordPress.com News. March 17, 2023. Retrieved April 25, 2024.|||^ \"Engage a Wider Audience With ActivityPub on WordPress.com\". WordPress.com News. October 11, 2023. Retrieved April 25, 2024.|||^ Sato, Mia (October 11, 2023). \"WordPress now offers official support for ActivityPub\". The Verge. Retrieved April 25, 2024.|||^ Patel, Nilay (April 22, 2024). \"Newsletter platform Ghost adopts ActivityPub to 'bring back the open web'\". The Verge. Retrieved April 25, 2024.|||^ \"Newsletter service Ghost will support the Fediverse protocol ActivityPub\". Engadget. April 22, 2024. Retrieved April 25, 2024.|||^ \"Building ActivityPub\". Building ActivityPub. Retrieved April 25, 2024.|||^ \"Federate over ActivityPub\". Ghost Forum. July 13, 2018. Retrieved April 25, 2024.|||^ Perez, Sarah (July 8, 2024). \"Substack rival Ghost federates its first newsletter\". TechCrunch. Archived from the original on July 15, 2024. Retrieved August 10, 2024.|||^ Perez, Sarah (November 21, 2022). \"Tumblr to add support for ActivityPub, the social protocol powering Mastodon and other apps\". TechCrunch. Retrieved April 3, 2024.|||^ Perez, Sarah (December 11, 2023). \"Tumblr's 'Fediverse' integration is still being worked on, says owner and Automattic CEO Matt Mullenweg\". TechCrunch. Retrieved April 3, 2024.|||^ Perez, Sarah (February 11, 2025). \"Tumblr to join the fediverse after WordPress migration completes\". TechCrunch. Retrieved February 11, 2025.|||^ \"Introducing Threads: A New Way to Share With Text\". Meta. July 5, 2023. Retrieved April 3, 2024.|||^ Mehta, Ivan (July 5, 2023). \"Adam Mosseri says Meta's Threads app won't have ActivityPub support at launch\". TechCrunch. Retrieved April 3, 2024.|||^ Davis, Wes (December 13, 2023). \"Threads is officially starting to test ActivityPub integration\". The Verge. Retrieved April 3, 2024.|||^ \"How Threads will integrate with the Fediverse – plasticbag.org\". January 12, 2024. Retrieved April 3, 2024.|||^ Vallance, Chris; Gerken, Tom (July 10, 2023). \"Meta plans feed for Threads after users complain\". BBC News. BBC. Archived from the original on December 14, 2023. Retrieved March 22, 2024.|||^ Wickens, Katie (July 7, 2023). \"Threads threatens to muscle in on Mastodon's Fediverse and admins are up in arms about it\". PC Gamer. Archived from the original on October 2, 2023. Retrieved March 22, 2024.|||^ Barber, Gregory (July 19, 2023). \"Fear, loathing, and excitement as Threads adopts open standard used by Mastodon\". Ars Technics. Archived from the original on March 22, 2024. Retrieved March 22, 2024.|||^ Mark, Zuckerberg (March 21, 2024). \"Threads\". www.threads.net. Retrieved March 21, 2024.|||^ Roth, Emma (March 21, 2024). \"Threads' fediverse beta opens to share your posts on Mastodon, too\". The Verge. Retrieved March 22, 2024.|||^ Forristal, Lauren (March 21, 2024). \"Threads opens beta to let users connect their accounts to the Fediverse\". TechCrunch. Retrieved April 3, 2024.|||^ Davis, Wes (April 2, 2024). \"President Biden is now posting into the fediverse\". The Verge. Retrieved April 3, 2024.|||^ \"Threads is making fediverse replies more visible in its app\". Engadget. August 28, 2024. Retrieved September 12, 2024.|||^ McCue, Mike (December 19, 2023). \"Flipboard Begins to Federate\". Medium. Retrieved April 2, 2024.|||^ \"AT Protocol\". AT Protocol. Retrieved September 12, 2024.|||^ Torpey, Kyle. \"Here's why Bitcoiners are flocking to Nostr\". Fortune Crypto. Retrieved February 11, 2025.|||^ \"nostr - Notes and Other Stuff Transmitted by Relays\". fiatjaf.com. Retrieved February 11, 2025.|||^ \"FAQ\". AT Protocol. Retrieved February 11, 2025.|||^ Perez, Sarah (May 21, 2024). \"The 'vote Trump' spam that hit Bluesky in May came from decentralized rival Nostr\". TechCrunch. Retrieved September 12, 2024.|||^ Perez, Sarah (June 5, 2024). \"Bluesky and Mastodon users can now talk to each other with Bridgy Fed\". TechCrunch. Retrieved September 12, 2024.|||^ \"FediDB\".|||^ Pierce, David (December 19, 2023). \"2023 in social media: the case for the fediverse\". The Verge. Retrieved January 11, 2024.|||^ \"ActivityPub\". Drupal.org. February 23, 2019. Archived from the original on March 6, 2022. Retrieved March 6, 2022.|||^ Pfefferle, Matthias. \"ActivityPub\". WordPress.org. Archived from the original on July 2, 2022. Retrieved November 28, 2022.|||Further readingedit|||2022. Toxicity in the Decentralized Web and the Potential for Model Sharing|||2021. Exploring Content Moderation in the Decentralised Web: The Pleroma Case|||2019. The disinformation landscape and the lockdown of social platforms|||2019. Challenges in the Decentralised Web: The Mastodon Case|||2018. Recommending Users: Whom to Follow on Federated Social Networks|||2018. Multi-task dialog act and sentiment recognition on Mastodon|||2015. FCJ-190 Building a Better Twitter: A Study of the Twitter Alternatives GNU social, Quitter, rstat.us, and Twister|||2015. The Case for Alternative Social Media|||Wikimedia Commons has media related to Fediverse.|||hide|||v|||t|||e|||Fediverse and decentralized social networks|||ActivityPub network|||Drupal (via plugins)|||Friendica|||GNU social|||Lemmy|||Mastodon|||Micro.blog|||Misskey|||Mobilizon|||Nextcloud Social|||PeerTube|||Pixelfed|||Pleroma|||WordPress (via plugins)|||diaspora* network|||diaspora*|||Drupal (via plugins)|||Friendica|||WordPress (via plugins)|||Other networks|||AT Protocol|||Bluesky|||Matrix|||Nostr|||OpenMicroBlogging|||OStatus|||pump.io|||Twister|||Categories:|||Fediverse|||Microblogging|||Free and open-source software|||Social networks|||2008 introductions|||This page was last edited on 29 April 2025, at 16:00 (UTC).|||Text is available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.",
                    "bookmark_id": 15,
                    "bookmark": {
                        "id": 0,
                        "created_at": "0001-01-01T00:00:00Z",
                        "updated_at": "0001-01-01T00:00:00Z",
                        "deleted_at": null,
                        "url": "",
                        "title": "",
                        "notes": "",
                        "domain": "",
                        "favicon": "",
                        "tags": null,
                        "snapshots": null,
                        "collection": null,
                        "public": false,
                        "unread": false,
                        "user_id": 0
                    },
                    "size": 323360,
                    "resources": null
                }
            ],
            "collection": null,
            "public": true,
            "unread": false,
            "user_id": 1
        },
        {
            "id": 14,
            "created_at": "2025-05-08T14:33:03.5472581Z",
            "updated_at": "2025-05-08T14:33:03.5472581Z",
            "deleted_at": null,
            "url": "https://www.w3.org/TR/activitypub/",
            "title": "ActivityPub",
            "notes": "The ActivityPub protocol is a decentralized social networking protocol based upon the [ActivityStreams] 2.0 data format. It provides a client to server API for creating, updating and deleting content, as well as a federated server to server API for delivering notifications and content.\r\n\r\n",
            "domain": "www.w3.org",
            "favicon": "data:image/vnd.microsoft.icon;base64,AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAOgkAADoJAAAAAAAAAAAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z69//59vH///////////////////////jz7f/+/fz////////////+/fz/7uPU/+XUvP/v5NX//v38///////////////////////f39//ysrK/+bm5v//////////////////////////////////////////////////////6NnE/9i9mv/////////////////8+/j/z6+E//Xu5P//////+vfz/8uoef+kaBX/nl0E/6VpF//LqHn/+vfz///////5+fn/jo6O/yoqKv8VFRX/Kysr/6Ghof/8/Pz////////////////////////////////////////////QsIX/uIlI//z69/////////////Pq3/+tdiv/5NG4///////Rsoj/nFoA/7F9N//GoG3/qnIk/5xaAP/Tto7//////6Wlpf9sbGz/s7Oz/7a2tv9lZWX/GRkZ/6+vr////////////////////////////////////////Pr3/7iJSP+laBb/7+XX////////////38qt/51bAv/Mqnz//Pv4/86tgf/GoGz/8+rf///////j0bf/oWIM/695L//c1s//rK2t//f39/////////////z8/P+Kior/bW1t//7+/v/////////////////////////////////w5df/pmsa/5xaAP/awqD////////////GoGz/mVUA/7SDP//69/L///7+//////////////////r38v+yfjj/oWIN/8/Cr//09fb///////////////////////T09P/Dw8P//f39/////////////////////////////////9rCof+dWwL/mlcA/8GYX/////7/+PPs/696Mv+aVgD/pGcT/+zfzv///////////////////////fv5/7iJSP+fXgf/5dXA///////////////////////////////////////////////////////////////////////+/v7/wZhg/55eBv+mahn/q3Mn//bx6f/n2ML/oWMO/6htHv+dXAP/1rqU///////////////////////38uv/rnct/6NmE//u49T//f7///////////////////////////////////////////////////////////////////Xv5v+rcyb/r3ox/8upev+fXwj/49G4/9Cxhv+hYgz/0bOJ/6JlEP+8kFP//fz7//38+v/69/P/9e/m/82sf/+cWgH/uIhH//j18f/Y2dn//Pz8////////////////////////////////////////////////////////////49G3/55dBf/Gn2v/6t3K/6JjDv/Fn2r/toVD/613Lf/x6Nz/sn85/6htHv/z7OH/7eDQ/7eGRf+rcyf/nVsC/6dsG//l1Lz/8fLz/6enp//8/Pz////////////////////////////////////////////////////////////LqHj/nFoB/97Iqf/7+PX/sn85/6NmE/+gYAr/xJ1o///////JpnX/nFsB/9/KrP/9+/n/vJBT/5lVAP+yfjj/6dnF///////m5uf/f39///j4+P//////////////////////////////////////////////////////+vby/7J/Ov+nbBv/8unc///////Kpnb/mlcA/51cA//dx6j//////+LOtP+dXAP/xp9r///////p28j/pGcU/7F9N//38ur//////+vr6/9YWFj/4uLi///////////////////////////////////////////////////////r3sz/oWMO/7uNT//9+/n//////9/Jq/+dWwL/qG0e//Ho3P//////9O3k/6pxI/+ueTD/+PPt///////Kpnb/nFkA/9Cxh///////+Pj4/05OTv+Wlpb////////////8/Pz/u7u7//Ly8v///////f39/////////////////9W4kv+bWQD/1LeP////////////49G3/51cAv+7jU///fv5///////+/f3/v5Vb/59fCP/l07z///////Hn2v+rcyb/p20d/+7j1P//////hYWF/x4eHv+srKz/4ODg/5KSkv8dHR3/s7Oz/+np6f/Hx8f/19fX//z8/P/9+/n/u45Q/6FiDP/q3cr////////////Tto7/m1gA/9S2j//////////////////awqH/nFoA/6x1Kv+8j1L/vI9S/6dtHf+aVgD/w5xl///+/f/c3Nz/KCgo/wUFBf8YGBj/Kysr/15eXv92dnb/yMjI/5KSkv+xsbH/7u7u//Lq3v+wfDT/t4hH//n28f///////v37/8OaZP+pbyH/697M//////////////////fx6v+9kVX/pWkX/6NmE/+jZhP/pGgW/6VoFv+rcyf/6tvI//////+9vb3/RERE/0RERP+7u7v/4eHh/6+vr//S0tL/nJyc/7q6uv/39/f/+/n1//Dm2P/07eP////////////+/v3/8urf//Hn2//9/Pr///////////////////////r38//x59r/7+XW/+/l1v/v5db/7+XW/+/k1v/48+3////////////19fX/9fX1////////////+vr6//v7+//s7Oz/9vb2////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
            "tags": [
                {
                    "id": 17,
                    "created_at": "2025-05-08T14:08:28.132535627Z",
                    "updated_at": "2025-05-08T14:08:28.132535627Z",
                    "deleted_at": null,
                    "text": "activitypub",
                    "bookmarks": null
                },
                {
                    "id": 18,
                    "created_at": "2025-05-08T14:33:03.533140643Z",
                    "updated_at": "2025-05-08T14:33:03.533140643Z",
                    "deleted_at": null,
                    "text": "specification",
                    "bookmarks": null
                },
                {
                    "id": 19,
                    "created_at": "2025-05-08T14:33:03.54179813Z",
                    "updated_at": "2025-05-08T14:33:03.54179813Z",
                    "deleted_at": null,
                    "text": "documentation",
                    "bookmarks": null
                }
            ],
            "snapshots": [
                {
                    "id": 14,
                    "created_at": "2025-05-08T14:33:03.567811789Z",
                    "updated_at": "2025-05-08T14:33:03.768189263Z",
                    "deleted_at": null,
                    "title": "",
                    "key": "1be2eb1457a80ace51c6f37e5a1a60c9ee6cff229b65e9297c49e836f25f7e5f",
                    "text": "←|||ActivityPub|||W3C Recommendation 23 January 2018|||This version: https://www.w3.org/TR/2018/REC-activitypub-20180123/|||Latest published version: https://www.w3.org/TR/activitypub/|||Latest editor's draft: https://w3c.github.io/activitypub/|||Test suite: https://test.activitypub.rocks/|||Implementation report: https://activitypub.rocks/implementation-report|||Previous version: https://www.w3.org/TR/2017/PR-activitypub-20171205/|||Editors: Christine Lemmer-Webber Jessica Tallon|||Authors: Christine Lemmer-Webber Jessica Tallon Erin Shepherd Amy Guy Evan Prodromou|||Repository: Git repository Issues Commits|||Please check the errata for any errors or issues reported since publication.|||See also translations.|||Copyright © 2018 W3C® (MIT, ERCIM, Keio, Beihang). W3C liability, trademark and permissive document license rules apply.|||Abstract|||The ActivityPub protocol is a decentralized social networking protocol based upon the [ActivityStreams] 2.0 data format. It provides a client to server API for creating, updating and deleting content, as well as a federated server to server API for delivering notifications and content.|||Status of This Document|||This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at https://www.w3.org/TR/.|||This document was published by the Social Web Working Group as a Recommendation.|||All interested parties are invited to provide implementation and bug reports and other comments through the Working Group's Issue tracker. These will be discussed by the Social Web Community Group and considered in any future versions of this specification.|||Please see the Working Group's implementation report.|||This document has been reviewed by W3C Members, by software developers, and by other W3C groups and interested parties, and is endorsed by the Director as a W3C Recommendation. It is a stable document and may be used as reference material or cited from another document. W3C's role in making the Recommendation is to draw attention to the specification and to promote its widespread deployment. This enhances the functionality and interoperability of the Web.|||This document was produced by a group operating under the W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.|||This document is governed by the 1 March 2017 W3C Process Document.|||Table of Contents|||1. Overview|||1.1 Social Web Working Group|||2. Conformance|||2.1 Specification Profiles|||3. Objects|||3.1 Object Identifiers|||3.2 Retrieving objects|||3.3 The source property|||4. Actors|||4.1 Actor objects|||5. Collections|||5.1 Outbox|||5.2 Inbox|||5.3 Followers Collection|||5.4 Following Collection|||5.5 Liked Collection|||5.6 Public Addressing|||5.7 Likes Collection|||5.8 Shares Collection|||6. Client to Server Interactions|||6.1 Client Addressing|||6.2 Create Activity|||6.2.1 Object creation without a Create Activity|||6.3 Update Activity|||6.3.1 Partial Updates|||6.4 Delete Activity|||6.5 Follow Activity|||6.6 Add Activity|||6.7 Remove Activity|||6.8 Like Activity|||6.9 Block Activity|||6.10 Undo Activity|||6.11 Delivery|||6.12 Uploading Media|||7. Server to Server Interactions|||7.1 Delivery|||7.1.1 Outbox Delivery Requirements for Server to Server|||7.1.2 Forwarding from Inbox|||7.1.3 Shared Inbox Delivery|||7.2 Create Activity|||7.3 Update Activity|||7.4 Delete Activity|||7.5 Follow Activity|||7.6 Accept Activity|||7.7 Reject Activity|||7.8 Add Activity|||7.9 Remove Activity|||7.10 Like Activity|||7.11 Announce Activity (sharing)|||7.12 Undo Activity|||A. Internationalization|||B. Security Considerations|||B.1 Authentication and Authorization|||B.2 Verification|||B.3 Accessing localhost URIs|||B.4 URI Schemes|||B.5 Recursive Objects|||B.6 Spam|||B.7 Federation denial-of-service|||B.8 Client-to-server ratelimiting|||B.9 Client-to-server response denial-of-service|||B.10 Sanitizing Content|||B.11 Not displaying bto and bcc properties|||C. Acknowledgements|||D. References|||D.1 Normative references|||D.2 Informative references|||1. Overview|||ActivityPub provides two layers:|||A server to server federation protocol (so decentralized websites can share information)|||A client to server protocol (so users, including real-world users, bots, and other automated processes, can communicate with ActivityPub using their accounts on servers, from a phone or desktop or web application or whatever)|||ActivityPub implementations can implement just one of these things or both of them. However, once you've implemented one, it isn't too many steps to implement the other, and there are a lot of benefits to both (making your website part of the decentralized social web, and being able to use clients and client libraries that work across a wide variety of social websites).|||In ActivityPub, a user is represented by \"actors\" via the user's accounts on servers. User's accounts on different servers correspond to different actors. Every Actor has:|||An inbox: How they get messages from the world|||An outbox: How they send messages to others|||These are endpoints, or really, just URLs which are listed in the ActivityPub actor's ActivityStreams description. (More on ActivityStreams later).|||Here's an example of the record of our friend Alyssa P. Hacker:|||Example 1{\"@context\": \"https://www.w3.org/ns/activitystreams\", \"type\": \"Person\", \"id\": \"https://social.example/alyssa/\", \"name\": \"Alyssa P. Hacker\", \"preferredUsername\": \"alyssa\", \"summary\": \"Lisp enthusiast hailing from MIT\", \"inbox\": \"https://social.example/alyssa/inbox/\", \"outbox\": \"https://social.example/alyssa/outbox/\", \"followers\": \"https://social.example/alyssa/followers/\", \"following\": \"https://social.example/alyssa/following/\", \"liked\": \"https://social.example/alyssa/liked/\"}|||ActivityPub uses [ActivityStreams] for its vocabulary. This is pretty great because ActivityStreams includes all the common terms you need to represent all the activities and content flowing around a social network. It's likely that ActivityStreams already includes all the vocabulary you need, but even if it doesn't, ActivityStreams can be extended via [JSON-LD]. If you know what JSON-LD is, you can take advantage of the cool linked data approaches provided by JSON-LD. If you don't, don't worry, JSON-LD documents and ActivityStreams can be understood as plain old simple JSON. (If you're going to add extensions, that's the point at which JSON-LD really helps you out).|||So, okay. Alyssa wants to talk to her friends, and her friends want to talk to her! Luckily these \"inbox\" and \"outbox\" things can help us out. They both behave differently for GET and POST. Let's see how that works:|||Hey nice, so just as a recap:|||You can POST to someone's inbox to send them a message (server-to-server / federation only... this is federation!)|||You can GET from your inbox to read your latest messages (client-to-server; this is like reading your social network stream)|||You can POST to your outbox to send messages to the world (client-to-server)|||You can GET from someone's outbox to see what messages they've posted (or at least the ones you're authorized to see). (client-to-server and/or server-to-server)|||Of course, if that last one (GET'ing from someone's outbox) was the only way to see what people have sent, this wouldn't be a very efficient federation protocol! Indeed, federation happens usually by servers posting messages sent by actors to actors on other servers' inboxes.|||Let's see an example! Let's say Alyssa wants to catch up with her friend, Ben Bitdiddle. She lent him a book recently and she wants to make sure he returns it to her. Here's the message she composes, as an ActivityStreams object:|||Example 2{\"@context\": \"https://www.w3.org/ns/activitystreams\", \"type\": \"Note\", \"to\": [\"https://chatty.example/ben/\"], \"attributedTo\": \"https://social.example/alyssa/\", \"content\": \"Say, did you finish reading that book I lent you?\"}|||This is a note addressed to Ben. She POSTs it to her outbox.|||Since this is a non-activity object, the server recognizes that this is an object being newly created, and does the courtesy of wrapping it in a Create activity. (Activities sent around in ActivityPub generally follow the pattern of some activity by some actor being taken on some object. In this case the activity is a Create of a Note object, posted by a Person).|||Example 3{\"@context\": \"https://www.w3.org/ns/activitystreams\", \"type\": \"Create\", \"id\": \"https://social.example/alyssa/posts/a29a6843-9feb-4c74-a7f7-081b9c9201d3\", \"to\": [\"https://chatty.example/ben/\"], \"actor\": \"https://social.example/alyssa/\", \"object\": {\"type\": \"Note\", \"id\": \"https://social.example/alyssa/posts/49e2d03d-b53a-4c4c-a95c-94a6abf45a19\", \"attributedTo\": \"https://social.example/alyssa/\", \"to\": [\"https://chatty.example/ben/\"], \"content\": \"Say, did you finish reading that book I lent you?\"}}|||Alyssa's server looks up Ben's ActivityStreams actor object, finds his inbox endpoint, and POSTs her object to his inbox.|||Technically these are two separate steps... one is client to server communication, and one is server to server communication (federation). But, since we're using them both in this example, we can abstractly think of this as being a streamlined submission from outbox to inbox:|||Cool! A while later, Alyssa checks what new messages she's gotten. Her phone polls her inbox via GET, and amongst a bunch of cat videos posted by friends and photos of her nephew posted by her sister, she sees the following:|||Example 4{\"@context\": \"https://www.w3.org/ns/activitystreams\", \"type\": \"Create\", \"id\": \"https://chatty.example/ben/p/51086\", \"to\": [\"https://social.example/alyssa/\"], \"actor\": \"https://chatty.example/ben/\", \"object\": {\"type\": \"Note\", \"id\": \"https://chatty.example/ben/p/51085\", \"attributedTo\": \"https://chatty.example/ben/\", \"to\": [\"https://social.example/alyssa/\"], \"inReplyTo\": \"https://social.example/alyssa/posts/49e2d03d-b53a-4c4c-a95c-94a6abf45a19\", \"content\": \"\u003cp\u003eArgh, yeah, sorry, I'll get it back to you tomorrow.\u003c/p\u003e \u003cp\u003eI was reviewing the section on register machines, since it's been a while since I wrote one.\u003c/p\u003e\"}}|||Alyssa is relieved, and likes Ben's post:|||Example 5{\"@context\": \"https://www.w3.org/ns/activitystreams\", \"type\": \"Like\", \"id\": \"https://social.example/alyssa/posts/5312e10e-5110-42e5-a09b-934882b3ecec\", \"to\": [\"https://chatty.example/ben/\"], \"actor\": \"https://social.example/alyssa/\", \"object\": \"https://chatty.example/ben/p/51086\"}|||She POSTs this message to her outbox. (Since it's an activity, her server knows it doesn't need to wrap it in a Create object).|||Feeling happy about things, she decides to post a public message to her followers. Soon the following message is blasted to all the members of her followers collection, and since it has the special Public group addressed, is generally readable by anyone.|||Example 6{\"@context\": \"https://www.w3.org/ns/activitystreams\", \"type\": \"Create\", \"id\": \"https://social.example/alyssa/posts/9282e9cc-14d0-42b3-a758-d6aeca6c876b\", \"to\": [\"https://social.example/alyssa/followers/\", \"https://www.w3.org/ns/activitystreams#Public\"], \"actor\": \"https://social.example/alyssa/\", \"object\": {\"type\": \"Note\", \"id\": \"https://social.example/alyssa/posts/d18c55d4-8a63-4181-9745-4e6cf7938fa1\", \"attributedTo\": \"https://social.example/alyssa/\", \"to\": [\"https://social.example/alyssa/followers/\", \"https://www.w3.org/ns/activitystreams#Public\"], \"content\": \"Lending books to friends is nice. Getting them back is even nicer! :)\"}}|||1.1 Social Web Working Group|||ActivityPub is one of several related specifications being produced by the Social Web Working Group. Implementers interested in alternative approaches and complementary protocols should review [Micropub] and the overview document [Social-Web-Protocols].|||2. Conformance|||As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.|||The key words MAY, MUST, MUST NOT, SHOULD, and SHOULD NOT are to be interpreted as described in [RFC2119].|||2.1 Specification Profiles|||This specification defines two closely related and interacting protocols:|||A client to server protocol, or \"Social API\" This protocol permits a client to act on behalf of a user. For example, this protocol is used by a mobile phone application to interact with a social stream of the user's actor.|||A server to server protocol, or \"Federation Protocol\" This protocol is used to distribute activities between actors on different servers, tying them into the same social graph.|||The ActivityPub specification is designed so that once either of these protocols are implemented, supporting the other is of very little additional effort. However, servers may still implement one without the other. This gives three conformance classes:|||ActivityPub conformant Client This designation applies to any implementation of the entirety of the client portion of the client to server protocol.|||ActivityPub conformant Server This designation applies to any implementation of the entirety of the server portion of the client to server protocol.|||ActivityPub conformant Federated Server This designation applies to any implementation of the entirety of the federation protocols.|||It is called out whenever a portion of the specification only applies to implementation of the federation protocol. In addition, whenever requirements are specified, it is called out whether they apply to the client or server (for the client-to-server protocol) or whether referring to a sending or receiving server in the server-to-server protocol.|||3. Objects|||Objects are the core concept around which both [ActivityStreams] and ActivityPub are built. Objects are often wrapped in Activities and are contained in streams of Collections, which are themselves subclasses of Objects. See the [Activity-Vocabulary] document, particularly the Core Classes; ActivityPub follows the mapping of this vocabulary very closely.|||ActivityPub defines some terms in addition to those provided by ActivityStreams. These terms are provided in the ActivityPub JSON-LD context at https://www.w3.org/ns/activitystreams. Implementers SHOULD include the ActivityPub context in their object definitions. Implementers MAY include additional context as appropriate.|||ActivityPub shares the same URI / IRI conventions as in ActivityStreams.|||Servers SHOULD validate the content they receive to avoid content spoofing attacks. (A server should do something at least as robust as checking that the object appears as received at its origin, but mechanisms such as checking signatures would be better if available). No particular mechanism for verification is authoritatively specified by this document, but please see Security Considerations for some suggestions and good practices.|||As an example, if example.com receives the activity|||Example 7{ \"@context\": \"https://www.w3.org/ns/activitystreams\", \"type\": \"Like\", \"actor\": \"https://example.net/~mallory\", \"to\": [\"https://hatchat.example/sarah/\", \"https://example.com/peeps/john/\"], \"object\": { \"@context\": {\"@language\": \"en\"}, \"id\": \"https://example.org/~alice/note/23\", \"type\": \"Note\", \"attributedTo\": \"https://example.org/~alice\", \"content\": \"I'm a goat\" } } it should dereference the id both to ensure that it exists and is a valid object, and that it is not misrepresenting the object. (In this example, Mallory could be spoofing an object allegedly posted by Alice).|||3.1 Object Identifiers|||All Objects in [ActivityStreams] should have unique global identifiers. ActivityPub extends this requirement; all objects distributed by the ActivityPub protocol MUST have unique global identifiers, unless they are intentionally transient (short lived activities that are not intended to be able to be looked up, such as some kinds of chat messages or game notifications). These identifiers must fall into one of the following groups:|||Publicly dereferencable URIs, such as HTTPS URIs, with their authority belonging to that of their originating server. (Publicly facing content SHOULD use HTTPS URIs).|||An ID explicitly specified as the JSON null object, which implies an anonymous object (a part of its parent context)|||Identifiers MUST be provided for activities posted in server to server communication, unless the activity is intentionally transient. However, for client to server communication, a server receiving an object posted to the outbox with no specified id SHOULD allocate an object ID in the actor's namespace and attach it to the posted object.|||All objects have the following properties:|||id The object's unique global identifier (unless the object is transient, in which case the id MAY be omitted).|||type The type of the object.|||3.2 Retrieving objects|||The HTTP GET method may be dereferenced against an object's id property to retrieve the activity. Servers MAY use HTTP content negotiation as defined in [RFC7231] to select the type of data to return in response to a request, but MUST present the ActivityStreams object representation in response to application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\", and SHOULD also present the ActivityStreams representation in response to application/activity+json as well. The client MUST specify an Accept header with the application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\" media type in order to retrieve the activity.|||Servers MAY implement other behavior for requests which do not comply with the above requirement. (For example, servers may implement additional legacy protocols, or may use the same URI for both HTML and ActivityStreams representations of a resource).|||Servers MAY require authorization as specified in B.1 Authentication and Authorization, and may additionally implement their own authorization rules. Servers SHOULD fail requests which do not pass their authorization checks with the appropriate HTTP error code, or the 403 Forbidden error code where the existence of the object is considered private. An origin server which does not wish to disclose the existence of a private target MAY instead respond with a status code of 404 Not Found.|||3.3 The source property|||In addition to all the properties defined by the [Activity-Vocabulary], ActivityPub extends the Object by supplying the source property. The source property is intended to convey some sort of source from which the content markup was derived, as a form of provenance, or to support future editing by clients. In general, clients do the conversion from source to content, not the other way around.|||The value of source is itself an object which uses its own content and mediaType fields to supply source information.|||Example 8{ \"@context\": [\"https://www.w3.org/ns/activitystreams\", {\"@language\": \"en\"}], \"type\": \"Note\", \"id\": \"http://postparty.example/p/2415\", \"content\": \"\u003cp\u003eI \u003cem\u003ereally\u003c/em\u003e like strawberries!\u003c/p\u003e\", \"source\": { \"content\": \"I *really* like strawberries!\", \"mediaType\": \"text/markdown\"} }|||Note: What to do when clients can't meaningfully handle a mediaType?|||In general, it's best to let a user edit their original post in the same source format they originally composed it in. But not all clients can reliably provide a nice interface for all source types, and since clients are expected to do the conversion from source to content, some clients may work with a media type that another client does not know how to work with. While a client could feasibly provide the content markup to be edited and ignore the source, this means that the user will lose the more desirable form of the original source in any future revisions. A client doing so should thus provide a minimally obtrusive warning cautioning that the original source format is not understood and is thus being ignored.|||For example, Alyssa P. Hacker likes to post to her ActivityPub powered blog via an Emacs client she has written, leveraging Org mode. Later she switches to editing on her phone's client, which has no idea what text/x-org is or how to render it to HTML, so it provides a text box to edit the original content instead. A helpful warning displays above the edit area saying, \"This was originally written in another markup language we don't know how to handle. If you edit, you'll lose your original source!\" Alyssa decides the small typo fix isn't worth losing her nice org-mode markup and decides to make the update when she gets home.|||4. Actors|||ActivityPub actors are generally one of the ActivityStreams Actor Types, but they don't have to be. For example, a Profile object might be used as an actor, or a type from an ActivityStreams extension. Actors are retrieved like any other Object in ActivityPub. Like other ActivityStreams objects, actors have an id, which is a URI. When entered directly into a user interface (for example on a login form), it is desirable to support simplified naming. For this purpose, ID normalization SHOULD be performed as follows:|||If the entered ID is a valid URI, then it is to be used directly.|||If it appears that the user neglected to add a scheme for a URI that would otherwise be considered valid, such as example.org/alice/, clients MAY attempt to provide a default scheme, preferably https.|||Otherwise, the entered value should be considered invalid.|||Once the actor's URI has been identified, it should be dereferenced.|||Note|||ActivityPub does not dictate a specific relationship between \"users\" and Actors; many configurations are possible. There may be multiple human users or organizations controlling an Actor, or likewise one human or organization may control multiple Actors. Similarly, an Actor may represent a piece of software, like a bot, or an automated process. More detailed \"user\" modelling, for example linking together of Actors which are controlled by the same entity, or allowing one Actor to be presented through multiple alternate profiles or aspects, are at the discretion of the implementation.|||4.1 Actor objects|||Actor objects MUST have, in addition to the properties mandated by 3.1 Object Identifiers, the following properties:|||inbox A reference to an [ActivityStreams] OrderedCollection comprised of all the messages received by the actor; see 5.2 Inbox.|||outbox An [ActivityStreams] OrderedCollection comprised of all the messages produced by the actor; see 5.1 Outbox.|||Implementations SHOULD, in addition, provide the following properties:|||following A link to an [ActivityStreams] collection of the actors that this actor is following; see 5.4 Following Collection|||followers A link to an [ActivityStreams] collection of the actors that follow this actor; see 5.3 Followers Collection.|||Implementations MAY provide the following properties:|||liked A link to an [ActivityStreams] collection of objects this actor has liked; see 5.5 Liked Collection.|||Example 9{ \"@context\": [\"https://www.w3.org/ns/activitystreams\", {\"@language\": \"ja\"}], \"type\": \"Person\", \"id\": \"https://kenzoishii.example.com/\", \"following\": \"https://kenzoishii.example.com/following.json\", \"followers\": \"https://kenzoishii.example.com/followers.json\", \"liked\": \"https://kenzoishii.example.com/liked.json\", \"inbox\": \"https://kenzoishii.example.com/inbox.json\", \"outbox\": \"https://kenzoishii.example.com/feed.json\", \"preferredUsername\": \"kenzoishii\", \"name\": \"石井健蔵\", \"summary\": \"この方はただの例です\", \"icon\": [ \"https://kenzoishii.example.com/image/165987aklre4\" ] }|||Implementations MAY, in addition, provide the following properties:|||streams A list of supplementary Collections which may be of interest.|||preferredUsername A short username which may be used to refer to the actor, with no uniqueness guarantees.|||endpoints A json object which maps additional (typically server/domain-wide) endpoints which may be useful either for this actor or someone referencing this actor. This mapping may be nested inside the actor document as the value or may be a link to a JSON-LD document with these properties.|||The endpoints mapping MAY include the following properties:|||proxyUrl Endpoint URI so this actor's clients may access remote ActivityStreams objects which require authentication to access. To use this endpoint, the client posts an x-www-form-urlencoded id parameter with the value being the id of the requested ActivityStreams object.|||oauthAuthorizationEndpoint If OAuth 2.0 bearer tokens [RFC6749] [RFC6750] are being used for authenticating client to server interactions, this endpoint specifies a URI at which a browser-authenticated user may obtain a new authorization grant.|||oauthTokenEndpoint If OAuth 2.0 bearer tokens [RFC6749] [RFC6750] are being used for authenticating client to server interactions, this endpoint specifies a URI at which a client may acquire an access token.|||provideClientKey If Linked Data Signatures and HTTP Signatures are being used for authentication and authorization, this endpoint specifies a URI at which browser-authenticated users may authorize a client's public key for client to server interactions.|||signClientKey If Linked Data Signatures and HTTP Signatures are being used for authentication and authorization, this endpoint specifies a URI at which a client key may be signed by the actor's key for a time window to act on behalf of the actor in interacting with foreign servers.|||sharedInbox An optional endpoint used for wide delivery of publicly addressed activities and activities sent to followers. sharedInbox endpoints SHOULD also be publicly readable OrderedCollection objects containing objects addressed to the Public special collection. Reading from the sharedInbox endpoint MUST NOT present objects which are not addressed to the Public endpoint.|||Note|||As the upstream vocabulary for ActivityPub, any applicable [ActivityStreams] property may be used on ActivityPub Actors. Some ActivityStreams properties are particularly worth highlighting to demonstrate how they are used in ActivityPub implementations.|||url A link to the actor's \"profile web page\", if not equal to the value of id.|||name The preferred \"nickname\" or \"display name\" of the actor.|||summary A quick summary or bio by the user about themselves.|||icon A link to an image or an Image object which represents the user's profile picture (this may be a thumbnail).|||Note|||Properties containing natural language values, such as name, preferredUsername, or summary, make use of natural language support defined in ActivityStreams.|||5. Collections|||[ActivityStreams] defines the collection concept; ActivityPub defines several collections with special behavior. Note that ActivityPub makes use of ActivityStreams paging to traverse large sets of objects.|||Note that some of these collections are specified to be of type OrderedCollection specifically, while others are permitted to be either a Collection or an OrderedCollection. An OrderedCollection MUST be presented consistently in reverse chronological order.|||Note|||What property is used to determine the reverse chronological order is intentionally left as an implementation detail. For example, many SQL-style databases use an incrementing integer as an identifier, which can be reasonably used for handling insertion order in most cases. In other databases, an insertion time timestamp may be preferred. What is used isn't important, but the ordering of elements must remain intact, with newer items first. A property which changes regularly, such a \"last updated\" timestamp, should not be used.|||5.1 Outbox|||The outbox is discovered through the outbox property of an actor's profile. The outbox MUST be an OrderedCollection.|||The outbox stream contains activities the user has published, subject to the ability of the requestor to retrieve the activity (that is, the contents of the outbox are filtered by the permissions of the person reading it). If a user submits a request without Authorization the server should respond with all of the Public posts. This could potentially be all relevant objects published by the user, though the number of available items is left to the discretion of those implementing and deploying the server.|||The outbox accepts HTTP POST requests, with behaviour described in Client to Server Interactions.|||5.2 Inbox|||The inbox is discovered through the inbox property of an actor's profile. The inbox MUST be an OrderedCollection.|||The inbox stream contains all activities received by the actor. The server SHOULD filter content according to the requester's permission. In general, the owner of an inbox is likely to be able to access all of their inbox contents. Depending on access control, some other content may be public, whereas other content may require authentication for non-owner users, if they can access the inbox at all.|||The server MUST perform de-duplication of activities returned by the inbox. Duplication can occur if an activity is addressed both to an actor's followers, and a specific actor who also follows the recipient actor, and the server has failed to de-duplicate the recipients list. Such deduplication MUST be performed by comparing the id of the activities and dropping any activities already seen.|||The inboxes of actors on federated servers accepts HTTP POST requests, with behaviour described in Delivery. Non-federated servers SHOULD return a 405 Method Not Allowed upon receipt of a POST request.|||5.3 Followers Collection|||Every actor SHOULD have a followers collection. This is a list of everyone who has sent a Follow activity for the actor, added as a side effect. This is where one would find a list of all the actors that are following the actor. The followers collection MUST be either an OrderedCollection or a Collection and MAY be filtered on privileges of an authenticated user or as appropriate when no authentication is given.|||Note: Default for notification targeting|||The follow activity generally is a request to see the objects an actor creates. This makes the Followers collection an appropriate default target for delivery of notifications.|||5.4 Following Collection|||Every actor SHOULD have a following collection. This is a list of everybody that the actor has followed, added as a side effect. The following collection MUST be either an OrderedCollection or a Collection and MAY be filtered on privileges of an authenticated user or as appropriate when no authentication is given.|||5.5 Liked Collection|||Every actor MAY have a liked collection. This is a list of every object from all of the actor's Like activities, added as a side effect. The liked collection MUST be either an OrderedCollection or a Collection and MAY be filtered on privileges of an authenticated user or as appropriate when no authentication is given.|||5.6 Public Addressing|||In addition to [ActivityStreams] collections and objects, Activities may additionally be addressed to the special \"public\" collection, with the identifier https://www.w3.org/ns/activitystreams#Public. For example:|||Example 10{ \"@context\": \"https://www.w3.org/ns/activitystreams\", \"id\": \"https://www.w3.org/ns/activitystreams#Public\", \"type\": \"Collection\" }|||Activities addressed to this special URI shall be accessible to all users, without authentication. Implementations MUST NOT deliver to the \"public\" special collection; it is not capable of receiving actual activities. However, actors MAY have a sharedInbox endpoint which is available for efficient shared delivery of public posts (as well as posts to followers-only); see 7.1.3 Shared Inbox Delivery.|||Note|||Compacting an ActivityStreams object using the ActivityStreams JSON-LD context might result in https://www.w3.org/ns/activitystreams#Public being represented as simply Public or as:Public which are valid representations of the Public collection. Implementations which treat ActivityStreams objects as simply JSON rather than converting an incoming activity over to a local context using JSON-LD tooling should be aware of this and should be prepared to accept all three representations.|||5.7 Likes Collection|||Every object MAY have a likes collection. This is a list of all Like activities with this object as the object property, added as a side effect. The likes collection MUST be either an OrderedCollection or a Collection and MAY be filtered on privileges of an authenticated user or as appropriate when no authentication is given.|||Note|||Care should be taken to not confuse the the likes collection with the similarly named but different liked collection. In sum:|||liked: Specifically a property of actors. This is a collection of Like activities performed by the actor, added to the collection as a side effect of delivery to the outbox.|||likes: May be a property of any object. This is a collection of Like activities referencing this object, added to the collection as a side effect of delivery to the inbox.|||5.8 Shares Collection|||Every object MAY have a shares collection. This is a list of all Announce activities with this object as the object property, added as a side effect. The shares collection MUST be either an OrderedCollection or a Collection and MAY be filtered on privileges of an authenticated user or as appropriate when no authentication is given.|||6. Client to Server Interactions|||Activities as defined by [ActivityStreams] are the core mechanism for creating, modifying and sharing content within the social graph.|||Client to server interaction takes place through clients posting Activities to an actor's outbox. To do this, clients MUST discover the URL of the actor's outbox from their profile and then MUST make an HTTP POST request to this URL with the Content-Type of application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\". Servers MAY interpret a Content-Type or Accept header of application/activity+json as equivalent to application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\" for client-to-server interactions. The request MUST be authenticated with the credentials of the user to whom the outbox belongs. The body of the POST request MUST contain a single Activity (which MAY contain embedded objects), or a single non-Activity object which will be wrapped in a Create activity by the server.|||Example 11: Submitting an Activity to the OutboxPOST /outbox/ HTTP/1.1 Host: dustycloud.org Authorization: Bearer XXXXXXXXXXX Content-Type: application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\" { \"@context\": [\"https://www.w3.org/ns/activitystreams\", {\"@language\": \"en\"}], \"type\": \"Like\", \"actor\": \"https://dustycloud.org/chris/\", \"name\": \"Chris liked 'Minimal ActivityPub update client'\", \"object\": \"https://rhiaro.co.uk/2016/05/minimal-activitypub\", \"to\": [\"https://rhiaro.co.uk/#amy\", \"https://dustycloud.org/followers\", \"https://rhiaro.co.uk/followers/\"], \"cc\": \"https://e14n.com/evan\" }|||If an Activity is submitted with a value in the id property, servers MUST ignore this and generate a new id for the Activity. Servers MUST return a 201 Created HTTP code, and unless the activity is transient, MUST include the new id in the Location header.|||Example 12: Outbox response to submitted ActivityHTTP/1.1 201 Created Location: https://dustycloud.org/likes/345|||The server MUST remove the bto and/or bcc properties, if they exist, from the ActivityStreams object before delivery, but MUST utilize the addressing originally stored on the bto / bcc properties for determining recipients in delivery.|||The server MUST then add this new Activity to the outbox collection. Depending on the type of Activity, servers may then be required to carry out further side effects. (However, there is no guarantee that time the Activity may appear in the outbox. The Activity might appear after a delay or disappear at any period). These are described per individual Activity below.|||Attempts to submit objects to servers not implementing client to server support SHOULD result in a 405 Method Not Allowed response.|||HTTP caching mechanisms [RFC7234] SHOULD be respected when appropriate, both in clients receiving responses from servers as well as servers sending responses to clients.|||6.1 Client Addressing|||Clients are responsible for addressing new Activities appropriately. To some extent, this is dependent upon the particular client implementation, but clients must be aware that the server will only forward new Activities to addressees in the to, bto, cc, bcc, and audience fields.|||The Followers Collection and/or the Public Collection are good choices for the default addressing of new Activities.|||Clients SHOULD look at any objects attached to the new Activity via the object, target, inReplyTo and/or tag fields, retrieve their actor or attributedTo properties, and MAY also retrieve their addressing properties, and add these to the to or cc fields of the new Activity being created. Clients MAY recurse through attached objects, but if doing so, SHOULD set a limit for this recursion. (Note that this does not suggest that the client should \"unpack\" collections of actors being addressed as individual recipients).|||Clients MAY give the user the chance to amend this addressing in the UI.|||For example, when Chris likes the following article by Amy:|||Example 13: An Article{ \"@context\": [\"https://www.w3.org/ns/activitystreams\", {\"@language\": \"en-GB\"}], \"id\": \"https://rhiaro.co.uk/2016/05/minimal-activitypub\", \"type\": \"Article\", \"name\": \"Minimal ActivityPub update client\", \"content\": \"Today I finished morph, a client for posting ActivityStreams2...\", \"attributedTo\": \"https://rhiaro.co.uk/#amy\", \"to\": \"https://rhiaro.co.uk/followers/\", \"cc\": \"https://e14n.com/evan\" }|||the like is generated by the client as:|||Example 14: A Like of the Article{ \"@context\": [\"https://www.w3.org/ns/activitystreams\", {\"@language\": \"en\"}], \"type\": \"Like\", \"actor\": \"https://dustycloud.org/chris/\", \"summary\": \"Chris liked 'Minimal ActivityPub update client'\", \"object\": \"https://rhiaro.co.uk/2016/05/minimal-activitypub\", \"to\": [\"https://rhiaro.co.uk/#amy\", \"https://dustycloud.org/followers\", \"https://rhiaro.co.uk/followers/\"], \"cc\": \"https://e14n.com/evan\" }|||The receiving outbox can then perform delivery to not only the followers of Chris (the liker), but also to Amy, and Amy's followers and Evan, both of whom received the original article.|||Clients submitting the following activities to an outbox MUST provide the object property in the activity: Create, Update, Delete, Follow, Add, Remove, Like, Block, Undo. Additionally, clients submitting the following activities to an outbox MUST also provide the target property: Add, Remove.|||6.2 Create Activity|||The Create activity is used when posting a new object. This has the side effect that the object embedded within the Activity (in the object property) is created.|||When a Create activity is posted, the actor of the activity SHOULD be copied onto the object's attributedTo field.|||A mismatch between addressing of the Create activity and its object is likely to lead to confusion. As such, a server SHOULD copy any recipients of the Create activity to its object upon initial distribution, and likewise with copying recipients from the object to the wrapping Create activity. Note that it is acceptable for the object's addressing to be changed later without changing the Create's addressing (for example via an Update activity).|||6.2.1 Object creation without a Create Activity|||For client to server posting, it is possible to submit an object for creation without a surrounding activity. The server MUST accept a valid [ActivityStreams] object that isn't a subtype of Activity in the POST request to the outbox. The server then MUST attach this object as the object of a Create Activity. For non-transient objects, the server MUST attach an id to both the wrapping Create and its wrapped Object.|||Note|||The Location value returned by the server should be the URL of the new Create activity (rather than the object).|||Any to, bto, cc, bcc, and audience properties specified on the object MUST be copied over to the new Create activity by the server.|||Example 15: Object with audience targeting{ \"@context\": \"https://www.w3.org/ns/activitystreams\", \"type\": \"Note\", \"content\": \"This is a note\", \"published\": \"2015-02-10T15:04:55Z\", \"to\": [\"https://example.org/~john/\"], \"cc\": [\"https://example.com/~erik/followers\", \"https://www.w3.org/ns/activitystreams#Public\"] } The above example could be converted to this:|||Example 16: Create Activity wrapper generated by the server{ \"@context\": \"https://www.w3.org/ns/activitystreams\", \"type\": \"Create\", \"id\": \"https://example.net/~mallory/87374\", \"actor\": \"https://example.net/~mallory\", \"object\": { \"id\": \"https://example.com/~mallory/note/72\", \"type\": \"Note\", \"attributedTo\": \"https://example.net/~mallory\", \"content\": \"This is a note\", \"published\": \"2015-02-10T15:04:55Z\", \"to\": [\"https://example.org/~john/\"], \"cc\": [\"https://example.com/~erik/followers\", \"https://www.w3.org/ns/activitystreams#Public\"] }, \"published\": \"2015-02-10T15:04:55Z\", \"to\": [\"https://example.org/~john/\"], \"cc\": [\"https://example.com/~erik/followers\", \"https://www.w3.org/ns/activitystreams#Public\"] }|||6.3 Update Activity|||The Update activity is used when updating an already existing object. The side effect of this is that the object MUST be modified to reflect the new structure as defined in the update activity, assuming the actor has permission to update this object.|||6.3.1 Partial Updates|||For client to server interactions, updates are partial; rather than updating the document all at once, any key value pair supplied is used to replace the existing value with the new value. This only applies to the top-level fields of the updated object. A special exception is for when the value is the json null type; this means that this field should be removed from the server's representation of the object.|||Note that this behavior is for client to server interaction where the client is posting to the server only. Server to server interaction and updates from the server to the client should contain the entire new representation of the object, after the partial update application has been applied. See the description of the Update activity for server to server interactions for more details.|||6.4 Delete Activity|||The Delete activity is used to delete an already existing object. The side effect of this is that the server MAY replace the object with a Tombstone of the object that will be displayed in activities which reference the deleted object. If the deleted object is requested the server SHOULD respond with either the HTTP 410 Gone status code if a Tombstone object is presented as the response body, otherwise respond with a HTTP 404 Not Found.|||A deleted object:|||Example 17{ \"@context\": \"https://www.w3.org/ns/activitystreams\", \"id\": \"https://example.com/~alice/note/72\", \"type\": \"Tombstone\", \"published\": \"2015-02-10T15:04:55Z\", \"updated\": \"2015-02-10T15:04:55Z\", \"deleted\": \"2015-02-10T15:04:55Z\" }|||6.5 Follow Activity|||The Follow activity is used to subscribe to the activities of another actor.|||The side effect of receiving this in an outbox is that the server SHOULD add the object to the actor's following Collection when and only if an Accept activity is subsequently received with this Follow activity as its object.|||6.6 Add Activity|||Upon receipt of an Add activity into the outbox, the server SHOULD add the object to the collection specified in the target property, unless:|||the target is not owned by the receiving server, and thus they are not authorized to update it.|||the object is not allowed to be added to the target collection for some other reason, at the receiving server's discretion.|||6.7 Remove Activity|||Upon receipt of a Remove activity into the outbox, the server SHOULD remove the object from the collection specified in the target property, unless:|||the target is not owned by the receiving server, and thus they are not authorized to update it.|||the object is not allowed to be removed from the target collection for some other reason, at the receiving server's discretion.|||6.8 Like Activity|||The Like activity indicates the actor likes the object.|||The side effect of receiving this in an outbox is that the server SHOULD add the object to the actor's liked Collection.|||6.9 Block Activity|||The Block activity is used to indicate that the posting actor does not want another actor (defined in the object property) to be able to interact with objects posted by the actor posting the Block activity. The server SHOULD prevent the blocked user from interacting with any object posted by the actor.|||Servers SHOULD NOT deliver Block Activities to their object.|||6.10 Undo Activity|||The Undo activity is used to undo a previous activity. See the Activity Vocabulary documentation on Inverse Activities and \"Undo\". For example, Undo may be used to undo a previous Like, Follow, or Block. The undo activity and the activity being undone MUST both have the same actor. Side effects should be undone, to the extent possible. For example, if undoing a Like, any counter that had been incremented previously should be decremented appropriately.|||There are some exceptions where there is an existing and explicit \"inverse activity\" which should be used instead. Create based activities should instead use Delete, and Add activities should use Remove.|||6.11 Delivery|||Federated servers MUST perform delivery on all Activities posted to the outbox according to outbox delivery.|||6.12 Uploading Media|||This section is non-normative.|||Servers MAY support uploading document types to be referenced in activites, such as images, video or other binary data, but the precise mechanism is out of scope for this version of ActivityPub. The Social Web Community Group is refining the protocol in the ActivityPub Media Upload report.|||7. Server to Server Interactions|||Servers communicate with other servers and propagate information across the social graph by posting activities to actors' inbox endpoints. An Activity sent over the network SHOULD have an id, unless it is intended to be transient (in which case it MAY omit the id).|||POST requests (eg. to the inbox) MUST be made with a Content-Type of application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\" and GET requests (see also 3.2 Retrieving objects) with an Accept header of application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\". Servers SHOULD interpret a Content-Type or Accept header of application/activity+json as equivalent to application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\" for server-to-server interactions.|||In order to propagate updates throughout the social graph, Activities are sent to the appropriate recipients. First, these recipients are determined through following the appropriate links between objects until you reach an actor, and then the Activity is inserted into the actor's inbox (delivery). This allows recipient servers to:|||conduct any side effects related to the Activity (for example, notification that an actor has liked an object is used to update the object's like count);|||deliver the Activity to recipients of the original object, to ensure updates are propagated to the whole social graph (see inbox delivery).|||Delivery is usually triggered by, for example:|||an Activity being created in an actor's outbox with their Followers Collection as the recipient.|||an Activity being created in an actor's outbox with directly addressed recipients.|||an Activity being created in an actors's outbox with user-curated collections as recipients.|||an Activity being created in an actor's outbox or inbox which references another object.|||Servers performing delivery to the inbox or sharedInbox properties of actors on other servers MUST provide the object property in the activity: Create, Update, Delete, Follow, Add, Remove, Like, Block, Undo. Additionally, servers performing server to server delivery of the following activities MUST also provide the target property: Add, Remove.|||HTTP caching mechanisms [RFC7234] SHOULD be respected when appropriate, both when receiving responses from other servers as well as sending responses to other servers.|||7.1 Delivery|||The following is required by federated servers communicating with other federated servers only.|||An activity is delivered to its targets (which are actors) by first looking up the targets' inboxes and then posting the activity to those inboxes. Targets for delivery are determined by checking the ActivityStreams audience targeting; namely, the to, bto, cc, bcc, and audience fields of the activity.|||The inbox is determined by first retrieving the target actor's JSON-LD representation and then looking up the inbox property. If a recipient is a Collection or OrderedCollection, then the server MUST dereference the collection (with the user's credentials) and discover inboxes for each item in the collection. Servers MUST limit the number of layers of indirections through collections which will be performed, which MAY be one.|||Servers MUST de-duplicate the final recipient list. Servers MUST also exclude actors from the list which are the same as the actor of the Activity being notified about. That is, actors shouldn't have their own activities delivered to themselves.|||Note: Silent and private activities|||What to do when there are no recipients specified is not defined, however it's recommended that if no recipients are specified the object remains completely private and access controls restrict the access to object. If the object is just sent to the \"public\" collection the object is not delivered to any actors but is publicly viewable in the actor's outbox.|||An HTTP POST request (with authorization of the submitting user) is then made to the inbox, with the Activity as the body of the request. This Activity is added by the receiver as an item in the inbox OrderedCollection. Attempts to deliver to an inbox on a non-federated server SHOULD result in a 405 Method Not Allowed response.|||For federated servers performing delivery to a third party server, delivery SHOULD be performed asynchronously, and SHOULD additionally retry delivery to recipients if it fails due to network error.|||Note: Activities being distributed between actors on the same origin may use any internal mechanism, and are not required to use HTTP.|||Note: Relationship to Linked Data Notifications|||While it is not required reading to understand this specification, it is worth noting that ActivityPub's targeting and delivery mechanism overlaps with the Linked Data Notifications specification, and the two specifications may interoperably combined. In particular, the inbox property is the same between ActivityPub and Linked Data Notifications, and the targeting and delivery systems described in this document are supported by Linked Data Notifications. In addition to JSON-LD compacted ActivityStreams documents, Linked Data Notifications also supports a number of RDF serializations which are not required for ActivityPub implementations. However, ActivityPub implementations which wish to be more broadly compatible with Linked Data Notifications implementations may wish to support other RDF representations.|||7.1.1 Outbox Delivery Requirements for Server to Server|||When objects are received in the outbox (for servers which support both Client to Server interactions and Server to Server Interactions), the server MUST target and deliver to:|||The to, bto, cc, bcc or audience fields if their values are individuals or Collections owned by the actor.|||These fields will have been populated appropriately by the client which posted the Activity to the outbox.|||7.1.2 Forwarding from Inbox|||Note: Forwarding to avoid the ghost replies problem|||The following section is to mitigate the \"ghost replies\" problem which occasionally causes problems on federated networks. This problem is best demonstrated with an example.|||Alyssa makes a post about her having successfully presented a paper at a conference and sends it to her followers collection, which includes her friend Ben. Ben replies to Alyssa's message congratulating her and includes her followers collection on the recipients. However, Ben has no access to see the members of Alyssa's followers collection, so his server does not forward his messages to their inbox. Without the following mechanism, if Alyssa were then to reply to Ben, her followers would see Alyssa replying to Ben without having ever seen Ben interacting. This would be very confusing!|||When Activities are received in the inbox, the server needs to forward these to recipients that the origin was unable to deliver them to. To do this, the server MUST target and deliver to the values of to, cc, and/or audience if and only if all of the following are true:|||This is the first time the server has seen this Activity.|||The values of to, cc, and/or audience contain a Collection owned by the server.|||The values of inReplyTo, object, target and/or tag are objects owned by the server. The server SHOULD recurse through these values to look for linked objects owned by the server, and SHOULD set a maximum limit for recursion (ie. the point at which the thread is so deep the recipients followers may not mind if they are no longer getting updates that don't directly involve the recipient). The server MUST only target the values of to, cc, and/or audience on the original object being forwarded, and not pick up any new addressees whilst recursing through the linked objects (in case these addressees were purposefully amended by or via the client).|||The server MAY filter its delivery targets according to implementation-specific rules (for example, spam filtering).|||7.1.3 Shared Inbox Delivery|||For servers hosting many actors, delivery to all followers can result in an overwhelming number of messages sent. Some servers would also like to display a list of all messages posted publicly to the \"known network\". Thus ActivityPub provides an optional mechanism for serving these two use cases.|||When an object is being delivered to the originating actor's followers, a server MAY reduce the number of receiving actors delivered to by identifying all followers which share the same sharedInbox who would otherwise be individual recipients and instead deliver objects to said sharedInbox. Thus in this scenario, the remote/receiving server participates in determining targeting and performing delivery to specific inboxes.|||Additionally, if an object is addressed to the Public special collection, a server MAY deliver that object to all known sharedInbox endpoints on the network.|||Origin servers sending publicly addressed activities to sharedInbox endpoints MUST still deliver to actors and collections otherwise addressed (through to, bto, cc, bcc, and audience) which do not have a sharedInbox and would not otherwise receive the activity through the sharedInbox mechanism.|||7.2 Create Activity|||Receiving a Create activity in an inbox has surprisingly few side effects; the activity should appear in the actor's inbox and it is likely that the server will want to locally store a representation of this activity and its accompanying object. However, this mostly happens in general with processing activities delivered to an inbox anyway.|||7.3 Update Activity|||For server to server interactions, an Update activity means that the receiving server SHOULD update its copy of the object of the same id to the copy supplied in the Update activity. Unlike the client to server handling of the Update activity, this is not a partial update but a complete replacement of the object.|||The receiving server MUST take care to be sure that the Update is authorized to modify its object. At minimum, this may be done by ensuring that the Update and its object are of same origin.|||7.4 Delete Activity|||The side effect of receiving this is that (assuming the object is owned by the sending actor / server) the server receiving the delete activity SHOULD remove its representation of the object with the same id, and MAY replace that representation with a Tombstone object.|||(Note that after an activity has been transmitted from an origin server to a remote server, there is nothing in the ActivityPub protocol that can enforce remote deletion of an object's representation).|||7.5 Follow Activity|||The side effect of receiving this in an inbox is that the server SHOULD generate either an Accept or Reject activity with the Follow as the object and deliver it to the actor of the Follow. The Accept or Reject MAY be generated automatically, or MAY be the result of user input (possibly after some delay in which the user reviews). Servers MAY choose to not explicitly send a Reject in response to a Follow, though implementors ought to be aware that the server sending the request could be left in an intermediate state. For example, a server might not send a Reject to protect a user's privacy.|||In the case of receiving an Accept referencing this Follow as the object, the server SHOULD add the actor to the object actor's Followers Collection. In the case of a Reject, the server MUST NOT add the actor to the object actor's Followers Collection.|||Note|||Sometimes a successful Follow subscription may occur but at some future point delivery to the follower fails for an extended period of time. Implementations should be aware that there is no guarantee that actors on the network will remain reachable and should implement accordingly. For instance, if attempting to deliver to an actor for perhaps six months while the follower remains unreachable, it is reasonable that the delivering server remove the subscriber from the followers list. Timeframes and behavior for dealing with unreachable actors are left to the discretion of the delivering server.|||7.6 Accept Activity|||The side effect of receiving this in an inbox is determined by the type of the object received, and it is possible to accept types not described in this document (for example, an Offer).|||If the object of an Accept received to an inbox is a Follow activity previously sent by the receiver, the server SHOULD add the actor to the receiver's Following Collection.|||7.7 Reject Activity|||The side effect of receiving this in an inbox is determined by the type of the object received, and it is possible to reject types not described in this document (for example, an Offer).|||If the object of a Reject received to an inbox is a Follow activity previously sent by the receiver, this means the recipient did not approve the Follow request. The server MUST NOT add the actor to the receiver's Following Collection.|||7.8 Add Activity|||Upon receipt of an Add activity into the inbox, the server SHOULD add the object to the collection specified in the target property, unless:|||the target is not owned by the receiving server, and thus they can't update it.|||the object is not allowed to be added to the target collection for some other reason, at the receiver's discretion.|||7.9 Remove Activity|||Upon receipt of a Remove activity into the inbox, the server SHOULD remove the object from the collection specified in the target property, unless:|||the target is not owned by the receiving server, and thus they can't update it.|||the object is not allowed to be removed to the target collection for some other reason, at the receiver's discretion.|||7.10 Like Activity|||The side effect of receiving this in an inbox is that the server SHOULD increment the object's count of likes by adding the received activity to the likes collection if this collection is present.|||7.11 Announce Activity (sharing)|||Upon receipt of an Announce activity in an inbox, a server SHOULD increment the object's count of shares by adding the received activity to the shares collection if this collection is present.|||Note|||The Announce activity is effectively what is known as \"sharing\", \"reposting\", or \"boosting\" in other social networks.|||7.12 Undo Activity|||The Undo activity is used to undo the side effects of previous activities. See the ActivityStreams documentation on Inverse Activities and \"Undo\". The scope and restrictions of the Undo activity are the same as for the Undo activity in the context of client to server interactions, but applied to a federated context.|||A. Internationalization|||This section is non-normative.|||Building an international base of users is important in a federated network. ActivityStreams provides tooling for internationalization of content, which should be used whenever possible. However, it can be difficult for implementations to determine which @language property to provide for user-submitted content. The W3C Internationalization group provides some guidance on language detection.|||B. Security Considerations|||This section is non-normative.|||B.1 Authentication and Authorization|||ActivityPub uses authentication for two purposes; first, to authenticate clients to servers, and secondly in federated implementations to authenticate servers to each other.|||Unfortunately at the time of standardization, there are no strongly agreed upon mechanisms for authentication. Some possible directions for authentication are laid out in the Social Web Community Group Authentication and Authorization best practices report.|||B.2 Verification|||Servers should not trust client submitted content, and federated servers also should not trust content received from a server other than the content's origin without some form of verification.|||Servers should be careful to verify that new content is really posted by the actor that claims to be posting it, and that the actor has permission to update the resources it claims to. See also 3. Objects and B.1 Authentication and Authorization.|||B.3 Accessing localhost URIs|||It is often convenient while developing to test against a process running on localhost. However, permitting requests to localhost in a production client or server instance can be dangerous. Making requests to URIs on localhost which do not require authorization may unintentionally access or modify resources assumed to be protected to be usable by localhost-only.|||If your ActivityPub server or client does permit making requests to localhost URIs for development purposes, consider making it a configuration option which defaults to off.|||B.4 URI Schemes|||There are many types of URIs aside from just http and https. Some libraries which handle fetching requests at various URI schemes may try to be smart and reference schemes which may be undesirable, such as file. Client and server authors should carefully check how their libraries handle requests, and potentially whitelist only certain safe URI types, such as http and https.|||B.5 Recursive Objects|||Servers should set a limit on how deep to recurse while resolving objects, or otherwise specially handle ActivityStreams objects with recursive references. Failure to properly do so may result in denial-of-service security vulnerabilities.|||B.6 Spam|||Spam is a problem in any network, perhaps especially so in federated networks. While no specific mechanism for combating spam is provided in ActivityPub, it is recommended that servers filter incoming content both by local untrusted users and any remote users through some sort of spam filter.|||B.7 Federation denial-of-service|||Servers should implement protections against denial-of-service attacks from other, federated servers. This can be done using, for example, some kind of ratelimiting mechanism. Servers should be especially careful to implement this protection around activities that involve side effects. Servers SHOULD also take care not to overload servers with submissions, for example by using an exponential backoff strategy.|||B.8 Client-to-server ratelimiting|||Servers should ratelimit API client submissions. This serves two purposes:|||It prevents malicious clients from conducting denial-of-service attacks on the server.|||It ensures that the server will not distribute so many activities that it triggers another server's denial-of-service protections.|||B.9 Client-to-server response denial-of-service|||In order to prevent a client from being overloaded by oversized Collections, servers should take care to limit the size of Collection pages they return to clients. Clients should still be prepared to limit the size of responses they are willing to handle in case they connect to malicious or compromised servers, for example by timing out and generating an error.|||B.10 Sanitizing Content|||Any activity field being rendered for browsers (or other rich text enabled applications) should take care to sanitize fields containing markup to prevent cross site scripting attacks.|||B.11 Not displaying bto and bcc properties|||bto and bcc already must be removed for delivery, but servers are free to decide how to represent the object in their own storage systems. However, since bto and bcc are only intended to be known/seen by the original author of the object/activity, servers should omit these properties during display as well.|||C. Acknowledgements|||This section is non-normative.|||This specification comes from years of hard work and experience by a number of communities exploring the space of federation on the web. In particular, much of this specification is informed by OStatus and the Pump API, as pioneered by StatusNet (now GNU Social) and Pump.io. Both of those initiatives were the product of many developers' hard work, but more than anyone, Evan Prodromou has been a constant leader in this space, and it is unlikely that ActivityPub would exist in something resembling its current state without his hard work.|||Erin Shepherd built the initial version of this specification, borrowed from the ideas in the Pump API document, mostly as a complete rewrite of text, but sharing most of the primary ideas while switching from ActivityStreams 1 to ActivityStreams 2.|||Jessica Tallon and Christine Lemmer-Webber took over as editors when the standard moved to the W3C Social Working Group and did the majority of transition from Erin Shepherd's document to its current state as ActivityPub. Much of the document was rewritten and reorganized under the long feedback process of the Social Working Group.|||ActivityPub has been shaped by the careful input of many members in the W3C Social Working Group. ActivityPub especially owes a great debt to Amy Guy, who has done more than anyone to map the ideas across the different Social Working Group documents through her work on [Social-Web-Protocols]. Amy also laid out the foundations for a significant refactoring of the ActivityPub spec while sprinting for four days with Christopher Allan Webber. These revisions lead to cleaner separation between the client to server and server components, along with clarity about ActivityPub's relationship to [LDN], among many other improvements. Special thanks also goes to Benjamin Goering for putting together the implementation report template. We also thank mray for producing the spectacular tutorial illustrations (which are licensed under the same license as the rest of this document).|||Many people also helped ActivityPub along through careful review. In particular, thanks to: Aaron Parecki, AJ Jordan, Benjamin Goering, Caleb Langeslag, Elsa Balderrama, elf Pavlik, Eugen Rochko, Erik Wilde, Jason Robinson, Manu Sporny, Michael Vogel, Mike Macgirvin, nightpool, Puck Meerburg, Sandro Hawke, Sarven Capadisli, Tantek Çelik, and Yuri Volkov.|||This document is dedicated to all citizens of planet Earth. You deserve freedom of communication; we hope we have contributed in some part, however small, towards that goal and right.|||D. References|||D.1 Normative references|||[Activity-Vocabulary]Activity Vocabulary. J. Snell. ActivityStreams Working Group. Editors Draft. URL: https://www.w3.org/TR/activitystreams-vocabulary/|||[ActivityStreams]Activity Streams 2.0. J. Snell. ActivityStreams Working Group. Editors Draft. URL: https://www.w3.org/TR/activitystreams-core/|||[JSON-LD]JSON-LD 1.0. Manu Sporny; Gregg Kellogg; Markus Lanthaler. W3C. 16 January 2014. W3C Recommendation. URL: https://www.w3.org/TR/json-ld/|||[LDN]Linked Data Notifications. Sarven Capadisli; Amy Guy. W3C. 2 May 2017. W3C Recommendation. URL: https://www.w3.org/TR/ldn/|||[RFC2119]Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. IETF. March 1997. Best Current Practice. URL: https://tools.ietf.org/html/rfc2119|||[RFC7231]Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content. R. Fielding, Ed.; J. Reschke, Ed.. IETF. June 2014. Proposed Standard. URL: https://tools.ietf.org/html/rfc7231|||[RFC7234]Hypertext Transfer Protocol (HTTP/1.1): Caching. R. Fielding, Ed.; M. Nottingham, Ed.; J. Reschke, Ed.. IETF. June 2014. Proposed Standard. URL: https://tools.ietf.org/html/rfc7234|||D.2 Informative references|||[Micropub]Micropub. Aaron Parecki. W3C. 23 May 2017. W3C Recommendation. URL: https://www.w3.org/TR/micropub/|||[RFC6749]The OAuth 2.0 Authorization Framework. D. Hardt, Ed.. IETF. October 2012. Proposed Standard. URL: https://tools.ietf.org/html/rfc6749|||[RFC6750]The OAuth 2.0 Authorization Framework: Bearer Token Usage. M. Jones; D. Hardt. IETF. October 2012. Proposed Standard. URL: https://tools.ietf.org/html/rfc6750|||[Social-Web-Protocols]Social Web Protocols. Amy Guy. W3C. 25 December 2017. W3C Note. URL: https://www.w3.org/TR/social-web-protocols/|||↑",
                    "bookmark_id": 14,
                    "bookmark": {
                        "id": 0,
                        "created_at": "0001-01-01T00:00:00Z",
                        "updated_at": "0001-01-01T00:00:00Z",
                        "deleted_at": null,
                        "url": "",
                        "title": "",
                        "notes": "",
                        "domain": "",
                        "favicon": "",
                        "tags": null,
                        "snapshots": null,
                        "collection": null,
                        "public": false,
                        "unread": false,
                        "user_id": 0
                    },
                    "size": 161340,
                    "resources": null
                }
            ],
            "collection": null,
            "public": true,
            "unread": false,
            "user_id": 1
        },
        {
            "id": 13,
            "created_at": "2025-05-08T14:08:28.390755592Z",
            "updated_at": "2025-05-08T14:08:28.390755592Z",
            "deleted_at": null,
            "url": "https://activitypub.rocks/",
            "title": "ActivityPub Rocks!",
            "notes": "ActivityPub is a decentralized social networking protocol based on the ActivityStreams 2.0 data format.",
            "domain": "activitypub.rocks",
            "favicon": "",
            "tags": [
                {
                    "id": 17,
                    "created_at": "2025-05-08T14:08:28.132535627Z",
                    "updated_at": "2025-05-08T14:08:28.132535627Z",
                    "deleted_at": null,
                    "text": "activitypub",
                    "bookmarks": null
                }
            ],
            "snapshots": [
                {
                    "id": 13,
                    "created_at": "2025-05-08T14:08:28.41231654Z",
                    "updated_at": "2025-05-08T14:08:29.251868048Z",
                    "deleted_at": null,
                    "title": "",
                    "key": "f87e6a65f60bda591609e7e89f702096dad1f86e258861e3871ee96fe89db33d",
                    "text": "Don't you miss the days when the web really was the world's greatest decentralized network? Before everything got locked down into a handful of walled gardens? So do we.|||Enter ActivityPub! ActivityPub is a decentralized social networking protocol based on the ActivityStreams 2.0 data format. ActivityPub is an official W3C recommended standard published by the W3C Social Web Working Group. It provides a client to server API for creating, updating and deleting content, as well as a federated server to server API for delivering notifications and subscribing to content.|||Sounds exciting? Dive in!|||==\u003e Latest published version \u003c==|||==\u003e Latest editor's draft \u003c==|||Or, are you a user looking for ActivityPub software to use? Check out this guide for ActivityPub users (community edited)!|||~= Hey, Implementers! =~|||We're so stoked to have you implementing ActivityPub! To make sure ActivityPub implementations work together, we have:|||Guide for new ActivityPub implementers -- Community edited and unofficial, but useful!|||A test suite: -- Make sure your application works right according to the ActivityPub standard.|||Implementation reports: -- See the implementation coverage of applications which implemented ActivityPub during the standardization process.|||Looking to discuss implementing ActivityPub? You can join the #social IRC channel on irc.w3.org! See also SocialHub, a community-run forum to discuss ActivityPub developments and ideas, and the Social CG, a W3C Community Group to continue the work of advancing the federated social web... including ActivityPub!|||-=* ActivityPub News *=-|||Some (long overdue) site updates|||Mon 04 January 2021|||Let us meet on SocialHub!|||Thu 26 December 2019|||ActivityPub reaches W3C Recommendation status! Everybody party!|||Tue 20 March 2018|||ActivityPub reaches Proposed Recommendation status!|||Fri 08 December 2017|||Test suite up, implementation reports page up... let's get more reports in!|||Mon 06 November 2017|||Mastodon launches their ActivityPub support, and a new CR!|||Sun 10 September 2017|||New tutorial, new logo!|||Tue 09 May 2017|||Help submit implementation reports!|||Sun 09 April 2017|||ActivityPub reaches Candidate Recommendation status!|||Thu 17 November 2016|||activitypub.rocks launches!|||Mon 14 November 2016|||Site contents dual licensed under Creative Commons Attribution-Sharealike 4.0 International and the GNU GPL, version 3 or any later version. ActivityPub logo by mray, released into public domain under CC0 1.0. Powered by Haunt.",
                    "bookmark_id": 13,
                    "bookmark": {
                        "id": 0,
                        "created_at": "0001-01-01T00:00:00Z",
                        "updated_at": "0001-01-01T00:00:00Z",
                        "deleted_at": null,
                        "url": "",
                        "title": "",
                        "notes": "",
                        "domain": "",
                        "favicon": "",
                        "tags": null,
                        "snapshots": null,
                        "collection": null,
                        "public": false,
                        "unread": false,
                        "user_id": 0
                    },
                    "size": 781765,
                    "resources": null
                }
            ],
            "collection": null,
            "public": true,
            "unread": false,
            "user_id": 1
        },
        {
            "id": 12,
            "created_at": "2025-05-08T13:51:08.330503215Z",
            "updated_at": "2025-05-08T13:51:08.330503215Z",
            "deleted_at": null,
            "url": "https://en.wikipedia.org/wiki/Creative_Commons_license",
            "title": "Creative Commons license - Wikipedia",
            "notes": "A Creative Commons (CC) license is one of several public copyright licenses that enable the free distribution of an otherwise copyrighted \"work\"",
            "domain": "en.wikipedia.org",
            "favicon": "data:image/vnd.microsoft.icon;base64,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",
            "tags": [
                {
                    "id": 1,
                    "created_at": "2025-04-02T14:11:26.52753391Z",
                    "updated_at": "2025-04-02T14:11:26.52753391Z",
                    "deleted_at": null,
                    "text": "wikipedia",
                    "bookmarks": null
                },
                {
                    "id": 14,
                    "created_at": "2025-05-08T13:32:57.497130706Z",
                    "updated_at": "2025-05-08T13:32:57.497130706Z",
                    "deleted_at": null,
                    "text": "license",
                    "bookmarks": null
                }
            ],
            "snapshots": [
                {
                    "id": 12,
                    "created_at": "2025-05-08T13:51:08.378959164Z",
                    "updated_at": "2025-05-08T13:51:09.268811802Z",
                    "deleted_at": null,
                    "title": "",
                    "key": "a16c9162d88a06d79dcb647d6a9f5c5ffe017db3fd7ddae7aa928a69521edd11",
                    "text": "Search|||Donate|||Create account|||Log in|||Contents hide|||(Top)|||History|||International use|||Applicable works|||Types of licenses|||Version 4.0|||Rights and obligations|||Legal aspects|||Works with a Creative Commons license|||Unicode symbols|||Case law database|||See also|||Notes|||References|||External links|||Creative Commons license|||63 languages|||Tools|||Appearance hide|||Text|||Small|||Standard|||Large|||Width|||Standard|||Wide|||Color (beta)|||Automatic|||Light|||Dark|||From Wikipedia, the free encyclopedia|||This article is about the Creative Commons licenses. For the organization that produced them, see Creative Commons.|||Creative Commons logo|||9:56CCA video explaining how Creative Commons licenses can be used in conjunction with commercial licensing arrangements|||A Creative Commons (CC) license is one of several public copyright licenses that enable the free distribution of an otherwise copyrighted \"work\".a A CC license is used when an author wants to give other people the right to share, use, and build upon a work that the author has created. CC provides an author flexibility (for example, they might choose to allow only non-commercial uses of a given work) and protects the people who use or redistribute an author's work from concerns of copyright infringement as long as they abide by the conditions that are specified in the license by which the author distributes the work.12345|||There are several types of Creative Commons licenses. Each license differs by several combinations that condition the terms of distribution. They were initially released on December 16, 2002, by Creative Commons, a U.S. non-profit corporation founded in 2001. There have also been five versions of the suite of licenses, numbered 1.0 through 4.0.6 Released in November 2013, the 4.0 license suite is the most current. While the Creative Commons license was originally grounded in the American legal system, there are now several Creative Commons jurisdiction ports which accommodate international laws.78|||In October 2014, the Open Knowledge Foundation approved the Creative Commons CC BY, CC BY-SA and CC0 licenses as conformant with the \"Open Definition\" for content and data.91011|||Historyedit|||Aaron Swartz and Lawrence Lessig at the 2002 event for the first release of the licenses|||Lawrence Lessig and Eric Eldred designed the Creative Commons License (CCL) in 2001 because they saw a need for a license between the existing modes of copyright and public domain status. Version 1.0 of the licenses was officially released on 16 December 2002.12|||Originsedit|||The CCL allows inventors to keep the rights to their innovations while also allowing for some external use of the invention.13 The CCL emerged as a reaction to the decision in Eldred v. Ashcroft, in which the United States Supreme Court ruled constitutional provisions of the Copyright Term Extension Act that extended the copyright term of works to be the last living author's lifespan plus an additional 70 years.13|||License portingedit|||The original non-localized Creative Commons licenses were written with the U.S. legal system in mind; therefore, the wording may be incompatible with local legislation in other jurisdictions, rendering the licenses unenforceable there. To address this issue, Creative Commons asked its affiliates to translate the various licenses to reflect local laws in a process called \"porting\".14 As of July 2011, Creative Commons licenses have been ported to over 50 jurisdictions worldwide.15|||International useedit|||Chinese useedit|||Working with Creative Commons, the Chinese government adapted the Creative Commons License to the Chinese context, replacing the individual monetary compensation of U.S. copyright law with incentives to Chinese innovators to innovate as a social contribution.16|||Applicable worksedit|||3:08CCWanna Work Together? animation by Creative Commons|||The second version of the Mayer and Bettle promotional animation explaining Creative Commons with Jamendo as an example|||Work licensed under a Creative Commons license is governed by applicable copyright law.17 This allows Creative Commons licenses to be applied to all work falling under copyright, including: books, plays, movies, music, articles, photographs, blogs, and websites.|||Softwareedit|||While software is also governed by copyright law and CC licenses are applicable, the CC recommends against using it in software specifically due to backward-compatibility limitations with existing commonly used software licenses.1819 Instead, developers may resort to use more software-friendly free and open-source software (FOSS) software licenses. Outside the FOSS licensing use case for software there are several usage examples to utilize CC licenses to specify a \"Freeware\" license model; examples are The White Chamber, Mari0 or Assault Cube.20 Despite the status of CC0 as the most free copyright license, the Free Software Foundation does not recommend releasing software into the public domain using the CC0 due to patent concerns.21|||However, application of a Creative Commons license may not modify the rights allowed by fair use or fair dealing or exert restrictions which violate copyright exceptions.22 Furthermore, Creative Commons licenses are non-exclusive and non-revocable.23 Any work or copies of the work obtained under a Creative Commons license may continue to be used under that license.24|||When works are protected by more than one Creative Commons license, the user may choose any of them.25|||Preconditionsedit|||The author, or the licensor in case the author did a contractual transfer of rights, needs to have the exclusive rights on the work. If the work has already been published under a public license, it can be uploaded by any third party, once more on another platform, by using a compatible license, and making reference and attribution to the original license (e.g. by referring to the URL of the original license).26|||Consequencesedit|||The license is non-exclusive, royalty-free, and unrestricted in terms of territory and duration, so it is irrevocable, unless a new license is granted by the author after the work has been significantly modified. Any use of the work that is not covered by other copyright rules triggers the public license. Upon activation of the license, the licensee must adhere to all conditions of the license, otherwise the license agreement is illegitimate, and the licensee would commit a copyright infringement. The author, or the licensor as a proxy, has the legal rights to act upon any copyright infringement. The licensee has a limited period to correct any non-compliance.26|||Types of licenses edit|||Creative commons license spectrum between public domain (top) and all rights reserved (bottom). Left side indicates the use-cases allowed, right side the license components. The dark green area indicates Free Cultural Works compatible licenses, the two green areas compatibility with the Remix culture.|||CC license usage in 2014 (top and middle), \"Free cultural works\" compatible license usage 2010 to 2014 (bottom)|||Four rightsedit|||The CC licenses all grant \"baseline rights\", such as the right to distribute the copyrighted work worldwide for non-commercial purposes and without modification.27 In addition, different versions of license prescribe different rights, as shown in this table:28|||Icon|||Right|||Description|||Attribution (BY)|||Licensees may copy, distribute, display, perform and make derivative works and remixes based on it only if they give the author or licensor the credits (attribution) in the manner specified by these. Since version 2.0, all Creative Commons licenses require attribution to the creator and include the BY element. The letters BY are not an abbreviation, unlike the other rights.|||Share-alike (SA)|||Licensees may distribute derivative works only under a license identical to (\"not more restrictive than\") the license that governs the original work. (See also Copyleft.) Without share-alike, derivative works might be sublicensed with compatible but more restrictive license clauses, e.g. CC BY to CC BY-NC.|||Non-commercial (NC)|||Licensees may copy, distribute, display, perform the work and make derivative works and remixes based on it only for non-commercial purposes.|||No derivative works (ND)|||Licensees may copy, distribute, display and perform only verbatim copies of the work, not derivative works and remixes based on it. Since version 4.0, derivative works are allowed but must not be shared.|||The last two clauses are not free content licenses, according to definitions such as DFSG or the Free Software Foundation's standards, and cannot be used in contexts that require these freedoms, such as Wikipedia. For software, Creative Commons includes three free licenses created by other institutions: the BSD License, the GNU LGPL, and the GNU GPL.29|||Mixing and matching these conditions produces sixteen possible combinations, of which eleven are valid Creative Commons licenses and five are not. Of the five invalid combinations, four include both the \"ND\" and \"SA\" clauses, which are mutually exclusive; and one includes none of the clauses. Of the eleven valid combinations, the five that lack the \"BY\" clause have been retired because 98% of licensors requested attribution, though they do remain available for reference on the website.303132 This leaves six regularly used licenses plus the CC0 public domain declaration.|||Six regularly used licensesedit|||The six licenses in most frequent use are shown in the following table. Among them, those accepted by the Wikimedia Foundation – the public domain dedication and two attribution (BY and BY-SA) licenses – allow the sharing and remixing (creating derivative works), including for commercial use, so long as attribution is given.323334|||License name|||Abbreviation|||Icon|||Attribution required|||Allows remix culture|||Allows commercial use|||Allows Free Cultural Works|||Meets the OKF 'Open Definition'|||Attribution|||CC BY|||Yes|||Yes|||Yes|||Yes|||Yes|||Attribution-ShareAlike|||CC BY-SA|||Yes|||Yes|||Yes|||Yes|||Yes|||Attribution-NonCommercial|||CC BY-NC|||Yes|||Yes|||No|||No|||No|||Attribution-NonCommercial-ShareAlike|||CC BY-NC-SA|||Yes|||Yes|||No|||No|||No|||Attribution-NoDerivatives|||CC BY-ND|||Yes|||No|||Yes|||No|||No|||Attribution-NonCommercial-NoDerivatives|||CC BY-NC-ND|||Yes|||No|||No|||No|||No|||Zero, public domain edit|||\"CC0\" redirects here and is not to be confused with CCO (disambiguation).|||Tool name|||Abbreviation|||Icon|||Attribution required|||Allows remix culture|||Allows commercial use|||Allows Free Cultural Works|||Meets the OKF 'Open Definition'|||\"No Rights Reserved\"|||CC0|||No|||Yes|||Yes|||Yes|||Yes|||CC zero public domain dedication tool logo35|||Creative Commons Public Domain Mark. Indicates works which have already fallen into (or were given to) the public domain.|||Besides copyright licenses, Creative Commons also offers CC0, a tool for relinquishing copyright and releasing material into the public domain.34 CC0 is a legal tool for waiving as many rights as legally possible.36 Or, when not legally possible, CC0 acts as fallback as public domain equivalent license.36 Development of CC0 began in 200737 and it was released in 2009.3839 A major target of the license was the scientific data community.40|||In 2010, Creative Commons announced its Public Domain Mark,41 a tool for labeling works already in the public domain. Together, CC0 and the Public Domain Mark replace the Public Domain Dedication and Certification,42 which took a U.S.-centric approach and co-mingled distinct operations.|||In 2011, the Free Software Foundation added CC0 to its free software licenses. However, the Free Software Foundation currently does not recommend using CC0 to release software into the public domain because it explicitly does not grant a patent license.21|||In February 2012, CC0 was submitted to Open Source Initiative (OSI) for their approval.43 However, controversy arose over its clause which excluded from the scope of the license any relevant patents held by the copyright holder. This clause was added for scientific data rather than software, but some members of the OSI believed it could weaken users' defenses against software patents. As a result, Creative Commons withdrew their submission, and the license is not currently approved by the OSI.4044|||From 2013 to 2017, the stock photography website Unsplash used the CC0 license,4546 distributing several million free photos a month.47 Lawrence Lessig, the founder of Creative Commons, has contributed to the site.48 Unsplash moved from using the CC0 license to a custom license in June 201749 and to an explicitly nonfree license in January 2018.|||In October 2014, the Open Knowledge Foundation approved the Creative Commons CC0 as conformant with the Open Definition and recommend the license to dedicate content to the public domain.1011|||In July 2022, Fedora Linux disallowed software licensed under CC0 due to patent rights explicitly not being waived under the license.50|||Retired licensesedit|||Due to either disuse or criticism, a number of previously offered Creative Commons licenses have since been retired,3051 and are no longer recommended for new works. The retired licenses include all licenses lacking the Attribution element other than CC0, as well as the following four licenses:|||Developing Nations License: a license which only applies to developing countries deemed to be \"non-high-income economies\" by the World Bank. Full copyright restrictions apply to people in other countries.52|||Sampling: parts of the work can be used for any purpose other than advertising, but the whole work cannot be copied or modified53|||Sampling Plus: parts of the work can be copied and modified for any purpose other than advertising, and the entire work can be copied for noncommercial purposes54|||NonCommercial Sampling Plus: the whole work or parts of the work can be copied and modified for non-commercial purposes55|||Version 4.0edit|||Main article: Creative Commons jurisdiction ports|||The latest version 4.0 of the Creative Commons licenses, released on November 25, 2013, are generic licenses that are applicable to most jurisdictions and do not usually require ports.56575828 No new ports have been implemented in version 4.0 of the license.59 Version 4.0 discourages using ported versions and instead acts as a single global license.60|||Rights and obligationsedit|||Attributionedit|||Since 2004, all current licenses other than the CC0 variant require attribution of the original author, as signified by the BY component (as in the preposition \"by\").31 The attribution must be given to \"the best of [one's] ability using the information available\".61 Creative Commons suggests the mnemonic \"TASL\": title – author – source [web link] – [CC] licence. Generally this implies the following:|||Include any copyright notices (if applicable). If the work itself contains any copyright notices placed there by the copyright holder, those notices must be left intact, or reproduced in a way that is reasonable to the medium in which the work is being re-published.|||Cite the author's name, screen name, or user ID, etc. If the work is being published on the Internet, it is nice to link that name to the person's profile page, if such a page exists.|||Cite the work's title or name (if applicable), if such a thing exists. If the work is being published on the Internet, it is nice to link the name or title directly to the original work.|||Cite the specific CC license the work is under. If the work is being published on the Internet, it is nice if the license citation links to the license on the CC website.|||Mention if the work is a derivative work or adaptation. In addition to the above, one needs to identify that their work is a derivative work, e.g., \"This is a Finnish translation of [original work] by [author].\" or \"Screenplay based on [original work] by [author].\"|||Non-commercial licensesedit|||Main article: Creative Commons NonCommercial license|||The NonCommercial license allows image creators to restrict selling and profiting from their works by other parties and thus maintaining free of charge access to images.|||The \"non-commercial\" option included in some Creative Commons licenses is controversial in definition,62 as it is sometimes unclear what can be considered a non-commercial setting, and application, since its restrictions differ from the principles of open content promoted by other permissive licenses.63 In 2014 Wikimedia Deutschland published a guide to using Creative Commons licenses as wiki pages for translations and as PDF.26|||Adaptabilityedit|||An example of a permitted combination of two works, one being CC BY-SA and the other being public domain|||Rights in an adaptation can be expressed by a CC license that is compatible with the status or licensing of the original work or works on which the adaptation is based.64 License compatibility chart for combining or mixing two CC licensed works6566|||Legal aspectsedit|||The legal implications of large numbers of works having Creative Commons licensing are difficult to predict, and there is speculation that media creators often lack insight to be able to choose the license which best meets their intent in applying it.67|||Some works licensed using Creative Commons licenses have been involved in several court cases.68 Creative Commons itself was not a party to any of these cases; they only involved licensors or licensees of Creative Commons licenses. When the cases went as far as decisions by judges (that is, they were not dismissed for lack of jurisdiction or were not settled privately out of court), they have all validated the legal robustness of Creative Commons public licenses.|||Further information: Public information licence|||Dutch tabloidedit|||In early 2006, podcaster Adam Curry sued a Dutch tabloid who published photos from Curry's Flickr page without Curry's permission. The photos were licensed under the Creative Commons Non-Commercial license. While the verdict was in favor of Curry, the tabloid avoided having to pay restitution to him as long as they did not repeat the offense. Professor Bernt Hugenholtz, main creator of the Dutch CC license and director of the Institute for Information Law of the University of Amsterdam, commented, \"The Dutch Court's decision is especially noteworthy because it confirms that the conditions of a Creative Commons license automatically apply to the content licensed under it, and binds users of such content even without expressly agreeing to, or having knowledge of, the conditions of the license.\"69707172|||Virgin Mobileedit|||In 2007, Virgin Mobile Australia launched an advertising campaign promoting their cellphone text messaging service using the work of amateur photographers who uploaded their work to Flickr using a Creative Commons-BY (Attribution) license. Users licensing their images this way freed their work for use by any other entity, as long as the original creator was attributed credit, without any other compensation required. Virgin upheld this single restriction by printing a URL leading to the photographer's Flickr page on each of their ads. However, one picture, depicting 15-year-old Alison Chang at a fund-raising carwash for her church,73 caused some controversy when she sued Virgin Mobile. The photo was taken by Alison's church youth counselor, Justin Ho-Wee Wong, who uploaded the image to Flickr under the Creative Commons license.73 In 2008, the case (concerning personality rights rather than copyright as such) was thrown out of a Texas court for lack of jurisdiction.7475|||SGAE vs Fernándezedit|||In the fall of 2006, the collecting society Sociedad General de Autores y Editores (SGAE) in Spain sued Ricardo Andrés Utrera Fernández, owner of a disco bar located in Badajoz who played CC-licensed music. SGAE argued that Fernández should pay royalties for public performance of the music between November 2002 and August 2005. The Lower Court rejected the collecting society's claims because the owner of the bar proved that the music he was using was not managed by the society.76|||In February 2006, the Cultural Association Ladinamo (based in Madrid, and represented by Javier de la Cueva) was granted the use of copyleft music in their public activities. The sentence said:|||Admitting the existence of music equipment, a joint evaluation of the evidence practiced, this court is convinced that the defendant prevents communication of works whose management is entrusted to the plaintiff [SGAE], using a repertoire of authors who have not assigned the exploitation of their rights to the SGAE, having at its disposal a database for that purpose and so it is manifested both by the legal representative of the Association and by Manuela Villa Acosta, in charge of the cultural programming of the association, which is compatible with the alternative character of the Association and its integration in the movement called 'copy left'.77|||GateHouse Media, Inc. v. That's Great News, LLCedit|||On June 30, 2010, GateHouse Media filed a lawsuit against That is Great News, LLC. GateHouse Media owns a number of local newspapers, including Rockford Register Star, which is based in Rockford, Illinois. That is Great News makes plaques out of newspaper articles and sells them to the people featured in the articles.78 GateHouse sued That is Great News for copyright infringement and breach of contract. GateHouse claimed that That is Great News violated the non-commercial and no-derivative works restrictions on GateHouse Creative Commons licensed work when they published the material on their website. The case was settled on August 17, 2010, though the terms of the settlement were not made public.7879|||Drauglis v. Kappa Map Group, LLCedit|||In 2007, photographer Art Drauglis uploaded several pictures to the photo-sharing website Flickr, giving them the Creative Commons Attribution-ShareAlike 2.0 Generic License (CC BY-SA). One photo, titled \"Swain's Lock, Montgomery Co., MD.\", was downloaded by Kappa Map Group, a map-making company, and published in 2012 on the front cover of Montgomery Co. Maryland Street Atlas. The text \"Photo: Swain's Lock, Montgomery Co., MD Photographer: Carly Lesser \u0026 Art Drauglis, Creative Commoms [sic], CC-BY-SA-2.0\" was placed on the back cover, but nothing on the front indicated authorship.|||The validity of CC BY-SA 2.0 as a license was not in dispute. CC BY-SA 2.0 requires that the licensee use nothing less restrictive than the CC BY-SA 2.0 terms. The atlas was sold commercially and not for free reuse by others. The dispute was whether Drauglis' license terms that would apply to \"derivative works\" applied to the entire atlas. Drauglis sued the defendants in June 2014 for copyright infringement and license breach, seeking declaratory and injunctive relief, damages, fees, and costs. Drauglis asserted, among other things, that Kappa Map Group \"exceeded the scope of the License because defendant did not publish the Atlas under a license with the same or similar terms as those under which the Photograph was originally licensed.\"80 The judge dismissed the case on that count, ruling that the atlas was not a derivative work of the photograph in the sense of the license, but rather a collective work. Since the atlas was not a derivative work of the photograph, Kappa Map Group did not need to license the entire atlas under the CC BY-SA 2.0 license. The judge also determined that the work had been properly attributed.81|||In particular, the judge determined that it was sufficient to credit the author of the photo as prominently as authors of similar authorship (such as the authors of individual maps contained in the book) and that the name \"CC-BY-SA-2.0\" is sufficiently precise to locate the correct license on the internet and can be considered a valid identifier for the license.3|||Verband zum Schutz geistigen Eigentums im Internet (VGSE)edit|||In July 2016, German computer magazine LinuxUser reported that a German blogger, Christoph Langner, used two CC BY-licensed photographs from Berlin photographer Dennis Skley on his private blog Linuxundich. Langner duly mentioned the author and the license and added a link to the original. Langner was later contacted by the Verband zum Schutz geistigen Eigentums im Internet (VGSE) (Association for the Protection of Intellectual Property in the Internet) with a demand for €2300 for failing to provide the full name of the work, the full name of the author, the license text, and a source link, as is required by the fine print in the license. Of this sum, €40 was to go to the photographer, with the remainder retained by VGSE.8283 The Higher Regional Court of Cologne dismissed the claim in May 2019.84|||Works with a Creative Commons licenseedit|||Main article: List of major Creative Commons licensed works|||See also: Category:Creative Commons-licensed works|||Number of Creative Commons licensed works as of 2017, per State of the Commons report|||Creative Commons maintains a content directory wiki of organizations and projects using Creative Commons licenses.85 On its website CC also provides case studies of projects using CC licenses across the world.86 CC licensed content can also be accessed through a number of content directories and search engines.|||Unicode symbolsedit|||You may need rendering support to display the uncommon Unicode characters in this section correctly.|||After being proposed by Creative Commons in 2017,87 Creative Commons license symbols were added to Unicode with version 13.0 in 2020.88 The circle with an equal sign (meaning no derivatives) is present in older versions of Unicode, unlike all the other symbols.|||Name|||Unicode|||Decimal|||UTF-8|||Image|||Displayed|||Unicode block|||Circled equalsmeaning no derivatives|||U+229C|||\u0026#8860;|||E2 8A 9C|||⊜|||Mathematical Operators|||Circled zero with slashmeaning no rights reserved|||U+1F10D|||\u0026#127245;|||F0 9F 84 8D|||🄍|||Enclosed Alphanumeric Supplement|||Circled anticlockwise arrowmeaning share alike|||U+1F10E|||\u0026#127246;|||F0 9F 84 8E|||🄎|||Enclosed Alphanumeric Supplement|||Circled dollar sign with overlaid backslashmeaning non-commercial|||U+1F10F|||\u0026#127247;|||F0 9F 84 8F|||🄏|||Enclosed Alphanumeric Supplement|||Circled CCmeaning Creative Commons license|||U+1F16D|||\u0026#127341;|||F0 9F 85 AD|||🅭|||Enclosed Alphanumeric Supplement|||Circled C with overlaid backslashmeaning public domain|||U+1F16E|||\u0026#127342;|||F0 9F 85 AE|||🅮|||Enclosed Alphanumeric Supplement|||Circled human figuremeaning attribution, credit|||U+1F16F|||\u0026#127343;|||F0 9F 85 AF|||🅯|||Enclosed Alphanumeric Supplement|||These symbols can be used in succession to indicate a particular Creative Commons license, for example, CC-BY-SA (CC-Attribution-ShareAlike) can be expressed with Unicode symbols CIRCLED CC, CIRCLED HUMAN FIGURE and CIRCLED ANTICLOCKWISE ARROW placed next to each other: 🅭🅯🄎|||Case law databaseedit|||In December 2020, the Creative Commons organization launched an online database covering licensing case law and legal scholarship.8990|||See alsoedit|||Free and open-source software portal|||Law portal|||Closed captioning – uses a similar CC logo|||Free-culture movement|||Free music|||Free software|||Non-commercial educational station|||Notesedit|||^ A \"work\" is any creative material made by a person. A painting, a graphic, a book, a song and its lyrics, or a photograph of almost anything are all examples of \"works\".|||Referencesedit|||^ Shergill, Sanjeet (May 6, 2017). \"The teacher's guide to Creative Commons licenses\". Open Education Europa. Archived from the original on June 26, 2018. Retrieved March 15, 2018.|||^ \"What are Creative Commons licenses?\". Wageningen University \u0026 Research. June 16, 2015. Archived from the original on March 15, 2018. Retrieved March 15, 2018.|||^ a b \"Creative Commons licenses\". University of Michigan Library. Archived from the original on November 21, 2018. Retrieved March 15, 2018.|||^ \"Creative Commons licenses\" (PDF). University of Glasgow. Archived (PDF) from the original on March 15, 2018. Retrieved March 15, 2018.|||^ \"The Creative Commons licenses\". UNESCO. Archived from the original on March 15, 2018. Retrieved March 15, 2018.|||^ \"License Versions\". Creative Commons Wiki. Archived from the original on June 30, 2017. Retrieved July 4, 2017.|||^ \"Creative Commons | University of Minnesota Libraries\". www.lib.umn.edu. Retrieved October 9, 2024.|||^ \"What Is a Creative Commons License?\". Copyright Alliance. September 7, 2016. Archived from the original on September 30, 2024. Retrieved October 9, 2024.|||^ \"Open Definition 2.1\". Open Definition. Archived from the original on January 27, 2017. Retrieved January 25, 2023.|||^ a b \"Conformant Licenses\". Open Definition. Archived from the original on March 1, 2016. Retrieved January 25, 2023.|||^ a b Vollmer, Timothy (December 27, 2013). \"Creative Commons 4.0 BY and BY-SA licenses approved conformant with the Open Definition\". Creative Commons. Archived from the original on March 4, 2016. Retrieved January 25, 2023.|||^ \"Creative Commons Unveils Machine-Readable Copyright Licenses\". Creative Commons. December 16, 2002. Archived from the original on December 22, 2002.|||^ a b \"1.1 The Story of Creative Commons\". Creative Commons Certificate for Educators, Academic Librarians and GLAM. Archived from the original on April 8, 2023. Retrieved April 28, 2021.|||^ Murray, Laura J. (2014). Putting intellectual property in its place : rights discourses, creative labor, and the everyday. S. Tina Piper, Kirsty Robertson. Oxford: Oxford University Press. ISBN 978-0-19-933626-5. OCLC 844373100. Archived from the original on October 5, 2024. Retrieved April 29, 2021.|||^ \"Worldwide\". Creative Commons. Archived from the original on October 15, 2008.|||^ Meng, Bingchun (January 26, 2009). \"Articulating a Chinese Commons: An Explorative Study of Creative Commons in China\". International Journal of Communication. 3: 16. ISSN 1932-8036.|||^ \"Creative Commons Legal Code\". Creative Commons. January 9, 2008. Archived from the original on February 11, 2010. Retrieved February 22, 2010.|||^ \"Creative Commons FAQ: Can I use a Creative Commons license for software?\". Wiki.creativecommons.org. July 29, 2013. Archived from the original on November 27, 2010. Retrieved September 20, 2013.|||^ \"Non-Software Licenses\". Choose a License. Archived from the original on January 2, 2022. Retrieved November 13, 2020.|||^ \"AssaultCube – License\". assault.cubers.net. Archived from the original on December 25, 2010. Retrieved January 30, 2011. AssaultCube is FREEWARE. [...] The content, code and images of the AssaultCube website and all documentation are licensed under \"Attribution-NonCommercial-ShareAlike 3.0 Unported|||^ a b \"Various Licenses and Comments about Them\". GNU Project. Archived from the original on July 24, 2010. Retrieved April 4, 2015.|||^ \"Do Creative Commons licenses affect exceptions and limitations to copyright, such as fair dealing and fair use?\". Frequently Asked Questions – Creative Commons. Archived from the original on August 8, 2015. Retrieved July 26, 2015.|||^ \"What if I change my mind about using a CC license?\". Frequently Asked Questions – Creative Commons. Archived from the original on August 8, 2015. Retrieved July 26, 2015.|||^ \"What happens if the author decides to revoke the CC license to material I am using?\". Frequently Asked Questions – Creative Commons. Archived from the original on August 8, 2015. Retrieved July 26, 2015.|||^ \"How do CC licenses operate?\". Frequently Asked Questions – Creative Commons. Archived from the original on August 8, 2015. Retrieved July 26, 2015.|||^ a b c Till Kreutzer (2014). Open Content – A Practical Guide to Using Creative Commons Licenses (PDF). Wikimedia Deutschland e.a. ISBN 978-3-940785-57-2. Archived (PDF) from the original on April 4, 2015. Retrieved March 23, 2015.|||^ \"Baseline Rights\". Creative Commons. June 12, 2008. Archived from the original on February 8, 2010. Retrieved February 22, 2010.|||^ a b \"Frequently Asked Questions\". Creative Commons. Creative Commons Corporation. August 28, 2020. Archived from the original on November 27, 2010. Retrieved November 26, 2020.|||^ \"Creative Commons GNU LGPL\". Archived from the original on June 22, 2009. Retrieved July 20, 2009.|||^ a b \"Retired Legal Tools\". Creative Commons. Archived from the original on May 3, 2016. Retrieved May 31, 2012.|||^ a b \"Announcing (and explaining) our new 2.0 licenses\". Creativecommons.org. May 25, 2004. Archived from the original on September 21, 2013. Retrieved September 20, 2013.|||^ a b \"About The Licenses – Creative Commons\". Creative Commons. Archived from the original on July 26, 2015. Retrieved July 26, 2015.|||^ \"Creative Commons — Attribution 3.0 United States\". Creative Commons. November 16, 2009. Archived from the original on February 24, 2010. Retrieved February 22, 2010.|||^ a b \"CC0\". Creative Commons. Archived from the original on February 26, 2010. Retrieved February 22, 2010.|||^ \"Downloads\". Creative Commons. December 16, 2015. Archived from the original on December 25, 2015. Retrieved December 24, 2015.|||^ a b Kreutzer, Till. \"Validity of the Creative Commons Zero 1.0 Universal Public Domain Dedication and its usability for bibliographic metadata from the perspective of German Copyright Law\" (PDF). Archived (PDF) from the original on May 25, 2017. Retrieved July 4, 2017.|||^ \"Creative Commons Launches CC0 and CC+ Programs\" (Press release). Creative Commons. December 17, 2007. Archived from the original on February 23, 2010. Retrieved February 22, 2010.|||^ Baker, Gavin (January 16, 2009). \"Report from CC board meeting\". Open Access News. Archived from the original on September 19, 2010. Retrieved February 22, 2010.|||^ \"Expanding the Public Domain: Part Zero\". Creativecommons.org. March 11, 2009. Archived from the original on September 21, 2013. Retrieved September 20, 2013.|||^ a b Christopher Allan Webber. \"CC withdrawl [sic] of CC0 from OSI process\". In the Open Source Initiative Licence review mailing list. Archived from the original on September 6, 2015. Retrieved February 24, 2012.|||^ \"Marking and Tagging the Public Domain: An Invitation to Comment\". Creativecommons.org. August 10, 2010. Archived from the original on September 21, 2013. Retrieved September 20, 2013.|||^ \"Copyright-Only Dedication (based on United States law) or Public Domain Certification\". Creative Commons. August 20, 2009. Archived from the original on February 23, 2010. Retrieved February 22, 2010.|||^ Carl Boettiger. \"OSI recognition for Creative Commons Zero License?\". In the Open Source Initiative Licence review mailing list. Open Source Initiative. Archived from the original on September 26, 2013. Retrieved February 1, 2012.|||^ The Open Source Initiative FAQ (October 21, 2007). \"What about the Creative Commons \"CC0\" (\"CC Zero\") public domain dedication? Is that Open Source?\". Open Source Initiative. Archived from the original on May 19, 2013. Retrieved May 25, 2013.|||^ \"Unsplash is a site full of free images for your next splash page\". The Next Web. August 14, 2013. Archived from the original on November 17, 2015. Retrieved November 13, 2015.|||^ \"License | Unsplash\". unsplash.com. Archived from the original on November 17, 2015. Retrieved November 13, 2015.|||^ \"Why Building Something Useful For Others Is The Best Marketing There Is\". Fast Company. February 18, 2015. Archived from the original on November 14, 2015. Retrieved November 13, 2015.|||^ \"Lawrence Lessig | Unsplash Book\". book.unsplash.com. Archived from the original on November 17, 2015. Retrieved November 13, 2015.|||^ \"Community update: Unsplash branded license and ToS changes\". June 22, 2017. Archived from the original on January 7, 2018. Retrieved January 7, 2018.|||^ Claburn, Thomas (July 25, 2022). \"Fedora sours on CC 'No Rights Reserved' license\". The Register. Archived from the original on October 12, 2022. Retrieved September 14, 2022.|||^ Lessig, Lawrence (June 4, 2007). \"Retiring standalone DevNations and one Sampling license\". Creative Commons. Archived from the original on July 7, 2007. Retrieved July 5, 2007.|||^ \"Developing Nations License\". Creative Commons. Archived from the original on April 12, 2012. Retrieved April 9, 2012.|||^ \"Sampling 1.0\". Creative Commons. Archived from the original on March 16, 2012. Retrieved April 9, 2012.|||^ \"Sampling Plus 1.0\". Creative Commons. November 13, 2009. Archived from the original on April 11, 2012. Retrieved April 9, 2012.|||^ \"NonCommercial Sampling Plus 1.0\". Creative Commons. November 13, 2009. Archived from the original on March 25, 2012. Retrieved April 9, 2012.|||^ Peters, Diane (November 25, 2013). \"CC's Next Generation Licenses — Welcome Version 4.0!\". Creative Commons. Archived from the original on November 26, 2013. Retrieved November 26, 2013.|||^ \"What's new in 4.0?\". Creative Commons. 2013. Archived from the original on November 29, 2013. Retrieved November 26, 2013.|||^ \"CC 4.0, an end to porting Creative Commons licences?\". TechnoLlama. September 25, 2011. Archived from the original on September 2, 2013. Retrieved August 11, 2013.|||^ \"CC Affiliate Network\". Creative Commons. Archived from the original on July 9, 2011. Retrieved July 8, 2011.|||^ \"Frequently Asked Questions: What if CC licenses have not been ported to my jurisdiction?\". Creative Commons. Archived from the original on November 27, 2013. Retrieved November 26, 2013.|||^ \"Frequently Frequently Asked Questions\". Creative Commons. February 2, 2010. Archived from the original on February 26, 2010. Retrieved February 22, 2010.|||^ \"Defining Noncommercial report published\". Creativecommons.org. September 14, 2009. Archived from the original on September 21, 2013. Retrieved September 20, 2013.|||^ \"The Case for Free Use: Reasons Not to Use a Creative Commons -NC License\". Freedomdefined.org. August 26, 2013. Archived from the original on July 9, 2012. Retrieved September 20, 2013.|||^ \"Frequently Asked Questions\". CC Wiki. Archived from the original on March 25, 2014. Retrieved March 25, 2014.|||^ \"Frequently Asked Questions\". Creative Commons. July 14, 2016. Archived from the original on November 27, 2010. Retrieved August 1, 2016.|||^ Creative Commons licenses without a non-commercial or no-derivatives requirement, including public domain/CC0, are all cross-compatible. Non-commercial licenses are compatible with each other and with less restrictive licenses, except for Attribution-ShareAlike. No-derivatives licenses are not compatible with any license, including themselves.|||^ Katz, Zachary (2005). \"Pitfalls of Open Licensing: An Analysis of Creative Commons Licensing\". IDEA: The Intellectual Property Law Review. 46 (3): 391.|||^ \"Creative Commons Case Law\". Archived from the original on September 1, 2011. Retrieved August 31, 2011.|||^ \"Creative Commons license upheld by court\". News.cnet.com. Archived from the original on October 25, 2012. Retrieved December 24, 2012.|||^ Rimmer, Matthew (January 2007). Digital Copyright and the Consumer Revolution: Hands Off My Ipod – Matthew Rimmer – Google Böcker. Edward Elgar. ISBN 9781847207142. Archived from the original on April 14, 2016. Retrieved December 24, 2012.|||^ \"Creative Commons License Upheld by Dutch Court\". Groklaw. March 16, 2006. Archived from the original on May 5, 2010. Retrieved September 2, 2006.|||^ \"Creative Commons Licenses Enforced in Dutch Court\". March 16, 2006. Archived from the original on September 6, 2011. Retrieved August 31, 2011.|||^ a b Cohen, Noam. \"Use My Photo? Not Without Permission\". The New York Times. Archived from the original on June 15, 2011. Retrieved September 25, 2007. One moment, Alison Chang, a 15-year-old student from Dallas, is cheerfully goofing around at a local church-sponsored car wash, posing with a friend for a photo. Weeks later, that photo is posted online and catches the eye of an ad agency in Australia, and the altered image of Alison appears on a billboard in Adelaide as part of a Virgin Mobile advertising campaign.|||^ Evan Brown (January 22, 2009). \"No personal jurisdiction over Australian defendant in Flickr right of publicity case\". Internet Cases, a blog about law and technology. Archived from the original on July 13, 2011. Retrieved September 25, 2010.|||^ \"Lawsuit Against Virgin Mobile and Creative Commons – FAQ\". September 27, 2007. Archived from the original on September 7, 2011. Retrieved August 31, 2011.|||^ Mia Garlick (March 23, 2006). \"Spanish Court Recognizes CC-Music\". Creative Commons. Archived from the original on September 26, 2023. Retrieved November 22, 2023.|||^ \"Sentencia nº 12/2006 Juzgado de lo Mercantil nº 5 de Madrid\". Derecho de Internet (in Spanish). Archived from the original on November 26, 2015. Retrieved December 24, 2015.|||^ a b Evan Brown (July 2, 2010). \"New Copyright Lawsuit Involves Creative Commons\". Internet Cases. Archived from the original on June 21, 2012. Retrieved April 20, 2012.|||^ \"GateHouse Media v. That's Great News\". Citizen Media Law Project. August 5, 2010. Archived from the original on May 2, 2012. Retrieved April 20, 2012.|||^ \"Memorandum Opinion\" (PDF). United States District Court for the District of Columbia. August 18, 2015. Archived (PDF) from the original on September 21, 2016. Retrieved August 29, 2016.|||^ Guadamuz, Andres (October 24, 2015). \"US Court interprets copyleft clause in Creative Commons licenses\". TechnoLlama. Archived from the original on December 22, 2015. Retrieved December 10, 2015.|||^ Luther, Jörg (July 2016). \"Kleingedrucktes – Editorial\" [Fine print – Editorial]. LinuxUser (in German) (7/2016). ISSN 1615-4444. Archived from the original on September 15, 2016. Retrieved September 9, 2016.|||^ \"Abmahnung des Verbandes zum Schutz geistigen Eigentums im Internet (VSGE)\" [Notice to cease and desist from the Association for the Protection of Intellectual Property in the Internet (VSGE)] (in German). Hannover, Germany: Feil Rechtsanwaltsgesellschaft. January 8, 2014. Archived from the original on September 14, 2016. Retrieved September 9, 2016.|||^ \"Creative Commons-Foto-Abmahnung: Rasch Rechtsanwälte setzen erfolgreich Gegenansprüche durch\" [Creative Commons photo notice: Rasch attorneys successfully enforce counterclaims]. anwalt.de (in German). May 22, 2019. Archived from the original on December 19, 2019. Retrieved December 18, 2019.|||^ \"Content Directories\". creativecommons.org. Archived from the original on April 30, 2009. Retrieved April 24, 2009.|||^ \"Case Studies\". Creative Commons. Archived from the original on December 24, 2011. Retrieved December 20, 2011.|||^ \"Proposal to add CC license symbols to UCS\" (PDF). Unicode. July 24, 2017. Archived (PDF) from the original on March 26, 2021. Retrieved August 21, 2020.|||^ Steuer, Eric (March 18, 2020). \"The Unicode Standard Now Includes CC License Symbols\". Creative Commons. Archived from the original on July 27, 2020. Retrieved July 6, 2020.|||^ Salazar, Krystle (December 3, 2020). \"Explore the new CC legal database site!\". Creative Commons. Mountain View, California, US. Archived from the original on January 3, 2021. Retrieved January 3, 2021.|||^ Creative Commons. \"Creative Commons Legal Database\". Creative Commons. Mountain View, California, US. Archived from the original on January 17, 2021. Retrieved January 3, 2021.|||External linksedit|||Official website|||Full selection of licenses|||CC License options|||Licenses. Overview of free licenses. freedomdefined.org|||Web-friendly formatted summary of CC BY-SA 4.0|||hide|||v|||t|||e|||Creative Commons|||Works and projects|||Licenses|||NonCommercial license|||Licensed works|||Category|||Public Domain Mark|||Content directories|||Jurisdiction ports|||Major directories|||Creative Commons|||ccMixter|||Free Music Archive|||Freesound|||OpenGameArt.org|||Openclipart|||Dogmazic|||Phlow|||Electrobel|||Jamendo|||Newgrounds Audio portal|||Scripped|||Wikimedia|||Commons|||People|||Lawrence Lessig|||Joi Ito|||See also|||Free and open content|||Free culture movement|||show|||v|||t|||e|||Free and open-source software|||show|||v|||t|||e|||Free culture and open content|||Creative Commons license at Wikipedia's sister projects:|||Definitions from Wiktionary|||Media from Commons|||Quotations from Wikiquote|||Texts from Wikisource|||Resources from Wikiversity|||Data from Wikidata|||Authority control databases: National|||Czech Republic|||Categories:|||Creative Commons|||Computer law|||Copyleft|||Free content licenses|||Intellectual property activism|||Intellectual property law|||Public copyright licenses|||Copyleft software licenses|||This page was last edited on 2 May 2025, at 03:52 (UTC).|||Text is available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.",
                    "bookmark_id": 12,
                    "bookmark": {
                        "id": 0,
                        "created_at": "0001-01-01T00:00:00Z",
                        "updated_at": "0001-01-01T00:00:00Z",
                        "deleted_at": null,
                        "url": "",
                        "title": "",
                        "notes": "",
                        "domain": "",
                        "favicon": "",
                        "tags": null,
                        "snapshots": null,
                        "collection": null,
                        "public": false,
                        "unread": false,
                        "user_id": 0
                    },
                    "size": 499205,
                    "resources": null
                }
            ],
            "collection": null,
            "public": true,
            "unread": false,
            "user_id": 1
        },
        {
            "id": 11,
            "created_at": "2025-05-08T13:48:32.232241066Z",
            "updated_at": "2025-05-08T13:48:32.232241066Z",
            "deleted_at": null,
            "url": "https://en.wikipedia.org/wiki/Free-software_license",
            "title": "Free-software license - Wikipedia",
            "notes": "",
            "domain": "en.wikipedia.org",
            "favicon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAACgCAAAAACupDjxAAAE6ElEQVR4AezOAQEAAAQAIP9PMwPUgiKHExQUFBQUFBQUFBQUFBS8GRQUFBQUFBQUFBQUFBQUFBQUFBQs4szAQ5UujMN/1I+RiLEkElkiRMRHCCEilhDiYkNEliyEi3AJIQsXi2VZliAkiwhZWWGM33dvzrzONHMWbjPzAJz7+R4z5zzvmfa/m0KpWm92evejx+lkPOi1G7VSPmvndjzl7Wyx+mdp8DB9GPa7rUatXMzmPugUU3a+XG/3huPxsN9pVPJ2qkIurfTNn3/fvR89jAbdZrVgp0r/LpiDgVceLYTxzC2ClMkHBLj9d8H3fjnEw64PvsinTj7wf2wNj3Qf7yrQSdcGK/Jj2C5Aw6rcb66yB4/LW/jIzxwqNg1otNf0WLfgUZjLP3cXedEbHa93SJxpGgIKB2rMND9quJ760KHGKqVe+ea6p/hFM3yjj6EsPPn/E5wZ008Xf8nvr52ZX/DIuPThlKBYUOeIv7R4wVSdpKt3UPZUIA3PUPygzg4Asp8UtC3RjSDU25R3JB1e4O22mxM1fgfeuuyI9C4CQf6AYhlIERRzanQANEPKL4/62oIfXg8bND3CMgXuLcAKHtWDBVgfkQiyA8UmcMah+E1hIE8qcEY6jEbwDYo+L6mqlSo99mkgc2CAW+nU9QVZ8UITmAFLKF70HTsiw058hVEJSgunvMD1hmHda0wKsI/hsZpHJniylUbRDdZN8c4zPQATBthZQNaJTJCDwGEQ9yygTY6tBeRODI3giNEJflOaCRRrkrwD8JMBnCxg7SMUZNNYms+MWrkjubaAgsMAC7UeneCzuTT3asX6MB+FmmzSqAR5ayzNzhL3FYCSywArKWV0glNjadhVK6l9Iziw5WjPIxY8ZoylWUNRN8T4mJbGRCfIvrE0bELAs+Hpjxm14BrG0rxC+M+wf6195IKsG0vDKjxeDQW4Y/SCSymNealu+mZ4j0HQyUtpjFeGvBM+hquMQZATc2lmwbu/MAKwiEXwkJLSGK8MJTdsDOecWAR5J6UxP91l2Bh+YDyC71Ia81Il5GMutY9JkFVjadqmUq/laz0OwbmpNGsI9eAYXsUmeLoxlKYFAW+XI7zG2AQ5DJRGdqC8/ublGF7EKLizQkvTAKxtQ7v7CyVpTDyCbIWV5u28K1+g6FB4kcbEJSgWDf81Ir2nnHFrqx/u1CFWQZakND7poX5l6Om/I3UZr+BPKY2eYvuTpFuUu782hlcxC35lpDTade/Rf2W45xknJzfY+AT547I0VfktQa4MmYOM4WXsghv4S/MEYHZ5ZRh77z7vxC7Ihr80ZeDWufyVwf5S82/C+AWffKVZ+l7jQH//fSB9SEDQLWilcUtAJWTS5JzzGO4yAUE+an8emV9csLpQzM5BWiUieEhLaZwiUA+9dxWdkjQmXkH9MU1/Bb4omzJOZHPGL7iSx1QA2sZfGaQxsQuyBsHamNcmTEpwAaFnqpA0JglBJysSO/N9p8fEBDmCYvDNH1XWCQruVZDtAwM4Ofm8S06QbTkGxpA/JScoNcmeGMLRPjfGTVSQZQD4+c3H6SOTFZydx5lhh6aA9GfCgif7my/ynjQmOUGOv7kKbO30JnFB7lwa+Tr+364dCwAAAAAI87cOo2cRDCD/ICAgICAgICDgEyAgICAgICAgICAgICAgICBgYUeNfR+Kw20AAAAASUVORK5CYII=",
            "tags": [
                {
                    "id": 1,
                    "created_at": "2025-04-02T14:11:26.52753391Z",
                    "updated_at": "2025-04-02T14:11:26.52753391Z",
                    "deleted_at": null,
                    "text": "wikipedia",
                    "bookmarks": null
                },
                {
                    "id": 5,
                    "created_at": "2025-04-02T14:13:58.496800641Z",
                    "updated_at": "2025-04-02T14:13:58.496800641Z",
                    "deleted_at": null,
                    "text": "free software",
                    "bookmarks": null
                },
                {
                    "id": 14,
                    "created_at": "2025-05-08T13:32:57.497130706Z",
                    "updated_at": "2025-05-08T13:32:57.497130706Z",
                    "deleted_at": null,
                    "text": "license",
                    "bookmarks": null
                }
            ],
            "snapshots": [
                {
                    "id": 11,
                    "created_at": "2025-05-08T13:48:32.267883003Z",
                    "updated_at": "2025-05-08T13:48:32.820029113Z",
                    "deleted_at": null,
                    "title": "",
                    "key": "e43ba18bfa86aaad8ca24c12dd821ea9bf08f4a229d51f8cc112eecf4b0e116a",
                    "text": "Search|||Donate|||Create account|||Log in|||Contents hide|||(Top)|||Comparison|||History|||Pre-1980s|||1980s|||1990s to 2000s|||2010s|||Definitions|||OSI-approved open-source licenses|||FSF-approved free-software licenses|||Conditions in free-software licenses|||Copyleft|||Patent retaliation|||Attribution, disclaimers and notices|||Practical problems with licenses|||License compatibility|||Purpose of use|||Definition conflicts|||Permissive versus copyleft opinions|||Debian|||Controversial borderline cases|||Market share|||See also|||Notes|||References|||External links|||Free-software license|||20 languages|||Tools|||Appearance hide|||Text|||Small|||Standard|||Large|||Width|||Standard|||Wide|||Color (beta)|||Automatic|||Light|||Dark|||From Wikipedia, the free encyclopedia|||The free-software-licensing spectrum and some examples of programs under those licenses1|||Copyleft|||Articles on copyleft licensing|||Topics|||Copyleft|||Open-source license|||Free-software license|||Free and open-source software|||Royalty-free|||Higher categories: Software, freedom|||Category:Free and open-sourcesoftware licenses|||v|||t|||e|||A free-software license is a notice that grants the recipient of a piece of software extensive rights to modify and redistribute that software. These actions are usually prohibited by copyright law, but the rights-holder (usually the author) of a piece of software can remove these restrictions by accompanying the software with a software license which grants the recipient these rights. Software using such a license is free software (or free and open-source software) as conferred by the copyright holder. Free-software licenses are applied to software in source code and also binary object-code form, as the copyright law recognizes both forms.2|||Comparisonedit Types of software license and similar licenses. The highlighted columns are free software.|||Public domain \u0026 equivalents|||Permissive license|||Copyleft (protective license)|||Noncommercial license|||Proprietary license|||Trade secret|||Description|||Grants all rights|||Grants use rights, including right to relicense (allows proprietization, license compatibility)|||Grants use rights, forbids proprietization|||Grants rights for noncommercial use only. May be combined with copyleft.|||Traditional use of copyright; no rights need to be granted|||No information is made public|||Software|||Unlicense|||MIT, Apache, MPL|||GPL, AGPL|||JRL, AFPL|||proprietary software, no public license|||private, internal software|||Other creative works|||PD, CC0|||CC BY|||CC BY-SA|||CC BY-NC|||Copyright, no public license|||unpublished|||Free-software licenses provide risk mitigation against different legal threats or behaviors that are seen as potentially harmful by developers: Frequently used protective and permissive licenses|||AGPLv3|||GPLv3|||GPLv2|||LGPLv3|||LGPLv2.1|||MPL-2|||BSD|||SaaS/cloud|||Yes|||No|||No|||No|||No|||No|||No|||Tivoization|||Yes|||Yes|||No|||Yes|||No|||No|||No|||Patent trolling|||Yes|||Yes|||No|||Yes|||No|||No|||No|||Proprietization|||Yes|||Yes|||Yes|||Partial|||Partial|||Partial|||No|||Granularity / reach|||Project|||Project|||Project|||Library|||Library|||File|||—|||Trademark grant|||Yes|||Yes|||?|||Yes|||?|||No|||No|||Historyedit|||See also: History of free and open-source software|||Pre-1980sedit|||In the early times of software, sharing of software and source code was common in certain communities, for instance academic institutions. Before the US Commission on New Technological Uses of Copyrighted Works (CONTU) decided in 1974 that \"computer programs, to the extent that they embody an author's original creation, are proper subject matter of copyright\",34 software was not considered copyrightable. Therefore, software had no licenses attached and was shared as public-domain software. The CONTU decision plus court decisions such as Apple v. Franklin in 1983 for object code, clarified that the Copyright Act gave computer programs the copyright status of literary works and started the licensing of software.|||Free-software licenses before the late 1980s were generally informal notices written by the developers themselves. These early licenses were of the \"permissive\" kind.|||1980sedit|||In the mid-1980s, the GNU project produced copyleft free-software licenses for each of its software packages. An early such license (the \"GNU Emacs Copying Permission Notice\") was used for GNU Emacs in 1985,5 which was revised into the \"GNU Emacs General Public License\" in late 1985, and clarified in March 1987 and February 1988.678 Likewise, the similar GCC General Public License was applied to the GNU Compiler Collection, which was initially published in 1987.910 The original BSD license is also one of the first free-software licenses, dating to 1988. In 1989, version 1 of the GNU General Public License (GPL) was published. Version 2 of the GPL, released in 1991, went on to become the most widely used free-software license.111213|||1990s to 2000sedit|||Starting in the mid-1990s and until the mid-2000s, the open-source movement pushed and focused the free-software idea forward in the wider public and business perception.14 In the Dot-com bubble time, Netscape Communications' step to release its webbrowser under a FOSS license in 1998,1516 inspired many other companies to adapt to the FOSS ecosystem.17 In this trend companies and new projects (Mozilla, Apache foundation, and Sun, see also this list) wrote their own FOSS licenses, or adapted existing licenses. This License proliferation was later recognized as problem for the Free and open-source ecosystem due to the increased complexity of license compatibility considerations.18 While the creation of new licenses slowed down later, license proliferation and its impact are considered an ongoing serious challenge for the free and open-source ecosystem.|||From the free-software licenses, the GNU GPL version 2 has been tested in to court, first in Germany in 2004 and later in the US. In the German case the judge did not explicitly discuss the validity of the GPL's clauses but accepted that the GPL had to be adhered to: \"If the GPL were not agreed upon by the parties, defendant would notwithstanding lack the necessary rights to copy, distribute, and make the software 'netfilter/iptables' publicly available.\" Because the defendant did not comply with the GPL, it had to cease use of the software.19 The US case (MySQL vs Progress) was settled before a verdict was arrived at, but at an initial hearing, Judge Saris \"saw no reason\" that the GPL would not be enforceable.20|||Around 2004 lawyer Lawrence Rosen argued in the essay Why the public domain isn't a license software could not truly be waived into public domain and can't be interpreted as very permissive FOSS license,21 a position which faced opposition by Daniel J. Bernstein and others.22 In 2012 the dispute was finally resolved when Rosen accepted the CC0 as open source license, while admitting that contrary to his previous claims copyright can be waived away, backed by Ninth circuit decisions.23|||In 2007, after years of draft discussion, the GPLv3 as major update of the GPLv2 was released. The release was controversial24 due to the significant extended scope of the license, which made it incompatible with the GPLv2.25 Several major FOSS projects (Linux kernel,2627 MySQL,28 BusyBox,2930 Blender,31 VLC media player32) decided against adopting the GPLv3. On the other hand, in 2009, two years after the release of the GPLv3, Google open-source programs office manager Chris DiBona reported that the number of open-source projects licensed software that had moved to GPLv3 from GPLv2 was 50%, counting the projects hosted at Google Code.33|||2010sedit|||In 2011, four years after the release of the GPLv3, 6.5% of all open-source licensed projects were GPLv3 while 42.5% were still GPLv2 according to Black Duck Software data.2734 Following in 2011 451 Group analyst Matthew Aslett argued in a blog post that copyleft licenses went into decline and permissive licenses increased, based on statistics from Black Duck Software.3536|||In 2015 according to Black Duck Software37 and GitHub statistics,38 the permissive MIT license dethroned the GPLv2 as most popular free-software license to the second place while the permissive Apache license follows already at third place. In June 2016 an analysis of Fedora Project's packages revealed as most used licenses the GPL, MIT, BSD, and the LGPL.39|||Definitionsedit|||OSI-approved open-source licensesedit|||Main article: Open-source license|||The group Open Source Initiative (OSI) defines and maintains a list of approved open-source licenses. OSI agrees with FSF on all widely used free-software licenses, but differ from FSF's list, as it approves against the Open Source Definition rather than the Free Software Definition. It considers Free Software Permissive license group to be a reference implementation of a Free Software license.[citation needed][clarification needed] Thus its requirements for approving licenses are different.|||FSF-approved free-software licensesedit|||The Free Software Foundation, the group that maintains the Free Software Definition, maintains a non-exhaustive list of free-software licences.40|||The Free Software Foundation prefers copyleft (share-alike) free-software licensing rather than permissive free-software licensing for most purposes. Its list distinguishes between free-software licenses that are compatible or incompatible with the FSF's copyleft GNU General Public License.|||Conditions in free-software licensesedit|||There exists an ongoing debate within the free-software community regarding the fine line between what restrictions can be applied and still be called \"free\".[citation needed]|||Only \"public-domain software\" and software under a public-domain-like license is restriction-free.[citation needed] Examples of public-domain-like licenses are, for instance, the WTFPL and the CC0 license. Permissive licenses might carry small obligations like attribution of the author but allow practically all code use cases. Certain licenses, namely the copyleft licenses, include intentionally stronger restrictions (especially on the distribution/distributor) in order to force derived projects to guarantee specific rights which can't be taken away.|||Copyleftedit|||Main article: copyleft|||The free-software share-alike licenses written by Richard Stallman in the mid-1980s pioneered a concept known as \"copyleft\". Ensuing copyleft provisions stated that when modified versions of free software are distributed, they must be distributed under the same terms as the original software. Hence they are referred to as \"share and share alike\" or \"quid pro quo\". This results in the new software being open source as well. Since copyleft ensures that later generations of the software grant the freedom to modify the code, this is \"free software\". Non-copyleft licenses do not ensure that later generations of the software will remain free.|||Developers who use GPL code in their product must make the source code available to anyone when they share or sell the object code. In this case, the source code must also contain any changes the developers may have made. If GPL code is used but not shared or sold, the code is not required to be made available and any changes may remain private. This permits developers and organizations to use and modify GPL code for private purposes (that is, when the code or the project is not sold or otherwise shared) without being required to make their changes available to the public.|||Supporters of GPL claim that by mandating that derivative works remain under the GPL, it fosters the growth of free software and requires equal participation by all users. Opponents of GPL claim41 that \"no license can guarantee future software availability\" and that the disadvantages of GPL outweigh42 its advantages. Some also argue that restricting distribution makes the license less free. Whereas proponents would argue that not preserving freedom during distribution would make it less free. For example, a non-copyleft license does not grant the author the freedom to see modified versions of his or her work if it gets publicly published, whereas a copyleft license does grant that freedom.|||Patent retaliationedit|||Further information: Patent retaliation|||During the 1990s, free-software licenses began including clauses, such as patent retaliation, in order to protect against software patent litigation cases – a problem which had not previously existed. This new threat was one of the reasons for writing version 3 of the GNU GPL in 2006.43 In recent years, a term coined tivoization describes a process where hardware restrictions are used to prevent users from running modified versions of the software on that hardware, in which the TiVo device is an example. It is viewed by the FSF as a way to turn free software to effectively non-free, and is why they have chosen to prohibit it in GPLv3.44 Most newly written free-software licenses since the late 1990s include some form of patent retaliation clauses. These measures stipulate that one's rights under the license (such as to redistribution), may be terminated if one attempts to enforce patents relating to the licensed software, under certain circumstances. As an example, the Apple Public Source License may terminate a user's rights if said user embarks on litigation proceedings against them due to patent litigation. Patent retaliation emerged in response to proliferation and abuse of software patents.|||Attribution, disclaimers and noticesedit|||The majority of free-software licenses require that modified software not claim to be unmodified. Some licenses also require that copyright holders be credited. One such example is version 2 of the GNU GPL, which requires that interactive programs that print warranty or license information, may not have these notices removed from modified versions intended for distribution.|||Practical problems with licensesedit|||License compatibilityedit|||License compatibility between common FOSS software licenses according to David A. Wheeler (2007): the vector arrows denote a one directional compatibility, therefore better compatibility on the left side (\"permissive licenses\") than on the right side (\"copyleft licenses\").45|||Main article: License compatibility|||Licenses of software packages containing contradictory requirements render it impossible to combine source code from such packages in order to create new software packages.46 License compatibility between a copyleft license and another license is often only a one-way compatibility.47 This \"one-way compatibility\" characteristic is, for instanced, criticized by the Apache Foundation, who provides the more permissive Apache license which doesn't have this characteristic.48 Non-copyleft licenses, such as the FOSS permissive licenses, have a less complicated license interaction and normally exhibit better license compatibility.4950 For example, if one license says \"modified versions must mention the developers in any advertising materials\", and another license says \"modified versions cannot contain additional attribution requirements\", then, if someone combined a software package which uses one license with a software package which uses the other, it would be impossible to distribute the combination because these contradictory requirements cannot be fulfilled simultaneously. Thus, these two packages would be license-incompatible. When it comes to copyleft software licenses, they are not inherently compatible with other copyleft licenses, even the GPLv2 is, by itself, not compatible with the GPLv3.2551|||Purpose of useedit|||Restrictions on use of a software (\"use restrictions\") are generally unacceptable according to the FSF, OSI, Debian, or the BSD-based distributions. Examples include prohibiting that the software be used for non-private applications, for military purposes, for comparison or benchmarking, for good use,[clarification needed] for ethically questionable means,52 or in commercial organizations.53 While some restrictions on user freedom, e.g. concerning nuclear war, seem to enjoy moral support among most free software developers,54 it is generally believed that such agendas should not be served through software licenses; among other things because of practical aspects such as resulting legal uncertainties and problems with enforceability of vague, broad and/or subjective criteria or because tool makers are generally not held responsible for other people's use of their tools. Nevertheless some projects include legally non-binding pleas to the user, prominently SQLite.55 Among the repeated attempts565758 by developers to regulate user behavior through the license that sparked wider debate are Douglas Crockford's (joking) “no evil” clause, which affected the release process of the Debian distribution in 201259 and got the JSMin-PHP project expelled from Google Code,60 the addition of a pacifist condition based on Asimov's First Law of Robotics to the GPL for the distributed computing software GPU in 2005,61 as well as several software projects trying to exclude use by big cloud providers.6263|||Definition conflictsedit|||As there are several defining organizations and groups who publish definitions and guidelines about FOSS licenses, notably the FSF, the OSI, the Debian project, and the BSDs, there are sometimes conflicting opinions and interpretations.|||Permissive versus copyleft opinionsedit|||This section may be unbalanced toward certain viewpoints. Please improve the article by adding information on neglected viewpoints, or discuss the issue on the talk page. (July 2020)|||Many users and developers of BSD-based operating systems have a different position on licensing. The main difference is the belief that the copyleft licenses, particularly the GNU General Public License (GPL), are undesirably complicated and/or restrictive.64 The GPL requires any derivative work to also be released according to the GPL while the BSD license does not. Essentially, the BSD license's only requirement is to acknowledge the original authors, and poses no restrictions on how the source code may be used.|||As a result, BSD code can be used in proprietary software that only acknowledges the authors. For instance, Microsoft Windows NT 3.1 and macOS have proprietary IP stacks which are derived from BSD-licensed software.65 In extreme cases, the sub- or re-licensing possibilities with BSD or other permissive licenses might prevent further use in the open-source ecosystem. For instance, MathWorks' FileExchange repository offers the BSD license for user contributions but prevents with additional terms of use any usage beside their own proprietary MATLAB software, for instance with the FOSS GNU Octave software.666768|||Supporters of the BSD license argue that it is more free than the GPL because it grants the right to do anything with the source code, provided that the attribution is preserved. The approach has led to BSD code being used in widely used proprietary software. Proponents of the GPL point out that once code becomes proprietary, users are denied the freedoms that define free software.69 As a result, they consider the BSD license less free than the GPL, and that freedom is more than a lack of restriction. Since the BSD license restricts the right of developers to have changes recontributed to the community,[dubious – discuss] neither it nor the GPL is \"free\" in the sense of \"lacking any restrictions.\"|||Debianedit|||The Debian project uses the criteria laid out in its Debian Free Software Guidelines (DFSG). The only notable cases where Debian and Free Software Foundation disagree are over the Artistic License and the GNU Free Documentation License (GFDL). Debian accepts the original Artistic License as being a free software license, but FSF disagrees. This has very little impact however since the Artistic License is almost always used in a dual-license setup, along with the GNU General Public License.|||Controversial borderline casesedit|||The vast majority of free software uses undisputed free-software licenses; however, there have been many debates over whether or not certain other licenses qualify for the definition.|||Examples of licenses that provoked debate were the 1.x series of the Apple Public Source License, which were accepted by the Open Source Initiative but not by the Free Software Foundation or Debian and the RealNetworks Public Source License, which was accepted by Open Source Initiative and Free Software Foundation but not by Debian.|||Also, the FSF recommended GNU Free Documentation License,70 which is incompatible with the GPL,71 was considered \"non-free\" by the Debian project around 2006,72 Nathanael Nerode,73 and Bruce Perens.74 The FSF argues that documentation is qualitatively different from software and is subject to different requirements. Debian accepted, in a later resolution, that the GNU FDL complied with the Debian Free Software Guidelines when the controversial \"invariant section\" is removed, but considers it \"still not free of trouble\".75 Notwithstanding, most GNU documentation includes \"invariant sections\". Similarly, the FLOSS Manuals foundation, an organization devoted to creating manuals for free software, decided to eschew the GFDL in favor of the GPL for its texts in 2007, citing the incompatibility between the two, difficulties in implementing the GFDL, and the fact that the GFDL \"does not allow for easy duplication and modification\", especially for digital documentation.76|||SLUC is a software license published in Spain in December 2006 to allow all but military use. The writers of the license maintain it is free software, but the Free Software Foundation says it is not free because it infringes the so-called \"zero freedom\" of the GPL, that is, the freedom to use the software for any purpose.77|||Market shareedit|||While historically the most widely used FOSS license has been the GPLv2, in 2015, according to Black Duck Software37 the permissive MIT license dethroned the GPLv2 to the second place while the permissive Apache License follows at third place. A study from 2012, which used publicly available data, criticized Black Duck Software for not publishing their methodology used in collecting statistics.78 Daniel German, professor in the Department of Computer Science at the University of Victoria in Canada, presented a talk in 2013 about the methodological challenges in determining which are the most widely used free-software licenses, and showed how he could not replicate the result from Black Duck Software.79|||A GitHub study in 2015 on their statistical data found that the MIT license was the most prominent FOSS license on that platform.38|||In June 2016 an analysis of the Fedora Project's packages showed as most used licenses the GPL family, followed by MIT, BSD, the LGP family, Artistic (for Perl packages), LPPL (for texlive packages), and ASL. The GNU GPLv2+ was the single most popular license39|||See alsoedit|||Free and open-source software portal|||Comparison of free and open-source software licenses|||Developer Certificate of Origin|||End-user license agreement|||License-free software|||List of free-content licences|||Public domain|||Software license|||Notesedit|||^ Wheeler, David A. (2015). \"The fight for freedom\". Archived from the original on 4 July 2017. Retrieved 17 February 2016.|||^ Hancock, Terry (29 August 2008). \"What if copyright didn't apply to binary executables?\". Free Software Magazine. Archived from the original on 25 January 2016. Retrieved 25 January 2016.|||^ Apple Computer, Inc. v. Franklin Computer Corporation Puts the Byte Back into Copyright Protection for Computer Programs in Golden Gate University Law Review Volume 14, Issue 2, Article 3 by Jan L. Nussbaum (January 1984)|||^ Lemley, Menell, Merges and Samuelson. Software and Internet Law, p. 34.|||^ \"GNU Emacs Copying Permission Notice (1985)\". GitHub. Retrieved 8 November 2015.|||^ \"GPLv3 - Transcript of Richard Stallman from the third international GPLv3 conference, Barcelona; 2006-06-22 - FSFE\". Retrieved 15 July 2021.|||^ Rubin, Paul (12 December 1985). \"Montgomery EMACS : when did it leave the Public Domain ?\". Newsgroup: net.emacs. The latter is covered by the GNU Emacs General Public License, which says that sources of anything using it must be available for free to everyone.|||^ \"Free Software - GPL Enforcement\". Tech Insider. Retrieved 1 May 2015.|||^ \"GCC Releases\". Retrieved 19 March 2015.|||^ \"GPLv3 - Transcript of Richard Stallman from the second international GPLv3 conference, Porto Alegre, Brazil; 2006-04-21\". Fsfe - Free Software Foundation Europe. Archived from the original on 15 June 2010. Retrieved 19 March 2015.|||^ Mark (8 May 2008). \"The Curse of Open Source License Proliferation\". socializedsoftware.com. Archived from the original on 8 December 2015. Retrieved 30 November 2015. GNU General Public License (GPL) 2.0 58.69% GNU Lesser General Public License (LGPL) 2.1 11.39% Artistic License (Perl) 7.46% BSD License 6.50% Apache License 2.0 2.92% MIT License 2.58% GNU General Public License (GPL) 3.0 1.64% Mozilla Public License (MPL) 1.1 1.37% Common Public License 0.83% zlib/lippng License 0.64%|||^ David A. Wheeler. \"Estimating Linux's Size\".|||^ \"SourceForge.net: Software Map\". Dwheeler.com. Archived from the original on 13 February 2017. Retrieved 17 November 2008. License -\u003e OSI: […] GNU General Public License (GPL) (32641 projects), GNU Library or Lesser General Public License (LGPL) (4889 projects of 45727, 82.1%)|||^ Kelty, Christpher M. (2008). \"The Cultural Significance of free Software - Two Bits\" (PDF). Duke University press - durham and london. p. 99. Prior to 1998, Free Software referred either to the Free Software Foundation (and the watchful, micromanaging eye of Stallman) or to one of thousands of different commercial, avocational, or university-research projects, processes, licenses, and ideologies that had a variety of names: sourceware, freeware, shareware, open software, public domain software, and so on. The term Open Source, by contrast, sought to encompass them all in one movement.|||^ \"Netscape Announces Plans to Make Next-Generation Communicator Source Code Available Free on the Net\". Netscape Communications Corporation. 22 January 1998. Archived from the original on 1 April 2007. Retrieved 8 August 2013. Bold move to harness creative power of thousands of internet developers; company makes Netscape Navigator and Communicator 4.0 immediately free for all users, seeding market for enterprise and netcenter businesses|||^ \"MOUNTAIN VIEW, Calif., April 1 /PRNewswire/ -- Netscape Communications and open source developers are celebrating the first anniversary, March 31, 1999, of the release of Netscape's browser source code to mozilla.org\". Netscape Communications. 31 March 1999. Archived from the original on 26 March 2014. Retrieved 10 January 2013. ... the organization that manages open source developers working on the next generation of Netscape's browser and communication software. This event marked a historical milestone for the Internet as Netscape became the first major commercial software company to open its source code, a trend that has since been followed by several other corporations. Since the code was first published on the Internet, thousands of individuals and organizations have downloaded it and made hundreds of contributions to the software. Mozilla.org is now celebrating this one-year anniversary with a party Thursday night in San Francisco.|||^ Kelty, Christpher M. (2008). \"The Cultural Significance of free Software - Two Bits\" (PDF). Duke University press - durham and london. p. 100. The term Open Source, by contrast, sought to encompass them all in one movement. The event that precipitated this attempted semantic coup d'état was the release of the source code for Netscape's Communicator Web browser. It's tough to overestimate the importance of Netscape to the fortunes of Free Software. […] But Netscape is far more famous among geeks for giving away something else, in 1998: the source code to Netscape Communicator (née Navigator).|||^ \"Report of License Proliferation Committee and draft FAQ\". Open Source Initiative. 12 December 2007.|||^ \"Groklaw - The German GPL Order - Translated\". Retrieved 19 March 2015.|||^ See Progress Software Corporation v. MySQL AB, 195 F. Supp. 2d 328 (D. Mass. 2002), on defendant's motion for preliminary injunction.|||^ Lawrence Rosen (25 May 2004). \"Why the public domain isn't a license\". rosenlaw.com. Retrieved 22 February 2016.|||^ Bernstein, Daniel J. (2004). \"Placing documents into the public domain\". Most rights can be voluntarily abandoned (\"waived\") by the owner of the rights. Legislators can go to extra effort to create rights that can't be abandoned, but usually they don't do this. In particular, you can voluntarily abandon your United States copyrights: \"It is well settled that rights gained under the Copyright Act may be abandoned. But abandonment of a right must be manifested by some overt act indicating an intention to abandon that right. See Hampton v. Paramount Pictures Corp., 279 F.2d 100, 104 (9th Cir. 1960).\"|||^ Lawrence Rosen (8 March 2012). \"(License-review) (License-discuss) CC0 incompliant with OSD on patents, (was: MXM compared to CC0)\". opensource.org. Archived from the original on 12 March 2016. Retrieved 22 February 2016. The case you referenced in your email, Hampton v. Paramount Pictures, 279 F.2d 100 (9th Cir. Cal. 1960), stands for the proposition that, at least in the Ninth Circuit, a person can indeed abandon his copyrights (counter to what I wrote in my article) -- but it takes the equivalent of a manifest license to do so. :-) ... For the record, I have already voted +1 to approve the CC0 public domain dedication and fallback license as OSD compliant. I admit that I have argued for years against the \"public domain\" as an open source license, but in retrospect, considering the minimal risk to developers and users relying on such software and the evident popularity of that \"license\", I changed my mind. One can't stand in the way of a fire hose of free public domain software, even if it doesn't come with a better FOSS license that I trust more.|||^ Mark (8 May 2008). \"The Curse of Open Source License Proliferation\". socializedsoftware.com. Archived from the original on 8 December 2015. Retrieved 30 November 2015. Currently the decision to move from GPL v2 to GPL v3 is being hotly debated by many open source projects. According to Palamida, a provider of IP compliance software, there have been roughly 2489 open source projects that have moved from GPLv2 to later versions.|||^ a b \"Frequently Asked Questions about the GNU Licenses – Is GPLv3 compatible with GPLv2?\". gnu.org. Retrieved 3 June 2014. No. Some of the requirements in GPLv3, such as the requirement to provide Installation Information, do not exist in GPLv2. As a result, the licenses are not compatible: if you tried to combine code released under both these licenses, you would violate section 6 of GPLv2. However, if code is released under GPL 'version 2 or later,' that is compatible with GPLv3 because GPLv3 is one of the options it permits.|||^ Kerner, Sean Michael (8 January 2008). \"Torvalds Still Keen On GPLv2\". internetnews.com. Retrieved 12 February 2015. In some ways, Linux was the project that really made the split clear between what the FSF is pushing which is very different from what open source and Linux has always been about, which is more of a technical superiority instead of a -- this religious belief in freedom,\" Torvalds told Zemlin. So, the GPL Version 3 reflects the FSF's goals and the GPL Version 2 pretty closely matches what I think a license should do and so right now, Version 2 is where the kernel is.|||^ a b Byfield, Bruce (22 November 2011). \"7 Reasons Why Free Software Is Losing Influence: Page 2\". Datamation.com. Retrieved 23 August 2013. At the time, the decision seemed sensible in the face of a deadlock. But now, GPLv2 is used for 42.5% of free software, and GPLv3 for less than 6.5%, according to Black Duck Software.|||^ \"MySQL changes license to avoid GPLv3\". Computer business review online. 4 January 2007. Archived from the original on 6 February 2007. Retrieved 21 November 2016.|||^ corbet (1 October 2006). \"Busy busy busybox\". lwn.net. Retrieved 21 November 2015. Since BusyBox can be found in so many embedded systems, it finds itself at the core of the GPLv3 anti-DRM debate. […] The real outcomes, however, are this: BusyBox will be GPLv2 only starting with the next release. It is generally accepted that stripping out the \"or any later version\" is legally defensible, and that the merging of other GPLv2-only code will force that issue in any case.|||^ Landley, Rob (9 September 2006). \"Re: Move GPLv2 vs v3 fun...\" lwn.net. Retrieved 21 November 2015. Don't invent a straw man argument please. I consider licensing BusyBox under GPLv3 to be useless, unnecessary, overcomplicated, and confusing, and in addition to that it has actual downsides. 1) Useless: We're never dropping GPLv2.|||^ Prokoudine, Alexandre (26 January 2012). \"What's up with DWG adoption in free software?\". libregraphicsworld.org. Archived from the original on 9 November 2016. Retrieved 5 December 2015. Blender is also still 'GPLv2 or later'. For the time being we stick to that, moving to GPL 3 has no evident benefits I know of.|||^ Denis-Courmont, Rémi. \"VLC media player to remain under GNU GPL version 2\". videolan.org. Retrieved 21 November 2015. In 2001, VLC was released under the OSI-approved GNU General Public version 2, with the commonly-offered option to use 'any later version' thereof (though there was not any such later version at the time). Following the release by the Free Software Foundation (FSF) of the new version 3 of its GNU General Public License (GPL) on the 29th of June 2007, contributors to the VLC media player, and other software projects hosted at videolan.org, debated the possibility of updating the licensing terms for future version of the VLC media player and other hosted projects, to version 3 of the GPL. ... There is strong concern that these new additional requirements might not match the industrial and economic reality of our time, especially in the market of consumer electronics. It is our belief that changing our licensing terms to GPL version 3 would currently not be in the best interest of our community as a whole. Consequently, we plan to keep distributing future versions of VLC media player under the terms of the GPL version 2.|||^ Asay, Matt (23 July 2009). \"GPLv3 hits 50 percent adoption | The Open Road - CNET News\". News.cnet.com. Archived from the original on 29 October 2013. Retrieved 2 September 2013.|||^ Proffitt, Brian (16 December 2011). \"GPL, copyleft use declining faster than ever\". ITworld. Archived from the original on 4 September 2017. Retrieved 17 February 2016.|||^ Proffitt, Brian (16 December 2011). \"GPL, copyleft use declining faster than ever - Data suggests a sharper rate of decline, which raises the question: why?\". IT world. Archived from the original on 3 December 2013. Retrieved 23 August 2013.|||^ Aslett, Matthew (15 December 2011). \"On the continuing decline of the GPL\". Archived from the original on 9 December 2016. Retrieved 17 February 2016.|||^ a b \"Top 20 licenses\". Black Duck Software. 19 November 2015. Archived from the original on 19 July 2016. Retrieved 19 November 2015. 1. MIT license 24%, 2. GNU General Public License (GPL) 2.0 23%, 3. Apache License 16%, 4. GNU General Public License (GPL) 3.0 9%, 5. BSD License 2.0 (3-clause, New or Revised) License 6%, 6. GNU Lesser General Public License (LGPL) 2.1 5%, 7. Artistic License (Perl) 4%, 8. GNU Lesser General Public License (LGPL) 3.0 2%, 9. Microsoft Public License 2%, 10. Eclipse Public License (EPL) 2%|||^ a b Balter, Ben (9 March 2015). \"Open source license usage on GitHub.com\". github.com. Retrieved 21 November 2015. 1 MIT 44.69%, 2 Other 15.68%, 3 GPLv2 12.96%, 4 Apache 11.19%, 5 GPLv3 8.88%, 6 BSD 3-clause 4.53%, 7 Unlicense 1.87%, 8 BSD 2-clause 1.70%, 9 LGPLv3 1.30%, 10 AGPLv3 1.05%|||^ a b Anwesha Das (22 June 2016). \"Software Licenses in Fedora Ecosystem\". anweshadas.in. Retrieved 27 June 2016. From the above chart it is clear that the GPL family is the highest used (I had miscalculated it as MIT before).The other major licenses are MIT, BSD, the LGPL family, Artistic (for Perl packages), LPPL (foe texlive packages), ASL.|||^ \"Various Licenses and Comments about Them - GNU Project - Free Software Foundation\". Retrieved 19 March 2015.|||^ \"Why you should use a BSD style license for your Open Source Project\". Retrieved 19 March 2015.|||^ \"Why you should use a BSD style license for your Open Source Project\". Retrieved 19 March 2015.|||^ \"GPLv3 - Transcript of Richard Stallman from the fifth international GPLv3 conference, Tokyo, Japan; 2006-11-21\". Retrieved 19 March 2015.|||^ \"Richard Stallman discusses changes in GPLv3\". a new method of trying to deprive the users of freedom. In broad terms we refer to this as tivoization.|||^ Wheeler, David A. (27 September 2007). \"The Free-Libre / Open Source Software (FLOSS) License Slide\". Archived from the original on 9 March 2011. Retrieved 28 November 2015.|||^ \"How GPLv3 tackles license proliferation\". Archived from the original on 2 May 2013.|||^ LAURENT, Philippe (24 September 2008). \"The GPLv3 and compatibility issues\" (PDF). European Open source Lawyers Event 2008. University of Namur – Belgium. p. 7. Archived from the original (PDF) on 4 March 2016. Retrieved 30 May 2015. Copyleft is the main source of compatibility problems.|||^ Apache foundation (30 May 2015). \"GPL compatibility\". Retrieved 30 May 2015. Apache 2 software can therefore be included in GPLv3 projects, because the GPLv3 license accepts our software into GPLv3 works. However, GPLv3 software cannot be included in Apache projects. The licenses are incompatible in one direction only, and it is a result of ASF's licensing philosophy and the GPLv3 authors' interpretation of copyright law.|||^ Hanwell, Marcus D. (28 January 2014). \"Should I use a permissive license? Copyleft? Or something in the middle?\". opensource.com. Retrieved 30 May 2015. Permissive licensing simplifies things One reason the business world, and more and more developers […], favor permissive licenses is in the simplicity of reuse. The license usually only pertains to the source code that is licensed and makes no attempt to infer any conditions upon any other component, and because of this there is no need to define what constitutes a derived work. I have also never seen a license compatibility chart for permissive licenses; it seems that they are all compatible.|||^ \"Licence Compatibility and Interoperability\". Open-Source Software - Develop, share, and reuse open source software for public administrations. joinup.ec.europa.eu. Archived from the original on 17 June 2015. Retrieved 30 May 2015. The licences for distributing free or open source software (FOSS) are divided in two families: permissive and copyleft. Permissive licences (BSD, MIT, X11, Apache, Zope) are generally compatible and interoperable with most other licences, tolerating to merge, combine or improve the covered code and to re-distribute it under many licences (including non-free or 'proprietary').|||^ Landley, Rob. \"CELF 2013 Toybox talk\". landley.net. Retrieved 21 August 2013. GPLv3 broke \"the\" GPL into incompatible forks that can't share code.|||^ \"The HESSLA's Problems - GNU Project - Free Software Foundation\". Retrieved 19 March 2015.|||^ \"GPLv3 - Transcript of Richard Stallman from the third international GPLv3 conference, Barcelona; 2006-06-22\". Retrieved 19 March 2015.|||^ \"Censorship envy and licensing — Free Software Foundation — Working together for free software\".|||^ \"Distinctive Features of SQLite\".|||^ \"A Peaceful Open Source License | Wise Earth Technology\".|||^ \"Non-military Use Only\".|||^ \"❌(REVERTED): Add text to MIT License banning ICE collaborators by jamiebuilds · Pull Request #1616 · lerna/Lerna\". GitHub.|||^ \"Evil, or why Douglas Crockford is harmful to Free Software\". 8 November 2012.|||^ \"JSMin isn't welcome on Google Code - wonko.com\". wonko.com. Retrieved 1 June 2024.|||^ \"Open source project adds \"no military use\" clause to the GPL\". 14 August 2006.|||^ \"Home\". commonsclause.com.|||^ \"The SSPL is Not an Open Source License | Open Source Initiative\". 19 January 2021.|||^ \"OpenBSD Copyright Policy\". the restriction that source code must be distributed or made available for all works that are derivatives […] As a consequence, software bound by the GPL terms cannot be included in the kernel or \"runtime\" of OpenBSD|||^ \"FreeBSD der unbekannte Riese\" (in German). 30 August 2023.|||^ \"terms of use\". Content that you submit must not directly compete with products offered by MathWorks. Content submitted to File Exchange may only be used with MathWorks products.|||^ \"File Exchange Licensing Transition FAQ\".|||^ \"Why can't I use code from File Exchange in Octave? It's released under a BSD license!\".|||^ \"Freedom or Power? by Bradley Kuhn and Richard Stallman\".|||^ \"Frequently Asked Questions about the GNU Licenses: Why don't you use the GPL for manuals?\". Retrieved 20 June 2009.|||^ Braakman, Richard. \"Re: Proposed statement wrt GNU FDL\". Debian-legal (Mailing list).|||^ Srivastava, Manoj (2006). \"Draft Debian Position Statement about the GNU Free Documentation License (nerGFDL)\". Retrieved 25 September 2007. It is not possible to borrow text from a GFDL'd manual and incorporate it in any free software program whatsoever. This is not a mere license incompatibility. It's not just that the GFDL is incompatible with this or that free software license: it's that it is fundamentally incompatible with any free software license whatsoever. So if you write a new program, and you have no commitments at all about what license you want to use, saving only that it be a free license, you cannot include GFDL'd text. The GNU FDL, as it stands today, does not meet the Debian Free Software Guidelines. There are significant problems with the license, as detailed above; and, as such, we cannot accept works licensed under the GNU FDL into our distribution.|||^ Nerode, Nathanael (24 September 2003). \"Why You Shouldn't Use the GNU FDL\". Archived from the original on 9 October 2003. Retrieved 7 November 2011.|||^ Bruce Perens (2 September 2003). \"stepping in between Debian and FSF\". lists.debian.org/debian-legal. Retrieved 20 March 2016. FSF, a Free Software organization, isn't being entirely true to the Free Software ethos while it is promoting a license that allows invariant sections to be applied to anything but the license text and attribution. FSF is not Creative Commons:the documentation that FSF handles is an essential component of FSF's Free Software, and should be treated as such. In that light, the GFDL isn't consistent with the ethos that FSF has promoted for 19 years.|||^ \"Resolution: Why the GNU Free Documentation License is not suitable for Debian\". Debian Project. February–March 2006. Retrieved 20 June 2009.|||^ FLOSS Manuals Foundation (6 June 2007). \"License Change\". FLOSS Manuals Blog. FLOSS Manuals Foundation. Archived from the original on 28 February 2008. Retrieved 20 June 2009.|||^ \"Transcript of Richard Stallman at the 3nd international GPLv3 conference\". Free Software Foundation Europe. 22 June 2006. Retrieved 23 July 2017.|||^ Sam Varghese (7 February 2012). \"GPL use in Debian on the rise: study\". Itwire.com. Retrieved 2 September 2013.|||^ \"Surveying open source licenses\". Lwn.net. Retrieved 2 September 2013.|||Referencesedit|||Rosen, Lawrence (22 July 2004). Open Source Licensing: Software Freedom and Intellectual Property Law. Prentice Hall. ISBN 978-0-13-148787-1.|||External linksedit|||Wikibooks has a book on the topic of: FOSS Licensing|||The Free Software Definition, by the Free Software Foundation.|||The Free Software Foundation's list of free and non-free licenses|||Debian's license information page|||Open Source Initiative's list of licenses|||Understanding Open Source and Free Software Licensing, by Andrew M. St. Laurent|||A 45-page licensing primer by Software Freedom Law Center|||show|||v|||t|||e|||Free and open-source software|||show|||v|||t|||e|||Intellectual property activism|||show|||v|||t|||e|||Software distribution|||Categories:|||Free and open-source software licenses|||Terms of service|||This page was last edited on 20 April 2025, at 15:34 (UTC).|||Text is available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.",
                    "bookmark_id": 11,
                    "bookmark": {
                        "id": 0,
                        "created_at": "0001-01-01T00:00:00Z",
                        "updated_at": "0001-01-01T00:00:00Z",
                        "deleted_at": null,
                        "url": "",
                        "title": "",
                        "notes": "",
                        "domain": "",
                        "favicon": "",
                        "tags": null,
                        "snapshots": null,
                        "collection": null,
                        "public": false,
                        "unread": false,
                        "user_id": 0
                    },
                    "size": 273425,
                    "resources": null
                }
            ],
            "collection": null,
            "public": true,
            "unread": false,
            "user_id": 1
        },
        {
            "id": 10,
            "created_at": "2025-05-08T13:42:28.060932314Z",
            "updated_at": "2025-05-08T13:42:28.060932314Z",
            "deleted_at": null,
            "url": "https://en.wikipedia.org/wiki/GNU_Affero_General_Public_License",
            "title": "GNU Affero General Public License - Wikipedia",
            "notes": "",
            "domain": "en.wikipedia.org",
            "favicon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAACgCAAAAACupDjxAAAE6ElEQVR4AezOAQEAAAQAIP9PMwPUgiKHExQUFBQUFBQUFBQUFBS8GRQUFBQUFBQUFBQUFBQUFBQUFBQs4szAQ5UujMN/1I+RiLEkElkiRMRHCCEilhDiYkNEliyEi3AJIQsXi2VZliAkiwhZWWGM33dvzrzONHMWbjPzAJz7+R4z5zzvmfa/m0KpWm92evejx+lkPOi1G7VSPmvndjzl7Wyx+mdp8DB9GPa7rUatXMzmPugUU3a+XG/3huPxsN9pVPJ2qkIurfTNn3/fvR89jAbdZrVgp0r/LpiDgVceLYTxzC2ClMkHBLj9d8H3fjnEw64PvsinTj7wf2wNj3Qf7yrQSdcGK/Jj2C5Aw6rcb66yB4/LW/jIzxwqNg1otNf0WLfgUZjLP3cXedEbHa93SJxpGgIKB2rMND9quJ760KHGKqVe+ea6p/hFM3yjj6EsPPn/E5wZ008Xf8nvr52ZX/DIuPThlKBYUOeIv7R4wVSdpKt3UPZUIA3PUPygzg4Asp8UtC3RjSDU25R3JB1e4O22mxM1fgfeuuyI9C4CQf6AYhlIERRzanQANEPKL4/62oIfXg8bND3CMgXuLcAKHtWDBVgfkQiyA8UmcMah+E1hIE8qcEY6jEbwDYo+L6mqlSo99mkgc2CAW+nU9QVZ8UITmAFLKF70HTsiw058hVEJSgunvMD1hmHda0wKsI/hsZpHJniylUbRDdZN8c4zPQATBthZQNaJTJCDwGEQ9yygTY6tBeRODI3giNEJflOaCRRrkrwD8JMBnCxg7SMUZNNYms+MWrkjubaAgsMAC7UeneCzuTT3asX6MB+FmmzSqAR5ayzNzhL3FYCSywArKWV0glNjadhVK6l9Iziw5WjPIxY8ZoylWUNRN8T4mJbGRCfIvrE0bELAs+Hpjxm14BrG0rxC+M+wf6195IKsG0vDKjxeDQW4Y/SCSymNealu+mZ4j0HQyUtpjFeGvBM+hquMQZATc2lmwbu/MAKwiEXwkJLSGK8MJTdsDOecWAR5J6UxP91l2Bh+YDyC71Ia81Il5GMutY9JkFVjadqmUq/laz0OwbmpNGsI9eAYXsUmeLoxlKYFAW+XI7zG2AQ5DJRGdqC8/ublGF7EKLizQkvTAKxtQ7v7CyVpTDyCbIWV5u28K1+g6FB4kcbEJSgWDf81Ir2nnHFrqx/u1CFWQZakND7poX5l6Om/I3UZr+BPKY2eYvuTpFuUu782hlcxC35lpDTade/Rf2W45xknJzfY+AT547I0VfktQa4MmYOM4WXsghv4S/MEYHZ5ZRh77z7vxC7Ihr80ZeDWufyVwf5S82/C+AWffKVZ+l7jQH//fSB9SEDQLWilcUtAJWTS5JzzGO4yAUE+an8emV9csLpQzM5BWiUieEhLaZwiUA+9dxWdkjQmXkH9MU1/Bb4omzJOZHPGL7iSx1QA2sZfGaQxsQuyBsHamNcmTEpwAaFnqpA0JglBJysSO/N9p8fEBDmCYvDNH1XWCQruVZDtAwM4Ofm8S06QbTkGxpA/JScoNcmeGMLRPjfGTVSQZQD4+c3H6SOTFZydx5lhh6aA9GfCgif7my/ynjQmOUGOv7kKbO30JnFB7lwa+Tr+364dCwAAAAAI87cOo2cRDCD/ICAgICAgICDgEyAgICAgICAgICAgICAgICBgYUeNfR+Kw20AAAAASUVORK5CYII=",
            "tags": [
                {
                    "id": 1,
                    "created_at": "2025-04-02T14:11:26.52753391Z",
                    "updated_at": "2025-04-02T14:11:26.52753391Z",
                    "deleted_at": null,
                    "text": "wikipedia",
                    "bookmarks": null
                },
                {
                    "id": 5,
                    "created_at": "2025-04-02T14:13:58.496800641Z",
                    "updated_at": "2025-04-02T14:13:58.496800641Z",
                    "deleted_at": null,
                    "text": "free software",
                    "bookmarks": null
                },
                {
                    "id": 14,
                    "created_at": "2025-05-08T13:32:57.497130706Z",
                    "updated_at": "2025-05-08T13:32:57.497130706Z",
                    "deleted_at": null,
                    "text": "license",
                    "bookmarks": null
                }
            ],
            "snapshots": [
                {
                    "id": 10,
                    "created_at": "2025-05-08T13:42:28.095369426Z",
                    "updated_at": "2025-05-08T13:42:28.56281417Z",
                    "deleted_at": null,
                    "title": "",
                    "key": "b5fae3be919d2e17ccd31303bc3b13331b0c80aa7bff7448a92e4c52fc669290",
                    "text": "Search|||Donate|||Create account|||Log in|||Contents hide|||(Top)|||History|||Compatibility with the GPL|||Examples of applications under GNU AGPL|||See also|||References|||External links|||GNU Affero General Public License|||26 languages|||Tools|||Appearance hide|||Text|||Small|||Standard|||Large|||Width|||Standard|||Wide|||Color (beta)|||Automatic|||Light|||Dark|||From Wikipedia, the free encyclopedia|||GNU Affero General Public License|||Author|||Free Software Foundation|||Latest version|||3|||Publisher|||Free Software Foundation, Inc.|||Published|||November 19, 2007|||SPDX identifier|||AGPL-3.0-or-laterAGPL-3.0-only|||Debian FSG compatible|||Yes1|||FSF approved|||Yes2|||OSI approved|||Yes34|||GPL compatible|||Yes (permits linking with GPLv3)5|||Copyleft|||Yes,2 incl. use over network|||Linking from code with a different licence|||Only with GPLv3; AGPL terms will apply for the AGPL part in a combined work.25|||Website|||www.gnu.org/licenses/agpl.html|||The GNU Affero General Public License (GNU AGPL) is a free, copyleft license published by the Free Software Foundation in November 2007, and based on the GNU GPL version 3 and the Affero General Public License (non-GNU).|||It is intended for software designed to be run over a network, adding a provision requiring that the corresponding source code of modified versions of the software be prominently offered to all users who interact with the software over a network.6|||The Open Source Initiative approved the GNU AGPLv33 as an open source license in March 2008 after the company Funambol submitted it for consideration through its CEO Fabrizio Capobianco.7|||Historyedit|||In 2000, while developing an e-learning and e-service business model at Mandriva, Henry Poole met with Richard Stallman in Amsterdam and discussed the issue of the GPLv2 license not requiring Web application providers to share source code with the users interacting with their software over a network. Over the following months, Stallman and Poole discussed approaches to solve the problem. In 2001, Poole founded Affero Inc. (a web services business), and he needed a license that would require distribution by other organizations who used Affero code to create derivative web services. At that time, Poole contacted Bradley M. Kuhn and Eben Moglen of the Free Software Foundation to get advice on a new license that would resolve this matter in GPLv2.|||Around late February 2002, Kuhn suggested, based on the idea of a quine (a program that prints its own source code), that GPLv2 be supplemented with a section 2(d) that would require derivative works to maintain a \"download source\" feature that would provide complete and corresponding source code. Kuhn argued that there was precedent for such a requirement in GPLv2 section 2(c), which required preserving certain features by downstream distributors and modifiers.8|||Moglen and Kuhn wrote the text of the proposed new section 2(d), and provided it to Poole, who then requested and received permission from the FSF to publish a derivative of GPLv2 for this purpose. In March 2002, Affero, Inc. published the original Affero General Public License (AGPLv1) for use with the Affero project and made the new license available for use by other software-as-a-service developers.91011|||The FSF contemplated including the special provision of AGPLv1 into GPLv3 but ultimately decided to publish a separate license, nearly identical to GPLv3 but containing a provision similar in purpose and effect to section 2(d) of AGPLv1. The new license was named the GNU Affero General Public License. Retaining the Affero name indicated its close historic relationship with AGPLv1. The GNU AGPL was given version number 3 for parity with the GPL, and the current GNU Affero General Public License is often abbreviated AGPLv3.|||The finalized version of GNU AGPLv312 was published by the FSF on November 19, 2007.|||Compatibility with the GPLedit|||Both versions of the AGPL, like the corresponding versions of the GNU GPL on which they are based, are strong copyleft licenses. In the Free Software Foundation's judgment, the added requirement in section 2(d) of Affero GPL v1 made it incompatible with the otherwise nearly identical GPLv2. That is to say, one cannot distribute a single work formed by combining components covered by each license.|||By contrast, the GPLv3 and GNU AGPLv3 licenses include clauses (in section 13 of each license) that together achieve a form of mutual compatibility for the two licenses. These clauses explicitly allow the \"conveying\" of a work formed by linking code licensed under the one license against code licensed under the other license,13 despite the licenses otherwise not allowing relicensing under the terms of each other.2 In this way, the copyleft of each license is relaxed to allow distributing such combinations.2|||To establish an upgrade path from Affero's original AGPLv1 to the GNU AGPLv3, Affero, Inc. published the Affero General Public License version 2 in November 2007,14 which is merely a transitional license that allows recipients of software licensed under \"AGPLv1 or any later version as published by Affero, Inc.\" to distribute the software, or derivative works, under the GNU AGPLv3 or any later version.|||Examples of applications under GNU AGPLedit|||Main article: List of software under the GNU AGPL|||Stet was the first software system known to be released under the GNU AGPL, on November 21, 2007,8 and is the only known program to be used mainly for the production of its own license.|||Flask developer Armin Ronacher noted in 2013 that the GNU AGPL is a \"terrible success, especially among the startup community\" as a \"vehicle for dual commercial licensing\", and gave HumHub, MongoDB, Odoo, RethinkDB, Shinken, Slic3r, SugarCRM, and WURFL as examples.15|||MongoDB dropped the AGPL in late-2018 in favor of the \"Server Side Public License\" (SSPL), a modified version which requires those who offer the licensed software as a service accessible to third-parties, to make the entire source code of all software used to facilitate the service (including without limitation all \"management software, user interfaces, application program interfaces, automation software, monitoring software, backup software, storage software and hosting software, all such that a user could run an instance of the service using the Service Source Code you make available\") available under the same license.16 As approval for the SSPL by the Open Source Initiative was not forthcoming, the application for certification was withdrawn. It was banned by both Debian and the Fedora Project, who state that the license's intent is to discriminate against cloud computing providers offering services based on the software without purchasing its commercial license.[clarification needed]1718|||Software continues to be released under AGPLv3, various examples include many servers and clients for the fediverse such as Mastodon, Pixelfed and PeerTube, office suite software OnlyOffice, the RStudio IDE for the R programming language, system monitoring platform Grafana, the document/bibliography management system Zotero and more.|||Decentralized chat and collaboration software Element was relicensed from Apache 2.0 to both AGPLv3 and GPLv3, with a separate commercial license for Element Commercial.192021|||See alsoedit|||Free and open-source software portal|||List of software under the GNU AGPL|||Free-software license|||GNU General Public License|||GNU Lesser General Public License|||GNAT Modified General Public License|||GPL linking exception|||GNU Free Documentation License|||Comparison of free and open-source software licenses|||Referencesedit|||^ Jaspert, Joerg (November 28, 2008). \"ftp.debian.org: Is AGPLv3 DFSG-free?\". The Debian Project. Retrieved December 1, 2008.|||^ a b c d e \"Various Licenses and Comments about Them\". Free Software Foundation. 2020-05-07. Retrieved 2021-01-03. We recommend that developers consider using the GNU AGPL for any software which will commonly be run over a network.|||^ a b \"OSI approved licenses\". Open Source initiative. Archived from the original on 2021-10-23.|||^ \"OSI approved\", Licenses, TL;DR legal, archived from the original on 2021-11-28, retrieved 2016-02-17.|||^ a b \"Licenses section 13\", GNU AGPLv3, GNU Project.|||^ \"Why the Affero GPL\". The GNU Project. Archived from the original on 2021-10-23.|||^ \"Funambol Helps New AGPLv3 Open Source License Gain Formal OSI Approval\" (Press release). Funambol. Mar 13, 2008. Archived from the original on 2013-06-07.|||^ a b Kuhn, Bradley M. (November 21, 2007). \"stet and AGPLv3\". Software Freedom Law Center. Archived from the original on March 15, 2008. Retrieved June 14, 2008.|||^ \"Affero GPLv3: Why It Exists \u0026 Who It's For?\". ebb.org. Retrieved 2024-04-25.|||^ \"SCALE: The life and times of the AGPL [LWN.net]\". lwn.net. Retrieved 2024-04-25.|||^ \"Free Software Foundation Announces Support of the Affero General Public License, the First Copyleft License for Web Services\". Free Software Foundation. 2002-03-19. Retrieved 2021-01-03.|||^ \"License text of GNU AGPLv3\". Free Software Foundation (US). November 19, 2007. Archived from the original on 2007-12-04. Retrieved November 19, 2007.|||^ \"GNU General Public License\". Free Software Foundation. 2007-06-29. Retrieved 2021-01-03.|||^ \"Affero General Public License\". November 2007. Archived from the original on 2019-11-23. Retrieved 2021-01-03.|||^ Ronacher, Armin (2013-07-23). \"Licensing in a Post Copyright World\". lucumr.pocoo.org. Archived from the original on 2013-07-27. Retrieved 2015-11-18. The AGPLv3 was a terrible success, especially among the startup community that found the perfect base license to make dual licensing with a commercial license feasible. MongoDB, RethinkDB, OpenERP, SugarCRM as well as WURFL all now utilize the AGPLv3 as a vehicle for dual commercial licensing. The AGPLv3 makes that generally easy to accomplish as the original copyright author has the rights to make a commercial license possible but nobody who receives the sourcecode itself through the APLv3 inherits that right. I am not sure if that was the intended use of the license, but that's at least what it's definitely being used for now.|||^ \"Server Side Public License (SSPL)\". MongoDB. Archived from the original on 2021-10-23. Retrieved 2021-01-25.|||^ Vaughan-Nichols, Steven J. \"MongoDB \"open-source\" Server Side Public License rejected\". ZDNet. Archived from the original on 2021-10-23. Retrieved 2019-01-17.|||^ \"MongoDB's licensing changes led Red Hat to drop the database from the latest version of its server OS\". GeekWire. 2019-01-16. Archived from the original on 2021-10-23. Retrieved 2019-01-17.|||^ \"Element Copyright License - AGPL 3.0\". Github. Retrieved 20 January 2025.|||^ \"Element Copyright License - GPL 3.0\". Github. Retrieved 20 January 2025.|||^ \"Element Copyright License - Commercial License\". Github. Retrieved 20 January 2025.|||External linksedit|||Official website|||GNU Affero General Public License v3.0|||Smith, Brett (November 19, 2007). \"Free Software Foundation Releases GNU Affero General Public License Version 3\" (Press release).|||Smith, Brett (March 29, 2007), GPLv3 and Software as a Service – also includes info on version 2 of the Affero GPL.|||Kuhn, Bradley M. (March 19, 2002). \"Free Software Foundation Announces Support of the Affero General Public License, the First Copyleft License for Web Services\" (Press release).|||Internet Archive 2018 snapshot of AGPL Frequently Asked Questions Affero|||Internet Archive 2018 snapshot of AGPL text Affero|||show|||v|||t|||e|||GNU Project|||show|||v|||t|||e|||Free Software Foundation|||Categories:|||Free Software Foundation|||Free and open-source software licenses|||Computer law|||Copyleft software licenses|||GNU Project|||Copyleft|||This page was last edited on 7 April 2025, at 16:08 (UTC).|||Text is available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.",
                    "bookmark_id": 10,
                    "bookmark": {
                        "id": 0,
                        "created_at": "0001-01-01T00:00:00Z",
                        "updated_at": "0001-01-01T00:00:00Z",
                        "deleted_at": null,
                        "url": "",
                        "title": "",
                        "notes": "",
                        "domain": "",
                        "favicon": "",
                        "tags": null,
                        "snapshots": null,
                        "collection": null,
                        "public": false,
                        "unread": false,
                        "user_id": 0
                    },
                    "size": 160497,
                    "resources": null
                }
            ],
            "collection": null,
            "public": true,
            "unread": false,
            "user_id": 1
        },
        {
            "id": 9,
            "created_at": "2025-05-08T13:32:57.505313926Z",
            "updated_at": "2025-05-08T13:32:57.505313926Z",
            "deleted_at": null,
            "url": "https://www.gnu.org/licenses/agpl-3.0.html",
            "title": "GNU Affero General Public License - GNU Project - Free Software Foundation",
            "notes": "",
            "domain": "www.gnu.org",
            "favicon": "data:image/png;base64,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",
            "tags": [
                {
                    "id": 5,
                    "created_at": "2025-04-02T14:13:58.496800641Z",
                    "updated_at": "2025-04-02T14:13:58.496800641Z",
                    "deleted_at": null,
                    "text": "free software",
                    "bookmarks": null
                },
                {
                    "id": 14,
                    "created_at": "2025-05-08T13:32:57.497130706Z",
                    "updated_at": "2025-05-08T13:32:57.497130706Z",
                    "deleted_at": null,
                    "text": "license",
                    "bookmarks": null
                }
            ],
            "snapshots": [
                {
                    "id": 9,
                    "created_at": "2025-05-08T13:32:57.517160503Z",
                    "updated_at": "2025-05-08T13:32:57.643896796Z",
                    "deleted_at": null,
                    "title": "",
                    "key": "1a7bffb3d3200eb1b6dbf9be0d83788e6cad4fb0f60e61843de59bf8021c007d",
                    "text": "Free Software Supporter:|||JOIN THE FSF|||GNU Operating System Supported by the Free Software Foundation|||ABOUT GNU|||PHILOSOPHY|||LICENSES|||EDUCATION|||SOFTWARE|||DISTROS|||DOCS|||MALWARE|||HELP GNU|||AUDIO \u0026 VIDEO|||GNU ART|||FUN|||GNU'S WHO?|||SOFTWARE DIRECTORY|||HARDWARE|||SITEMAP|||GNU Affero General Public License|||Skip to license text|||Why the Affero GPL|||Frequently Asked Questions|||How to use GNU licenses for your own software|||Translations of the GNU AGPL|||The GNU AGPL in other formats: plain text, Docbook, LaTeX, standalone HTML, Texinfo, Markdown, ODF, RTF|||GNU AGPL logos to use with your project|||What to do if you see a possible GNU AGPL violation|||GNU AFFERO GENERAL PUBLIC LICENSE|||Version 3, 19 November 2007|||Copyright © 2007 Free Software Foundation, Inc. \u003chttps://fsf.org/\u003e Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.|||Preamble|||The GNU Affero General Public License is a free, copyleft license for software and other kinds of works, specifically designed to ensure cooperation with the community in the case of network server software.|||The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, our General Public Licenses are intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users.|||When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things.|||Developers that use our General Public Licenses protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License which gives you legal permission to copy, distribute and/or modify the software.|||A secondary benefit of defending all users' freedom is that improvements made in alternate versions of the program, if they receive widespread use, become available for other developers to incorporate. Many developers of free software are heartened and encouraged by the resulting cooperation. However, in the case of software used on network servers, this result may fail to come about. The GNU General Public License permits making a modified version and letting the public access it on a server without ever releasing its source code to the public.|||The GNU Affero General Public License is designed specifically to ensure that, in such cases, the modified source code becomes available to the community. It requires the operator of a network server to provide the source code of the modified version running there to the users of that server. Therefore, public use of a modified version, on a publicly accessible server, gives the public access to the source code of the modified version.|||An older license, called the Affero General Public License and published by Affero, was designed to accomplish similar goals. This is a different license, not a version of the Affero GPL, but Affero has released a new version of the Affero GPL which permits relicensing under this license.|||The precise terms and conditions for copying, distribution and modification follow.|||TERMS AND CONDITIONS|||0. Definitions.|||\"This License\" refers to version 3 of the GNU Affero General Public License.|||\"Copyright\" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks.|||\"The Program\" refers to any copyrightable work licensed under this License. Each licensee is addressed as \"you\". \"Licensees\" and \"recipients\" may be individuals or organizations.|||To \"modify\" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a \"modified version\" of the earlier work or a work \"based on\" the earlier work.|||A \"covered work\" means either the unmodified Program or a work based on the Program.|||To \"propagate\" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well.|||To \"convey\" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.|||An interactive user interface displays \"Appropriate Legal Notices\" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion.|||1. Source Code.|||The \"source code\" for a work means the preferred form of the work for making modifications to it. \"Object code\" means any non-source form of a work.|||A \"Standard Interface\" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language.|||The \"System Libraries\" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A \"Major Component\", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it.|||The \"Corresponding Source\" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work.|||The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source.|||The Corresponding Source for a work in source code form is that same work.|||2. Basic Permissions.|||All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law.|||You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you.|||Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary.|||3. Protecting Users' Legal Rights From Anti-Circumvention Law.|||No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures.|||When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures.|||4. Conveying Verbatim Copies.|||You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program.|||You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee.|||5. Conveying Modified Source Versions.|||You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions:|||a) The work must carry prominent notices stating that you modified it, and giving a relevant date.|||b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to \"keep intact all notices\".|||c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it.|||d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so.|||A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an \"aggregate\" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate.|||6. Conveying Non-Source Forms.|||You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways:|||a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange.|||b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge.|||c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b.|||d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements.|||e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d.|||A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work.|||A \"User Product\" is either (1) a \"consumer product\", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, \"normally used\" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product.|||\"Installation Information\" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made.|||If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM).|||The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network.|||Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying.|||7. Additional Terms.|||\"Additional permissions\" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions.|||When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission.|||Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms:|||a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or|||b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or|||c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or|||d) Limiting the use for publicity purposes of names of licensors or authors of the material; or|||e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or|||f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors.|||All other non-permissive additional terms are considered \"further restrictions\" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying.|||If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms.|||Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way.|||8. Termination.|||You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11).|||However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.|||Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.|||Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10.|||9. Acceptance Not Required for Having Copies.|||You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so.|||10. Automatic Licensing of Downstream Recipients.|||Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License.|||An \"entity transaction\" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts.|||You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it.|||11. Patents.|||A \"contributor\" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's \"contributor version\".|||A contributor's \"essential patent claims\" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, \"control\" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License.|||Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version.|||In the following three paragraphs, a \"patent license\" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To \"grant\" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party.|||If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. \"Knowingly relying\" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid.|||If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it.|||A patent license is \"discriminatory\" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007.|||Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law.|||12. No Surrender of Others' Freedom.|||If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program.|||13. Remote Network Interaction; Use with the GNU General Public License.|||Notwithstanding any other provision of this License, if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software. This Corresponding Source shall include the Corresponding Source for any work covered by version 3 of the GNU General Public License that is incorporated pursuant to the following paragraph.|||Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the work with which it is combined will remain governed by version 3 of the GNU General Public License.|||14. Revised Versions of this License.|||The Free Software Foundation may publish revised and/or new versions of the GNU Affero General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.|||Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU Affero General Public License \"or any later version\" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU Affero General Public License, you may choose any version ever published by the Free Software Foundation.|||If the Program specifies that a proxy can decide which future versions of the GNU Affero General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program.|||Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version.|||15. Disclaimer of Warranty.|||THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.|||16. Limitation of Liability.|||IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.|||17. Interpretation of Sections 15 and 16.|||If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee.|||END OF TERMS AND CONDITIONS|||How to Apply These Terms to Your New Programs|||If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.|||To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the \"copyright\" line and a pointer to where the full notice is found. \u003cone line to give the program's name and a brief idea of what it does.\u003e Copyright (C) \u003cyear\u003e \u003cname of author\u003e This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see \u003chttps://www.gnu.org/licenses/\u003e.|||Also add information on how to contact you by electronic and paper mail.|||If your software can interact with users remotely through a computer network, you should also make sure that it provides a way for users to get its source. For example, if your program is a web application, its interface could display a \"Source\" link that leads users to an archive of the code. There are many ways you could offer source, and different solutions will be better for different programs; see section 13 for the specific requirements.|||You should also get your employer (if you work as a programmer) or school, if any, to sign a \"copyright disclaimer\" for the program, if necessary. For more information on this, and how to apply and follow the GNU AGPL, see \u003chttps://www.gnu.org/licenses/\u003e.|||“The Free Software Foundation (FSF) is a nonprofit with a worldwide mission to promote computer user freedom. We defend the rights of all software users.”|||JOIN DONATE SHOP|||Please send general FSF \u0026 GNU inquiries to \u003cgnu@gnu.org\u003e. There are also other ways to contact the FSF. Broken links and other corrections or suggestions can be sent to \u003cwebmasters@gnu.org\u003e.|||Please see the Translations README for information on coordinating and contributing translations of this article.|||Copyright notice above.|||Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.|||Copyright Infringement Notification|||Updated: $Date: 2023/11/30 09:46:01 $",
                    "bookmark_id": 9,
                    "bookmark": {
                        "id": 0,
                        "created_at": "0001-01-01T00:00:00Z",
                        "updated_at": "0001-01-01T00:00:00Z",
                        "deleted_at": null,
                        "url": "",
                        "title": "",
                        "notes": "",
                        "domain": "",
                        "favicon": "",
                        "tags": null,
                        "snapshots": null,
                        "collection": null,
                        "public": false,
                        "unread": false,
                        "user_id": 0
                    },
                    "size": 43254,
                    "resources": null
                }
            ],
            "collection": null,
            "public": true,
            "unread": false,
            "user_id": 1
        },
        {
            "id": 8,
            "created_at": "2025-05-08T13:11:36.714210514Z",
            "updated_at": "2025-05-08T13:11:36.714210514Z",
            "deleted_at": null,
            "url": "https://news.ycombinator.com/",
            "title": "Hacker News",
            "notes": "",
            "domain": "news.ycombinator.com",
            "favicon": "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjE4IiB2aWV3Qm94PSI0IDQgMTg4IDE4OCIgd2lkdGg9IjE4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Im00IDRoMTg4djE4OGgtMTg4eiIgZmlsbD0iI2Y2MCIvPjxwYXRoIGQ9Im03My4yNTIxNzU2IDQ1LjAxIDIyLjc0NzgyNDQgNDcuMzkxMzAwODMgMjIuNzQ3ODI0NC00Ny4zOTEzMDA4M2gxOS41NjU2OTYzMWwtMzQuMzIzNTIwNzEgNjQuNDg2NjE0Njh2NDEuNDkzMzg1MzJoLTE1Ljk4di00MS40OTMzODUzMmwtMzQuMzIzNTIwNzEtNjQuNDg2NjE0Njh6IiBmaWxsPSIjZmZmIi8+PC9zdmc+",
            "tags": [
                {
                    "id": 9,
                    "created_at": "2025-04-02T14:20:13.878001152Z",
                    "updated_at": "2025-04-02T14:20:13.878001152Z",
                    "deleted_at": null,
                    "text": "programming",
                    "bookmarks": null
                },
                {
                    "id": 12,
                    "created_at": "2025-05-08T13:11:36.698923158Z",
                    "updated_at": "2025-05-08T13:11:36.698923158Z",
                    "deleted_at": null,
                    "text": "news",
                    "bookmarks": null
                },
                {
                    "id": 13,
                    "created_at": "2025-05-08T13:11:36.707366009Z",
                    "updated_at": "2025-05-08T13:11:36.707366009Z",
                    "deleted_at": null,
                    "text": "IT",
                    "bookmarks": null
                }
            ],
            "snapshots": [
                {
                    "id": 8,
                    "created_at": "2025-05-08T13:11:36.727052864Z",
                    "updated_at": "2025-05-08T13:11:36.810664864Z",
                    "deleted_at": null,
                    "title": "",
                    "key": "ccaa9546e52e836719b519a6c92943ee0662f410ab51ac0e8712487297130c0f",
                    "text": "Hacker News new | past | comments | ask | show | jobs | submit|||login|||1.|||My stackoverflow question was closed so here's a blog post about CoreWCF (richardcocks.github.io)|||42 points by eterm 56 minutes ago | hide | 23 comments|||2.|||Using NASA’s SMAP satellite to detect L-band interference (radioandnukes.substack.com)|||175 points by c16 4 hours ago | hide | 29 comments|||3.|||How to Harden GitHub Actions: The Unofficial Guide (wiz.io)|||39 points by moyer 2 hours ago | hide | 12 comments|||4.|||Mycoria is an open and secure overlay network that connects all participants (mycoria.org)|||213 points by doener 7 hours ago | hide | 98 comments|||5.|||Yes, the Apple II MouseCard IRQ Is Synced to the VBL (colino.net)|||6 points by mmphosis 48 minutes ago | hide | discuss|||6.|||How linear regression works intuitively and how it leads to gradient descent (briefer.cloud)|||194 points by lucasfcosta 8 hours ago | hide | 43 comments|||7.|||Heat stress mitigation by trees and shelters at bus stops (sciencedirect.com)|||69 points by rntn 5 hours ago | hide | 43 comments|||8.|||Artifact (YC W25) Is Hiring (ycombinator.com)|||1 hour ago | hide|||9.|||How Obama’s BlackBerry got secured (2013) (electrospaces.net)|||45 points by lastdong 4 hours ago | hide | 18 comments|||10.|||Ty: A fast Python type checker and language server (github.com/astral-sh)|||794 points by arathore 19 hours ago | hide | 247 comments|||11.|||Inheritance was invented as a performance hack (2021) (catern.com)|||147 points by aquastorm 11 hours ago | hide | 135 comments|||12.|||Mass spectrometry method identifies pathogens within minutes instead of days (phys.org)|||72 points by pseudolus 7 hours ago | hide | 24 comments|||13.|||Waiting for Postgres 18: Accelerating Disk Reads with Asynchronous I/O (pganalyze.com)|||497 points by lfittl 22 hours ago | hide | 123 comments|||14.|||Mistral ships Le Chat – enterprise AI assistant that can run on prem (mistral.ai)|||439 points by _lateralus_ 22 hours ago | hide | 132 comments|||15.|||Secret Messages Detected on Egyptian Obelisk in Paris (archaeology.org)|||38 points by isaacfrond 5 hours ago | hide | 35 comments|||16.|||June Huh dropped out to become a poet, now he’s won a Fields Medal (2022) (quantamagazine.org)|||177 points by bpierre 15 hours ago | hide | 101 comments|||17.|||Open source Google Analytics replacement (github.com/rybbit-io)|||311 points by samdung 19 hours ago | hide | 143 comments|||18.|||Bridging the Gap Between Keyword and Semantic Search with Splade (arcturus-labs.com)|||6 points by softwaredoug 1 hour ago | hide | discuss|||19.|||Extending a Language – Writing Powerful Macros in Scheme (mnieper.github.io)|||51 points by textread 8 hours ago | hide | 1 comment|||20.|||Create and edit images with Gemini 2.0 in preview (googleblog.com)|||227 points by meetpateltech 21 hours ago | hide | 94 comments|||21.|||Show HN: US Routing – Python library for fast local routing in the US (github.com/ivanbelenky)|||101 points by ivanbelenky 12 hours ago | hide | 25 comments|||22.|||Samsung is paying $350M for audio brands B\u0026W, Denon, Marantz and Polk (engadget.com)|||167 points by thibautg 19 hours ago | hide | 221 comments|||23.|||Web search on the Anthropic API (anthropic.com)|||242 points by cmogni1 16 hours ago | hide | 55 comments|||24.|||Foundation DB Record Layer SQL API (foundationdb.github.io)|||111 points by fidotron 15 hours ago | hide | 45 comments|||25.|||A cycle-accurate IBM PC emulator in your web browser (martypc.net)|||122 points by GloriousCow 16 hours ago | hide | 18 comments|||26.|||So Much Blood (dynomight.net)|||411 points by debesyla 1 day ago | hide | 193 comments|||27.|||Bootstrapping Lisp in a Boot Sector (github.com/jart)|||87 points by gone35 15 hours ago | hide | 4 comments|||28.|||Mac Themes Garden (damien.zone)|||182 points by speckx 17 hours ago | hide | 61 comments|||29.|||My quest to make motorcycle riding that tad bit safer (gill.net.in)|||287 points by mygnu 1 day ago | hide | 341 comments|||30.|||Docs like code in basic terms (deborahwrites.com)|||57 points by DeborahWrites 10 hours ago | hide | 45 comments|||More|||Consider applying for YC's Summer 2025 batch! Applications are open till May 13 Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact Search:",
                    "bookmark_id": 8,
                    "bookmark": {
                        "id": 0,
                        "created_at": "0001-01-01T00:00:00Z",
                        "updated_at": "0001-01-01T00:00:00Z",
                        "deleted_at": null,
                        "url": "",
                        "title": "",
                        "notes": "",
                        "domain": "",
                        "favicon": "",
                        "tags": null,
                        "snapshots": null,
                        "collection": null,
                        "public": false,
                        "unread": false,
                        "user_id": 0
                    },
                    "size": 8604,
                    "resources": null
                }
            ],
            "collection": null,
            "public": true,
            "unread": false,
            "user_id": 1
        },
        {
            "id": 6,
            "created_at": "2025-04-04T11:37:34.580096317Z",
            "updated_at": "2025-04-04T11:37:34.580096317Z",
            "deleted_at": null,
            "url": "https://github.com/asciimoo/omnom",
            "title": "GitHub - asciimoo/omnom: A webpage bookmarking and snapshotting service",
            "notes": "A webpage bookmarking and snapshotting service\r\n\r\n",
            "domain": "github.com",
            "favicon": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNiAwQzcuMTYgMCAwIDcuMTYgMCAxNkMwIDIzLjA4IDQuNTggMjkuMDYgMTAuOTQgMzEuMThDMTEuNzQgMzEuMzIgMTIuMDQgMzAuODQgMTIuMDQgMzAuNDJDMTIuMDQgMzAuMDQgMTIuMDIgMjguNzggMTIuMDIgMjcuNDRDOCAyOC4xOCA2Ljk2IDI2LjQ2IDYuNjQgMjUuNTZDNi40NiAyNS4xIDUuNjggMjMuNjggNSAyMy4zQzQuNDQgMjMgMy42NCAyMi4yNiA0Ljk4IDIyLjI0QzYuMjQgMjIuMjIgNy4xNCAyMy40IDcuNDQgMjMuODhDOC44OCAyNi4zIDExLjE4IDI1LjYyIDEyLjEgMjUuMkMxMi4yNCAyNC4xNiAxMi42NiAyMy40NiAxMy4xMiAyMy4wNkM5LjU2IDIyLjY2IDUuODQgMjEuMjggNS44NCAxNS4xNkM1Ljg0IDEzLjQyIDYuNDYgMTEuOTggNy40OCAxMC44NkM3LjMyIDEwLjQ2IDYuNzYgOC44MiA3LjY0IDYuNjJDNy42NCA2LjYyIDguOTggNi4yIDEyLjA0IDguMjZDMTMuMzIgNy45IDE0LjY4IDcuNzIgMTYuMDQgNy43MkMxNy40IDcuNzIgMTguNzYgNy45IDIwLjA0IDguMjZDMjMuMSA2LjE4IDI0LjQ0IDYuNjIgMjQuNDQgNi42MkMyNS4zMiA4LjgyIDI0Ljc2IDEwLjQ2IDI0LjYgMTAuODZDMjUuNjIgMTEuOTggMjYuMjQgMTMuNCAyNi4yNCAxNS4xNkMyNi4yNCAyMS4zIDIyLjUgMjIuNjYgMTguOTQgMjMuMDZDMTkuNTIgMjMuNTYgMjAuMDIgMjQuNTIgMjAuMDIgMjYuMDJDMjAuMDIgMjguMTYgMjAgMjkuODggMjAgMzAuNDJDMjAgMzAuODQgMjAuMyAzMS4zNCAyMS4xIDMxLjE4QzI3LjQyIDI5LjA2IDMyIDIzLjA2IDMyIDE2QzMyIDcuMTYgMjQuODQgMCAxNiAwVjBaIiBmaWxsPSIjMjQyOTJFIi8+Cjwvc3ZnPgo=",
            "tags": [
                {
                    "id": 2,
                    "created_at": "2025-04-02T14:11:26.534648077Z",
                    "updated_at": "2025-04-02T14:11:26.534648077Z",
                    "deleted_at": null,
                    "text": "bookmark",
                    "bookmarks": null
                },
                {
                    "id": 6,
                    "created_at": "2025-04-02T14:16:16.712903585Z",
                    "updated_at": "2025-04-02T14:16:16.712903585Z",
                    "deleted_at": null,
                    "text": "omnom",
                    "bookmarks": null
                },
                {
                    "id": 7,
                    "created_at": "2025-04-02T14:16:16.718495111Z",
                    "updated_at": "2025-04-02T14:16:16.718495111Z",
                    "deleted_at": null,
                    "text": "github",
                    "bookmarks": null
                },
                {
                    "id": 11,
                    "created_at": "2025-04-04T11:37:34.573342016Z",
                    "updated_at": "2025-04-04T11:37:34.573342016Z",
                    "deleted_at": null,
                    "text": "self-hosted",
                    "bookmarks": null
                }
            ],
            "snapshots": [
                {
                    "id": 6,
                    "created_at": "2025-04-04T11:37:34.614806135Z",
                    "updated_at": "2025-04-04T11:37:35.881882851Z",
                    "deleted_at": null,
                    "title": "",
                    "key": "71d0a3f3e9fd6f246959907eef25b89b81fd2876af648c7623fe5fc555385d85",
                    "text": "Product|||Solutions|||Resources|||Open Source|||Enterprise|||Pricing|||Search or jump to...|||Sign in Sign up|||asciimoo / omnom Public|||Code|||Issues 3|||Pull requests|||Discussions|||Actions|||Projects|||Wiki|||Security|||Insights|||master|||3 Branches3 Tags|||Code|||asciimoo|||[enh] bump addon version|||48c3776 · Apr 3, 2025|||465 Commits|||.github|||Bump golangci-lint version to support Go 1.24|||Apr 1, 2025|||cmd|||[enh] make resources clickable in snapshot detail view|||Feb 20, 2025|||config|||[enh] add option to disable bookmark create from webapp|||Apr 1, 2025|||ext|||[enh] bump addon version|||Apr 3, 2025|||mail|||[fix] golint stylecheck|||Jan 1, 2025|||model|||[enh] create bookmarks \u0026 snapshots from webapp|||Mar 31, 2025|||oauth|||[fix] resolve golint issues|||Feb 27, 2025|||sass|||[enh] add minimal formatting to addon popup|||Apr 3, 2025|||static|||[fix] resolve multiple css parsing issues|||Apr 3, 2025|||storage|||[enh] make resources clickable in snapshot detail view|||Feb 20, 2025|||templates|||[fix] do not display signup button if signup is disabled|||Apr 2, 2025|||tests|||[fix] add new config entries to test cfg|||Dec 30, 2024|||validator|||[enh] add SPDX license identifiers - closes #17|||Sep 10, 2024|||webapp|||[enh] add option to disable bookmark create from webapp|||Apr 1, 2025|||.gitignore|||[enh] add default db.sqlite3 to gitignore|||Sep 23, 2024|||.gitmodules|||[mod] remove bulma subrepo and update/add as single css file|||Feb 19, 2025|||.golangci.yml|||[fix] update golint config to be able to validate it|||Feb 27, 2025|||LICENSE|||[enh] initial commit|||Apr 19, 2021|||README.md|||[doc] enhance readme|||Apr 1, 2025|||config.yml_sample|||[doc] add note about chrom* dependency when using server side snapsho…|||Apr 1, 2025|||go.mod|||[enh] update deps|||Apr 1, 2025|||go.sum|||[enh] update deps|||Apr 1, 2025|||manage.sh|||[fix] restore manifest file after building ff artifact|||Sep 10, 2024|||omnom.go|||[enh] add command line options ++ refactor webapp|||Nov 15, 2021|||README|||AGPL-3.0 license|||Omnom|||Bookmarking with website snapshots.|||Access \u0026 share previously visited pages without worrying about modifications or availibilty.|||Check out our wiki for more information.|||Features|||Self hosted|||Web interface with multiuser support|||Flexible filtering - by date, free text search in content, tags, users, domains, URLs, etc..|||Private \u0026 public bookmarks|||Multiple snapshots of the same URL|||Documented API|||Requirements|||go \u003e= 1.24|||Setup \u0026 run|||Checkout the repo and execute go get -u|||Copy config.yml_sample to config.yml|||Execute go build \u0026\u0026 ./omnom listen or go run omnom.go listen in the repo root|||Settings can be configured in config.yml config file - don't forget to restart webapp after updating.|||User handling|||Omnom does not store passwords. Login requires one time login tokens or OAuth. Login tokens can be requested via email (this requires a valid SMTP configuration in config.yml) through the web interface or can be generated from command line using the ./omnom create-token [username] login.|||Command line tool|||Basic management actions are available using the command line tool (go run omnom.go or go build; ./omnom)|||Available Commands|||create-token create new login/addon token for a user create-user create new user generate-api-docs-md Generate Markdown API documentation help Help about any command listen start server set-token set new login/addon token for a user show-user show user details completion Generate the autocompletion script for the specified shell|||Browser addon|||Omnom browser addon is available for|||Firefox|||Chrome/Chromium|||Bugs|||Bugs or suggestions? Visit the issue tracker or join our discord server|||License|||AGPLv3|||Funding|||This project is funded through NGI Zero Core, a fund established by NLnet with financial support from the European Commission's Next Generation Internet program. Learn more at the NLnet project page.|||About|||A webpage bookmarking and snapshotting service|||Readme|||AGPL-3.0 license|||Activity|||39 stars|||7 watching|||6 forks|||Report repository|||Releases 3|||v0.3.0 Latest|||Mar 10, 2025|||+ 2 releases|||Sponsor this project|||asciimoo Adam Tauber Sponsor|||Learn more about GitHub Sponsors|||Packages|||No packages published|||Contributors 5|||Languages|||Go 41.6%|||JavaScript 27.7%|||Smarty 16.9%|||SCSS 7.9%|||HTML 4.0%|||Shell 1.1%|||CSS 0.8%|||© 2025 GitHub, Inc.|||Terms|||Privacy|||Security|||Status|||Docs|||Contact|||Manage cookies|||Do not share my personal information",
                    "bookmark_id": 6,
                    "bookmark": {
                        "id": 0,
                        "created_at": "0001-01-01T00:00:00Z",
                        "updated_at": "0001-01-01T00:00:00Z",
                        "deleted_at": null,
                        "url": "",
                        "title": "",
                        "notes": "",
                        "domain": "",
                        "favicon": "",
                        "tags": null,
                        "snapshots": null,
                        "collection": null,
                        "public": false,
                        "unread": false,
                        "user_id": 0
                    },
                    "size": 1376018,
                    "resources": null
                },
                {
                    "id": 35,
                    "created_at": "2025-06-11T14:53:34.910995256Z",
                    "updated_at": "2025-06-11T14:53:36.318483846Z",
                    "deleted_at": null,
                    "title": "",
                    "key": "56583ced754de3d5ce39f2703ef4bdf86e189d8dc50fa191797f8a8b5ce7cdbf",
                    "text": "Product|||Solutions|||Resources|||Open Source|||Enterprise|||Pricing|||Search or jump to...|||Sign in Sign up|||asciimoo / omnom Public|||Code|||Issues 1|||Pull requests|||Discussions|||Actions|||Projects|||Wiki|||Security|||Insights|||master|||2 Branches5 Tags|||Code|||asciimoo|||[enh] improve diff views|||0e6d385 · Jun 10, 2025|||673 Commits|||.github|||[fix] update go releaser action #7|||Jun 3, 2025|||cmd|||[enh] add bookmark from command line|||Jun 8, 2025|||config|||[fix] initialize default storage for default config|||Jun 3, 2025|||contentdiff|||[enh] improve diff views|||Jun 10, 2025|||ext|||[enh] bump addon version|||Jun 7, 2025|||localization|||[enh] display direct link to snapshot if a bookmark has only one snap…|||Jun 8, 2025|||mail|||Embed all templates into the binary|||May 23, 2025|||model|||[mod] move token creation to model|||Jun 8, 2025|||oauth|||* Refactor oauth providers|||May 22, 2025|||sass|||[enh] improve diff views|||Jun 10, 2025|||static|||[enh] improve diff views|||Jun 10, 2025|||storage|||Make storage configuration more flexible|||May 31, 2025|||templates|||[enh] improve diff views|||Jun 10, 2025|||tests|||Make storage configuration more flexible|||May 31, 2025|||validator|||[enh] initialize shadow dom handling in snapshots|||Apr 15, 2025|||webapp|||[mod] move token creation to model|||Jun 8, 2025|||.dockerignore|||Added Dockerfile|||Apr 25, 2025|||.gitignore|||[enh] add rsa key handling config for activityPub|||Apr 17, 2025|||.gitmodules|||[mod] remove bulma subrepo and update/add as single css file|||Feb 19, 2025|||.golangci.yml|||[fix] update golint config to be able to validate it|||Feb 27, 2025|||.goreleaser.yml|||[mod] release binaries directly|||Jun 3, 2025|||Dockerfile|||Don't copy static files into the Docker container|||May 30, 2025|||LICENSE|||[enh] initial commit|||Apr 19, 2021|||README.md|||[doc] update available commands|||Jun 8, 2025|||config.yml_sample|||Make storage configuration more flexible|||May 31, 2025|||entrypoint.sh|||Added Dockerfile|||Apr 25, 2025|||go.mod|||Use modern stateless CSRF protection|||May 30, 2025|||go.sum|||Use modern stateless CSRF protection|||May 30, 2025|||manage.sh|||[enh] add sync_translations command|||May 27, 2025|||omnom.go|||[enh] add create-config command \u0026 embed config.yml_sample|||May 26, 2025|||README|||AGPL-3.0 license|||Omnom|||Bookmarking with website snapshots.|||Access \u0026 share previously visited pages without worrying about modifications or availability.|||Check out our wiki for more information.|||Features|||Websites are captured as your browser renders it - saves the displayed content of dynamic pages as well|||Self hosted|||Web interface with multiuser support|||Flexible filtering - by date, free text search in content, tags, users, domains, URLs, etc..|||Fediverse/ActivityPub support|||Private \u0026 public bookmarks|||Multiple snapshots of the same URL with resource summary and compare/diff views|||Documented API|||Browser addon|||Omnom browser addon is available for|||Firefox|||Chrome/Chromium|||Installation|||Single file binary release is available here.|||Docker image is also available available, more details here.|||Local build|||go \u003e= 1.24 required|||Checkout the repo and execute go get -u in the root directory|||Run go build|||Setup \u0026 run|||Run ./omnom help to list the available commands|||Execute ./omnom listen to start the web application|||Configuration|||Settings can be configured in config.yml config file - don't forget to restart webapp after updating.|||Execute ./omnom create-config config.yml to generate a configuration file with the default configuration values.|||User handling|||Omnom does not store passwords. Login requires one time login token, OAuth, or a remote user header.|||Login tokens can be requested via email (this requires a valid SMTP configuration in config.yml) through the web interface or can be generated from command line using the ./omnom create-token [username] login.|||If you use Omnom behind a reverse proxy with authentication, you can pass the logged-in username in an HTTP header like Remote-User to automatically log in. Omnom can be configured to trust the header by setting the remote_user_header option in config.yml. Remote user header authentication can't be used with OAuth or open signups.|||Command line tool|||Basic management actions are available using the command line tool (go run omnom.go or go build; ./omnom)|||Available Commands|||create-bookmark create new bookmark create-config create default configuration file create-token create new login/addon token for a user create-user create new user generate-api-docs-md Generate Markdown API documentation help Help about any command listen start server set-token set new login/addon token for a user show-user show user details completion Generate the autocompletion script for the specified shell|||Translations|||To contribute to localizations, please visit our weblate|||Bugs|||Bugs or suggestions? Visit the issue tracker or join our discord server|||License|||AGPLv3|||Funding|||This project is funded through NGI Zero Core, a fund established by NLnet with financial support from the European Commission's Next Generation Internet program. Learn more at the NLnet project page.|||About|||A webpage bookmarking and snapshotting service|||omnom.zone/|||bookmark snapshot self-hosted webapp activitypub fediverse|||Readme|||AGPL-3.0 license|||Activity|||405 stars|||7 watching|||28 forks|||Report repository|||Releases 5|||v0.5.0 Latest|||Jun 3, 2025|||+ 4 releases|||Sponsor this project|||asciimoo Adam Tauber Sponsor|||Learn more about GitHub Sponsors|||Packages 1|||omnom|||Contributors 9|||Languages|||Go 52.2%|||JavaScript 20.1%|||Smarty 16.7%|||SCSS 6.0%|||HTML 2.9%|||Shell 1.2%|||Other 0.9%|||© 2025 GitHub, Inc.|||Terms|||Privacy|||Security|||Status|||Docs|||Contact|||Manage cookies|||Do not share my personal information",
                    "bookmark_id": 6,
                    "bookmark": {
                        "id": 0,
                        "created_at": "0001-01-01T00:00:00Z",
                        "updated_at": "0001-01-01T00:00:00Z",
                        "deleted_at": null,
                        "url": "",
                        "title": "",
                        "notes": "",
                        "domain": "",
                        "favicon": "",
                        "tags": null,
                        "snapshots": null,
                        "collection": null,
                        "public": false,
                        "unread": false,
                        "user_id": 0
                    },
                    "size": 1443150,
                    "resources": null
                }
            ],
            "collection": null,
            "public": true,
            "unread": false,
            "user_id": 1
        },
        {
            "id": 5,
            "created_at": "2025-04-02T14:22:06.776392212Z",
            "updated_at": "2025-04-02T14:22:06.776392212Z",
            "deleted_at": null,
            "url": "https://go.dev/",
            "title": "The Go Programming Language",
            "notes": "",
            "domain": "go.dev",
            "favicon": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iMzIiCiAgIGhlaWdodD0iMzIiCiAgIHZpZXdCb3g9IjAgMCAzMiAzMi4wMDAwMDEiCiAgIGlkPSJzdmc0NDE2IgogICB2ZXJzaW9uPSIxLjEiCiAgIGlua3NjYXBlOnZlcnNpb249IjAuOTEgcjEzNzI1IgogICBzb2RpcG9kaTpkb2NuYW1lPSJmYXZpY29uLnN2ZyIKICAgaW5rc2NhcGU6ZXhwb3J0LWZpbGVuYW1lPSIuLi8uLi9mYXZpY29uLnBuZyIKICAgaW5rc2NhcGU6ZXhwb3J0LXhkcGk9IjkwIgogICBpbmtzY2FwZTpleHBvcnQteWRwaT0iOTAiPgogIDxkZWZzCiAgICAgaWQ9ImRlZnM0NDE4IiAvPgogIDxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBpZD0iYmFzZSIKICAgICBwYWdlY29sb3I9IiNmZmZmZmYiCiAgICAgYm9yZGVyY29sb3I9IiM2NjY2NjYiCiAgICAgYm9yZGVyb3BhY2l0eT0iMS4wIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp6b29tPSIxNS44MzkxOTIiCiAgICAgaW5rc2NhcGU6Y3g9IjE3Ljk2NjY1MiIKICAgICBpbmtzY2FwZTpjeT0iOS4yOTkxODI0IgogICAgIGlua3NjYXBlOmRvY3VtZW50LXVuaXRzPSJweCIKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJsYXllcjEiCiAgICAgc2hvd2dyaWQ9InRydWUiCiAgICAgdW5pdHM9InB4IgogICAgIGlua3NjYXBlOnNuYXAtYmJveD0idHJ1ZSIKICAgICBpbmtzY2FwZTpzbmFwLWJib3gtZWRnZS1taWRwb2ludHM9ImZhbHNlIgogICAgIGlua3NjYXBlOmJib3gtbm9kZXM9InRydWUiCiAgICAgc2hvd2d1aWRlcz0iZmFsc2UiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxOTIwIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwMTgiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjE5MTIiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9Ii04IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgICAgaW5rc2NhcGU6b2JqZWN0LW5vZGVzPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtc21vb3RoLW5vZGVzPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtZ2xvYmFsPSJmYWxzZSI+CiAgICA8aW5rc2NhcGU6Z3JpZAogICAgICAgdHlwZT0ieHlncmlkIgogICAgICAgaWQ9ImdyaWQ1MTQ4IiAvPgogIDwvc29kaXBvZGk6bmFtZWR2aWV3PgogIDxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTQ0MjEiPgogICAgPHJkZjpSREY+CiAgICAgIDxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj4KICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KICAgICAgICA8ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+CiAgICAgICAgPGRjOnRpdGxlIC8+CiAgICAgIDwvY2M6V29yaz4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRhPgogIDxnCiAgICAgaW5rc2NhcGU6bGFiZWw9Imljb24iCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsLTEwMjAuMzYyMikiPgogICAgPGVsbGlwc2UKICAgICAgIHN0eWxlPSJjb2xvcjojMDAwMDAwO2NsaXAtcnVsZTpub256ZXJvO2Rpc3BsYXk6aW5saW5lO292ZXJmbG93OnZpc2libGU7dmlzaWJpbGl0eTp2aXNpYmxlO29wYWNpdHk6MTtpc29sYXRpb246YXV0bzttaXgtYmxlbmQtbW9kZTpub3JtYWw7Y29sb3ItaW50ZXJwb2xhdGlvbjpzUkdCO2NvbG9yLWludGVycG9sYXRpb24tZmlsdGVyczpsaW5lYXJSR0I7c29saWQtY29sb3I6IzAwMDAwMDtzb2xpZC1vcGFjaXR5OjE7ZmlsbDojMzg0ZTU0O2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDoxMDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLWRhc2hvZmZzZXQ6MDtzdHJva2Utb3BhY2l0eToxO2NvbG9yLXJlbmRlcmluZzphdXRvO2ltYWdlLXJlbmRlcmluZzphdXRvO3NoYXBlLXJlbmRlcmluZzphdXRvO3RleHQtcmVuZGVyaW5nOmF1dG87ZW5hYmxlLWJhY2tncm91bmQ6YWNjdW11bGF0ZSIKICAgICAgIGlkPSJlbGxpcHNlNDIxNiIKICAgICAgIGN4PSItOTA3LjM1NjU3IgogICAgICAgY3k9IjQ3OS45MDAwOSIKICAgICAgIHJ4PSIzLjU3OTM5OTYiCiAgICAgICByeT0iMy44MjA3OTUzIgogICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoLTAuNDkxNjkwOTUsLTAuODcwNzY5NzgsLTAuODcwNzY5NzgsMC40OTE2OTA5NSwwLDApIgogICAgICAgaW5rc2NhcGU6dHJhbnNmb3JtLWNlbnRlci14PSIwLjY3Nzk0Mjk0IgogICAgICAgaW5rc2NhcGU6dHJhbnNmb3JtLWNlbnRlci15PSItMi4zNjM0MDQ4IiAvPgogICAgPGVsbGlwc2UKICAgICAgIGlua3NjYXBlOnRyYW5zZm9ybS1jZW50ZXIteT0iLTIuMzYzMzg4MiIKICAgICAgIGlua3NjYXBlOnRyYW5zZm9ybS1jZW50ZXIteD0iLTAuNjc3OTM3MTgiCiAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgwLjQ5MTY5MDk1LC0wLjg3MDc2OTc4LDAuODcwNzY5NzgsMC40OTE2OTA5NSwwLDApIgogICAgICAgcnk9IjMuODIwNzk1MyIKICAgICAgIHJ4PSIzLjU3OTM5OTYiCiAgICAgICBjeT0iNTA3Ljg0NjEiCiAgICAgICBjeD0iLTg5MS41NzY1NCIKICAgICAgIGlkPSJlbGxpcHNlNDQ2MyIKICAgICAgIHN0eWxlPSJjb2xvcjojMDAwMDAwO2NsaXAtcnVsZTpub256ZXJvO2Rpc3BsYXk6aW5saW5lO292ZXJmbG93OnZpc2libGU7dmlzaWJpbGl0eTp2aXNpYmxlO29wYWNpdHk6MTtpc29sYXRpb246YXV0bzttaXgtYmxlbmQtbW9kZTpub3JtYWw7Y29sb3ItaW50ZXJwb2xhdGlvbjpzUkdCO2NvbG9yLWludGVycG9sYXRpb24tZmlsdGVyczpsaW5lYXJSR0I7c29saWQtY29sb3I6IzAwMDAwMDtzb2xpZC1vcGFjaXR5OjE7ZmlsbDojMzg0ZTU0O2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDoxMDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLWRhc2hvZmZzZXQ6MDtzdHJva2Utb3BhY2l0eToxO2NvbG9yLXJlbmRlcmluZzphdXRvO2ltYWdlLXJlbmRlcmluZzphdXRvO3NoYXBlLXJlbmRlcmluZzphdXRvO3RleHQtcmVuZGVyaW5nOmF1dG87ZW5hYmxlLWJhY2tncm91bmQ6YWNjdW11bGF0ZSIgLz4KICAgIDxwYXRoCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImNvbG9yOiMwMDAwMDA7Y2xpcC1ydWxlOm5vbnplcm87ZGlzcGxheTppbmxpbmU7b3ZlcmZsb3c6dmlzaWJsZTt2aXNpYmlsaXR5OnZpc2libGU7b3BhY2l0eToxO2lzb2xhdGlvbjphdXRvO21peC1ibGVuZC1tb2RlOm5vcm1hbDtjb2xvci1pbnRlcnBvbGF0aW9uOnNSR0I7Y29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzOmxpbmVhclJHQjtzb2xpZC1jb2xvcjojMDAwMDAwO3NvbGlkLW9wYWNpdHk6MTtmaWxsOiMzODRlNTQ7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjEwO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjE7Y29sb3ItcmVuZGVyaW5nOmF1dG87aW1hZ2UtcmVuZGVyaW5nOmF1dG87c2hhcGUtcmVuZGVyaW5nOmF1dG87dGV4dC1yZW5kZXJpbmc6YXV0bztlbmFibGUtYmFja2dyb3VuZDphY2N1bXVsYXRlIgogICAgICAgZD0ibSAxNi4wOTE2OTMsMTAyMS4zNjQyIGMgLTEuMTA1NzQ5LDAuMDEgLTIuMjEwMzQxLDAuMDQ5IC0zLjMxNjA5LDAuMDkgQyA2Ljg0MjI1NTgsMTAyMS42NzM4IDIsMTAyNi4zOTQyIDIsMTAzMi4zNjIyIGMgMCwyLjk3ODYgMCwxMyAwLDIwIGwgMjgsMCBjIDAsLTggMCwtMTYgMCwtMjAgMCwtNS45NjgzIC00LjY2NzM0NSwtMTAuNDkxMiAtMTAuNTkwMjMsLTEwLjkwOCAtMS4xMDU3NSwtMC4wNzggLTIuMjEyMzI4LC0wLjA5OSAtMy4zMTgwNzcsLTAuMDkgeiIKICAgICAgIGlkPSJwYXRoNDQ2NSIKICAgICAgIHNvZGlwb2RpOm5vZGV0eXBlcz0iY2NzY2NzY2MiIC8+CiAgICA8cGF0aAogICAgICAgaW5rc2NhcGU6dHJhbnNmb3JtLWNlbnRlci15PSItMS4zNjA0NjU3IgogICAgICAgaW5rc2NhcGU6dHJhbnNmb3JtLWNlbnRlci14PSItMC45ODQyNDMwMyIKICAgICAgIHNvZGlwb2RpOm5vZGV0eXBlcz0ic3Nzc3NzcyIKICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICBpZD0icGF0aDQ0NjkiCiAgICAgICBkPSJtIDQuNjA3ODg2NywxMDI1LjA0NjIgYyAwLjQ1OTU2NCwwLjI1OTUgMS44MTgyNjIsMS4yMDEzIDEuOTgwOTgzLDEuNjQ4IDAuMTgzNDAxLDAuNTAzNSAwLjE1OTM4NSwxLjA2NTcgLTAuMTE0NjE0LDEuNTUxIC0wLjM0NjYyNywwLjYxMzggLTEuMDA1MzQxLDAuOTQ4NyAtMS42OTY0MjEsMC45MzY1IC0wLjMzOTg4NiwtMC4wMSAtMS43MjAyODMsLTAuNjM3MiAtMi4wNDI1NjEsLTAuODE5MiAtMC45Nzc1NCwtMC41NTE5IC0xLjM1MDc5NSwtMS43NDE4IC0wLjgzMzY4NiwtMi42NTc2IDAuNTE3MTA5LC0wLjkxNTggMS43Mjg3NDksLTEuMjEwNyAyLjcwNjI5OSwtMC42NTg3IHoiCiAgICAgICBzdHlsZT0iY29sb3I6IzAwMDAwMDtjbGlwLXJ1bGU6bm9uemVybztkaXNwbGF5OmlubGluZTtvdmVyZmxvdzp2aXNpYmxlO3Zpc2liaWxpdHk6dmlzaWJsZTtvcGFjaXR5OjE7aXNvbGF0aW9uOmF1dG87bWl4LWJsZW5kLW1vZGU6bm9ybWFsO2NvbG9yLWludGVycG9sYXRpb246c1JHQjtjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6bGluZWFyUkdCO3NvbGlkLWNvbG9yOiMwMDAwMDA7c29saWQtb3BhY2l0eToxO2ZpbGw6Izc2ZTFmZTtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MTA7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1kYXNob2Zmc2V0OjA7c3Ryb2tlLW9wYWNpdHk6MTtjb2xvci1yZW5kZXJpbmc6YXV0bztpbWFnZS1yZW5kZXJpbmc6YXV0bztzaGFwZS1yZW5kZXJpbmc6YXV0bzt0ZXh0LXJlbmRlcmluZzphdXRvO2VuYWJsZS1iYWNrZ3JvdW5kOmFjY3VtdWxhdGUiIC8+CiAgICA8cmVjdAogICAgICAgc3R5bGU9ImNvbG9yOiMwMDAwMDA7Y2xpcC1ydWxlOm5vbnplcm87ZGlzcGxheTppbmxpbmU7b3ZlcmZsb3c6dmlzaWJsZTt2aXNpYmlsaXR5OnZpc2libGU7b3BhY2l0eToxO2lzb2xhdGlvbjphdXRvO21peC1ibGVuZC1tb2RlOm5vcm1hbDtjb2xvci1pbnRlcnBvbGF0aW9uOnNSR0I7Y29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzOmxpbmVhclJHQjtzb2xpZC1jb2xvcjojMDAwMDAwO3NvbGlkLW9wYWNpdHk6MTtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjAuMzI4NTAyNDY7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjEwO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjE7Y29sb3ItcmVuZGVyaW5nOmF1dG87aW1hZ2UtcmVuZGVyaW5nOmF1dG87c2hhcGUtcmVuZGVyaW5nOmF1dG87dGV4dC1yZW5kZXJpbmc6YXV0bztlbmFibGUtYmFja2dyb3VuZDphY2N1bXVsYXRlIgogICAgICAgaWQ9InJlY3Q0NDczIgogICAgICAgd2lkdGg9IjMuMDg2NjY1OSIKICAgICAgIGhlaWdodD0iMy41MzEzNjYzIgogICAgICAgeD0iMTQuNDA2MjEzIgogICAgICAgeT0iMTAzNS42ODQyIgogICAgICAgcnk9IjAuNjI0MjYzMjkiIC8+CiAgICA8cGF0aAogICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgIHN0eWxlPSJjb2xvcjojMDAwMDAwO2NsaXAtcnVsZTpub256ZXJvO2Rpc3BsYXk6aW5saW5lO292ZXJmbG93OnZpc2libGU7dmlzaWJpbGl0eTp2aXNpYmxlO29wYWNpdHk6MTtpc29sYXRpb246YXV0bzttaXgtYmxlbmQtbW9kZTpub3JtYWw7Y29sb3ItaW50ZXJwb2xhdGlvbjpzUkdCO2NvbG9yLWludGVycG9sYXRpb24tZmlsdGVyczpsaW5lYXJSR0I7c29saWQtY29sb3I6IzAwMDAwMDtzb2xpZC1vcGFjaXR5OjE7ZmlsbDojNzZlMWZlO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDoxMDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLWRhc2hvZmZzZXQ6MDtzdHJva2Utb3BhY2l0eToxO2NvbG9yLXJlbmRlcmluZzphdXRvO2ltYWdlLXJlbmRlcmluZzphdXRvO3NoYXBlLXJlbmRlcmluZzphdXRvO3RleHQtcmVuZGVyaW5nOmF1dG87ZW5hYmxlLWJhY2tncm91bmQ6YWNjdW11bGF0ZSIKICAgICAgIGQ9Im0gMTYsMTAyMy4zNjIyIGMgLTksMCAtMTIsMy43MTUzIC0xMiw5IGwgMCwyMCAyNCwwIGMgLTAuMDQ4ODksLTcuMzU2MiAwLC0xOCAwLC0yMCAwLC01LjI4NDggLTMsLTkgLTEyLC05IHoiCiAgICAgICBpZD0icGF0aDQ0NzEiCiAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9InpzY2NzeiIgLz4KICAgIDxwYXRoCiAgICAgICBzdHlsZT0iY29sb3I6IzAwMDAwMDtjbGlwLXJ1bGU6bm9uemVybztkaXNwbGF5OmlubGluZTtvdmVyZmxvdzp2aXNpYmxlO3Zpc2liaWxpdHk6dmlzaWJsZTtvcGFjaXR5OjE7aXNvbGF0aW9uOmF1dG87bWl4LWJsZW5kLW1vZGU6bm9ybWFsO2NvbG9yLWludGVycG9sYXRpb246c1JHQjtjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6bGluZWFyUkdCO3NvbGlkLWNvbG9yOiMwMDAwMDA7c29saWQtb3BhY2l0eToxO2ZpbGw6Izc2ZTFmZTtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MTA7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1kYXNob2Zmc2V0OjA7c3Ryb2tlLW9wYWNpdHk6MTtjb2xvci1yZW5kZXJpbmc6YXV0bztpbWFnZS1yZW5kZXJpbmc6YXV0bztzaGFwZS1yZW5kZXJpbmc6YXV0bzt0ZXh0LXJlbmRlcmluZzphdXRvO2VuYWJsZS1iYWNrZ3JvdW5kOmFjY3VtdWxhdGUiCiAgICAgICBkPSJtIDI3LjA3NDA3MywxMDI1LjA0NjIgYyAtMC40NTk1NywwLjI1OTUgLTEuODE4MjU3LDEuMjAxMyAtMS45ODA5NzksMS42NDggLTAuMTgzNDAxLDAuNTAzNSAtMC4xNTkzODQsMS4wNjU3IDAuMTE0NjE0LDEuNTUxIDAuMzQ2NjI3LDAuNjEzOCAxLjAwNTMzNSwwLjk0ODcgMS42OTY0MTUsMC45MzY1IDAuMzM5ODgsLTAuMDEgMS43MjAyOSwtMC42MzcyIDIuMDQyNTYsLTAuODE5MiAwLjk3NzU0LC0wLjU1MTkgMS4zNTA3OSwtMS43NDE4IDAuODMzNjksLTIuNjU3NiAtMC41MTcxMSwtMC45MTU4IC0xLjcyODc2LC0xLjIxMDcgLTIuNzA2MywtMC42NTg3IHoiCiAgICAgICBpZD0icGF0aDQ0ODEiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJzc3Nzc3NzIgogICAgICAgaW5rc2NhcGU6dHJhbnNmb3JtLWNlbnRlci14PSIwLjk4NDI0MDk0IgogICAgICAgaW5rc2NhcGU6dHJhbnNmb3JtLWNlbnRlci15PSItMS4zNjA0NjU3IiAvPgogICAgPGNpcmNsZQogICAgICAgc3R5bGU9ImNvbG9yOiMwMDAwMDA7Y2xpcC1ydWxlOm5vbnplcm87ZGlzcGxheTppbmxpbmU7b3ZlcmZsb3c6dmlzaWJsZTt2aXNpYmlsaXR5OnZpc2libGU7b3BhY2l0eToxO2lzb2xhdGlvbjphdXRvO21peC1ibGVuZC1tb2RlOm5vcm1hbDtjb2xvci1pbnRlcnBvbGF0aW9uOnNSR0I7Y29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzOmxpbmVhclJHQjtzb2xpZC1jb2xvcjojMDAwMDAwO3NvbGlkLW9wYWNpdHk6MTtmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjEwO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjE7Y29sb3ItcmVuZGVyaW5nOmF1dG87aW1hZ2UtcmVuZGVyaW5nOmF1dG87c2hhcGUtcmVuZGVyaW5nOmF1dG87dGV4dC1yZW5kZXJpbmc6YXV0bztlbmFibGUtYmFja2dyb3VuZDphY2N1bXVsYXRlIgogICAgICAgaWQ9ImNpcmNsZTQ0NzciCiAgICAgICBjeD0iMjEuMTc1NzM0IgogICAgICAgY3k9IjEwMzAuMzU0MiIKICAgICAgIHI9IjQuNjUzNzU0MiIKICAgICAgIGlua3NjYXBlOmV4cG9ydC1maWxlbmFtZT0iLlxyZWN0NDQ4NS5wbmciCiAgICAgICBpbmtzY2FwZTpleHBvcnQteGRwaT0iOTAiCiAgICAgICBpbmtzY2FwZTpleHBvcnQteWRwaT0iOTAiIC8+CiAgICA8Y2lyY2xlCiAgICAgICByPSI0LjgzMTYzNDUiCiAgICAgICBjeT0iMTAzMC4zNTQyIgogICAgICAgY3g9IjEwLjMzOTQ4NiIKICAgICAgIGlkPSJjaXJjbGU0NDgzIgogICAgICAgc3R5bGU9ImNvbG9yOiMwMDAwMDA7Y2xpcC1ydWxlOm5vbnplcm87ZGlzcGxheTppbmxpbmU7b3ZlcmZsb3c6dmlzaWJsZTt2aXNpYmlsaXR5OnZpc2libGU7b3BhY2l0eToxO2lzb2xhdGlvbjphdXRvO21peC1ibGVuZC1tb2RlOm5vcm1hbDtjb2xvci1pbnRlcnBvbGF0aW9uOnNSR0I7Y29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzOmxpbmVhclJHQjtzb2xpZC1jb2xvcjojMDAwMDAwO3NvbGlkLW9wYWNpdHk6MTtmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjEwO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjE7Y29sb3ItcmVuZGVyaW5nOmF1dG87aW1hZ2UtcmVuZGVyaW5nOmF1dG87c2hhcGUtcmVuZGVyaW5nOmF1dG87dGV4dC1yZW5kZXJpbmc6YXV0bztlbmFibGUtYmFja2dyb3VuZDphY2N1bXVsYXRlIgogICAgICAgaW5rc2NhcGU6ZXhwb3J0LWZpbGVuYW1lPSIuXHJlY3Q0NDg1LnBuZyIKICAgICAgIGlua3NjYXBlOmV4cG9ydC14ZHBpPSI5MCIKICAgICAgIGlua3NjYXBlOmV4cG9ydC15ZHBpPSI5MCIgLz4KICAgIDxyZWN0CiAgICAgICBpbmtzY2FwZTpleHBvcnQteWRwaT0iOTAiCiAgICAgICBpbmtzY2FwZTpleHBvcnQteGRwaT0iOTAiCiAgICAgICBpbmtzY2FwZTpleHBvcnQtZmlsZW5hbWU9Ii5ccmVjdDQ0ODUucG5nIgogICAgICAgc3R5bGU9ImNvbG9yOiMwMDAwMDA7Y2xpcC1ydWxlOm5vbnplcm87ZGlzcGxheTppbmxpbmU7b3ZlcmZsb3c6dmlzaWJsZTt2aXNpYmlsaXR5OnZpc2libGU7b3BhY2l0eToxO2lzb2xhdGlvbjphdXRvO21peC1ibGVuZC1tb2RlOm5vcm1hbDtjb2xvci1pbnRlcnBvbGF0aW9uOnNSR0I7Y29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzOmxpbmVhclJHQjtzb2xpZC1jb2xvcjojMDAwMDAwO3NvbGlkLW9wYWNpdHk6MTtmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjAuMzI5NDExNzY7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjEwO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjE7Y29sb3ItcmVuZGVyaW5nOmF1dG87aW1hZ2UtcmVuZGVyaW5nOmF1dG87c2hhcGUtcmVuZGVyaW5nOmF1dG87dGV4dC1yZW5kZXJpbmc6YXV0bztlbmFibGUtYmFja2dyb3VuZDphY2N1bXVsYXRlIgogICAgICAgaWQ9InJlY3Q0MjQ2IgogICAgICAgd2lkdGg9IjMuNjY3MzY4NyIKICAgICAgIGhlaWdodD0iNC4xMDYzNDA5IgogICAgICAgeD0iMTQuMTE1ODYzIgogICAgICAgeT0iMTAzNS45MTc0IgogICAgICAgcnk9IjAuNzI1OTA1MzYiIC8+CiAgICA8cmVjdAogICAgICAgcnk9IjAuNzI1OTA1MzYiCiAgICAgICB5PSIxMDM1LjIyNTMiCiAgICAgICB4PSIxNC4xMTU4NjMiCiAgICAgICBoZWlnaHQ9IjQuMTA2MzQwOSIKICAgICAgIHdpZHRoPSIzLjY2NzM2ODciCiAgICAgICBpZD0icmVjdDQ0ODUiCiAgICAgICBzdHlsZT0iY29sb3I6IzAwMDAwMDtjbGlwLXJ1bGU6bm9uemVybztkaXNwbGF5OmlubGluZTtvdmVyZmxvdzp2aXNpYmxlO3Zpc2liaWxpdHk6dmlzaWJsZTtvcGFjaXR5OjE7aXNvbGF0aW9uOmF1dG87bWl4LWJsZW5kLW1vZGU6bm9ybWFsO2NvbG9yLWludGVycG9sYXRpb246c1JHQjtjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6bGluZWFyUkdCO3NvbGlkLWNvbG9yOiMwMDAwMDA7c29saWQtb3BhY2l0eToxO2ZpbGw6I2ZmZmNmYjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MTA7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1kYXNob2Zmc2V0OjA7c3Ryb2tlLW9wYWNpdHk6MTtjb2xvci1yZW5kZXJpbmc6YXV0bztpbWFnZS1yZW5kZXJpbmc6YXV0bztzaGFwZS1yZW5kZXJpbmc6YXV0bzt0ZXh0LXJlbmRlcmluZzphdXRvO2VuYWJsZS1iYWNrZ3JvdW5kOmFjY3VtdWxhdGUiCiAgICAgICBpbmtzY2FwZTpleHBvcnQtZmlsZW5hbWU9Ii5ccmVjdDQ0ODUucG5nIgogICAgICAgaW5rc2NhcGU6ZXhwb3J0LXhkcGk9IjkwIgogICAgICAgaW5rc2NhcGU6ZXhwb3J0LXlkcGk9IjkwIiAvPgogICAgPHBhdGgKICAgICAgIHN0eWxlPSJjb2xvcjojMDAwMDAwO2NsaXAtcnVsZTpub256ZXJvO2Rpc3BsYXk6aW5saW5lO292ZXJmbG93OnZpc2libGU7dmlzaWJpbGl0eTp2aXNpYmxlO29wYWNpdHk6MTtpc29sYXRpb246YXV0bzttaXgtYmxlbmQtbW9kZTpub3JtYWw7Y29sb3ItaW50ZXJwb2xhdGlvbjpzUkdCO2NvbG9yLWludGVycG9sYXRpb24tZmlsdGVyczpsaW5lYXJSR0I7c29saWQtY29sb3I6IzAwMDAwMDtzb2xpZC1vcGFjaXR5OjE7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eTowLjMyOTQxMTc2O2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDoxMDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLWRhc2hvZmZzZXQ6MDtzdHJva2Utb3BhY2l0eToxO2NvbG9yLXJlbmRlcmluZzphdXRvO2ltYWdlLXJlbmRlcmluZzphdXRvO3NoYXBlLXJlbmRlcmluZzphdXRvO3RleHQtcmVuZGVyaW5nOmF1dG87ZW5hYmxlLWJhY2tncm91bmQ6YWNjdW11bGF0ZSIKICAgICAgIGQ9Im0gMTkuOTk5NzM1LDEwMzYuNTI4OSBjIDAsMC44MzggLTAuODcxMjI4LDEuMjY4MiAtMi4xNDQ3NjYsMS4xNjU5IC0wLjAyMzY2LDAgLTAuMDQ3OTUsLTAuNjAwNCAtMC4yNTQxNDcsLTAuNTgzMiAtMC41MDM2NjksMC4wNDIgLTEuMDk1OTAyLC0wLjAyIC0xLjY4NTk2NCwtMC4wMiAtMC42MTI5MzksMCAtMS4yMDYzNDIsMC4xODI2IC0xLjY4NTQ5LDAuMDE3IC0wLjExMDIzMywtMC4wMzggLTAuMTc4Mjk4LDAuNTgzOCAtMC4yNjE1MzIsMC41ODE2IC0xLjI0MzY4NSwtMC4wMzMgLTIuMDc4ODAzLC0wLjMzODMgLTIuMDc4ODAzLC0xLjE2MTggMCwtMS4yMTE4IDEuODE1NjM1LC0yLjE5NDEgNC4wNTUzNTEsLTIuMTk0MSAyLjIzOTcwNCwwIDQuMDU1MzUxLDAuOTgyMyA0LjA1NTM1MSwyLjE5NDEgeiIKICAgICAgIGlkPSJwYXRoNDQ4NyIKICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9InNzc3Nzc3NzcyIKICAgICAgIGlua3NjYXBlOmV4cG9ydC1maWxlbmFtZT0iLlxyZWN0NDQ4NS5wbmciCiAgICAgICBpbmtzY2FwZTpleHBvcnQteGRwaT0iOTAiCiAgICAgICBpbmtzY2FwZTpleHBvcnQteWRwaT0iOTAiIC8+CiAgICA8cGF0aAogICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJzc3Nzc3Nzc3MiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgaWQ9InBhdGg0NDg5IgogICAgICAgZD0ibSAxOS45Nzc0MTQsMTAzNS43MDA0IGMgMCwwLjU2ODUgLTAuNDMzNjU5LDAuODU1NCAtMS4xMzgwOTEsMS4wMDAxIC0wLjI5MTkzMywwLjA2IC0wLjYzMDM3MSwwLjA5NiAtMS4wMDM3MTksMC4xMTY2IC0wLjU2NDA1LDAuMDMyIC0xLjIwNzc4MiwwLjAzMSAtMS44OTEyMiwwLjAzMSAtMC42NzI4MzQsMCAtMS4zMDcxODIsMCAtMS44NjQ5MDQsLTAuMDI5IC0wLjMwNjI2OCwtMC4wMTcgLTAuNTg5NDI5LC0wLjA0MyAtMC44NDMxNjQsLTAuMDg0IC0wLjgxMzgzMywtMC4xMzE4IC0xLjMyNDk2MiwtMC40MTcgLTEuMzI0OTYyLC0xLjAzNDQgMCwtMS4xNjAxIDEuODA1NjQyLC0yLjEwMDYgNC4wMzMwMywtMi4xMDA2IDIuMjI3Mzc3LDAgNC4wMzMwMywwLjk0MDUgNC4wMzMwMywyLjEwMDYgeiIKICAgICAgIHN0eWxlPSJjb2xvcjojMDAwMDAwO2NsaXAtcnVsZTpub256ZXJvO2Rpc3BsYXk6aW5saW5lO292ZXJmbG93OnZpc2libGU7dmlzaWJpbGl0eTp2aXNpYmxlO29wYWNpdHk6MTtpc29sYXRpb246YXV0bzttaXgtYmxlbmQtbW9kZTpub3JtYWw7Y29sb3ItaW50ZXJwb2xhdGlvbjpzUkdCO2NvbG9yLWludGVycG9sYXRpb24tZmlsdGVyczpsaW5lYXJSR0I7c29saWQtY29sb3I6IzAwMDAwMDtzb2xpZC1vcGFjaXR5OjE7ZmlsbDojYzM4Yzc0O2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDoxMDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLWRhc2hvZmZzZXQ6MDtzdHJva2Utb3BhY2l0eToxO2NvbG9yLXJlbmRlcmluZzphdXRvO2ltYWdlLXJlbmRlcmluZzphdXRvO3NoYXBlLXJlbmRlcmluZzphdXRvO3RleHQtcmVuZGVyaW5nOmF1dG87ZW5hYmxlLWJhY2tncm91bmQ6YWNjdW11bGF0ZSIKICAgICAgIGlua3NjYXBlOmV4cG9ydC1maWxlbmFtZT0iLlxyZWN0NDQ4NS5wbmciCiAgICAgICBpbmtzY2FwZTpleHBvcnQteGRwaT0iOTAiCiAgICAgICBpbmtzY2FwZTpleHBvcnQteWRwaT0iOTAiIC8+CiAgICA8ZWxsaXBzZQogICAgICAgY3k9IjEwMzMuODUwMSIKICAgICAgIGN4PSIxNS45NDQzODIiCiAgICAgICBpZD0iZWxsaXBzZTQ0OTEiCiAgICAgICBzdHlsZT0iY29sb3I6IzAwMDAwMDtjbGlwLXJ1bGU6bm9uemVybztkaXNwbGF5OmlubGluZTtvdmVyZmxvdzp2aXNpYmxlO3Zpc2liaWxpdHk6dmlzaWJsZTtvcGFjaXR5OjE7aXNvbGF0aW9uOmF1dG87bWl4LWJsZW5kLW1vZGU6bm9ybWFsO2NvbG9yLWludGVycG9sYXRpb246c1JHQjtjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6bGluZWFyUkdCO3NvbGlkLWNvbG9yOiMwMDAwMDA7c29saWQtb3BhY2l0eToxO2ZpbGw6IzIzMjAxZjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MTA7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1kYXNob2Zmc2V0OjA7c3Ryb2tlLW9wYWNpdHk6MTtjb2xvci1yZW5kZXJpbmc6YXV0bztpbWFnZS1yZW5kZXJpbmc6YXV0bztzaGFwZS1yZW5kZXJpbmc6YXV0bzt0ZXh0LXJlbmRlcmluZzphdXRvO2VuYWJsZS1iYWNrZ3JvdW5kOmFjY3VtdWxhdGUiCiAgICAgICByeD0iMi4wODAxNzMzIgogICAgICAgcnk9IjEuMzQzNzQ3IgogICAgICAgaW5rc2NhcGU6ZXhwb3J0LWZpbGVuYW1lPSIuXHJlY3Q0NDg1LnBuZyIKICAgICAgIGlua3NjYXBlOmV4cG9ydC14ZHBpPSI5MCIKICAgICAgIGlua3NjYXBlOmV4cG9ydC15ZHBpPSI5MCIgLz4KICAgIDxjaXJjbGUKICAgICAgIHN0eWxlPSJjb2xvcjojMDAwMDAwO2NsaXAtcnVsZTpub256ZXJvO2Rpc3BsYXk6aW5saW5lO292ZXJmbG93OnZpc2libGU7dmlzaWJpbGl0eTp2aXNpYmxlO29wYWNpdHk6MTtpc29sYXRpb246YXV0bzttaXgtYmxlbmQtbW9kZTpub3JtYWw7Y29sb3ItaW50ZXJwb2xhdGlvbjpzUkdCO2NvbG9yLWludGVycG9sYXRpb24tZmlsdGVyczpsaW5lYXJSR0I7c29saWQtY29sb3I6IzAwMDAwMDtzb2xpZC1vcGFjaXR5OjE7ZmlsbDojMTcxMzExO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDoxMDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLWRhc2hvZmZzZXQ6MDtzdHJva2Utb3BhY2l0eToxO2NvbG9yLXJlbmRlcmluZzphdXRvO2ltYWdlLXJlbmRlcmluZzphdXRvO3NoYXBlLXJlbmRlcmluZzphdXRvO3RleHQtcmVuZGVyaW5nOmF1dG87ZW5hYmxlLWJhY2tncm91bmQ6YWNjdW11bGF0ZSIKICAgICAgIGlkPSJjaXJjbGU0NDkzIgogICAgICAgY3g9IjEyLjQxNDIwMSIKICAgICAgIGN5PSIxMDMwLjM1NDIiCiAgICAgICByPSIxLjk2MzA2MzQiCiAgICAgICBpbmtzY2FwZTpleHBvcnQtZmlsZW5hbWU9Ii5ccmVjdDQ0ODUucG5nIgogICAgICAgaW5rc2NhcGU6ZXhwb3J0LXhkcGk9IjkwIgogICAgICAgaW5rc2NhcGU6ZXhwb3J0LXlkcGk9IjkwIiAvPgogICAgPGNpcmNsZQogICAgICAgcj0iMS45NjMwNjM0IgogICAgICAgY3k9IjEwMzAuMzU0MiIKICAgICAgIGN4PSIyMy4xMTAxMjEiCiAgICAgICBpZD0iY2lyY2xlNDQ5NSIKICAgICAgIHN0eWxlPSJjb2xvcjojMDAwMDAwO2NsaXAtcnVsZTpub256ZXJvO2Rpc3BsYXk6aW5saW5lO292ZXJmbG93OnZpc2libGU7dmlzaWJpbGl0eTp2aXNpYmxlO29wYWNpdHk6MTtpc29sYXRpb246YXV0bzttaXgtYmxlbmQtbW9kZTpub3JtYWw7Y29sb3ItaW50ZXJwb2xhdGlvbjpzUkdCO2NvbG9yLWludGVycG9sYXRpb24tZmlsdGVyczpsaW5lYXJSR0I7c29saWQtY29sb3I6IzAwMDAwMDtzb2xpZC1vcGFjaXR5OjE7ZmlsbDojMTcxMzExO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDoxMDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLWRhc2hvZmZzZXQ6MDtzdHJva2Utb3BhY2l0eToxO2NvbG9yLXJlbmRlcmluZzphdXRvO2ltYWdlLXJlbmRlcmluZzphdXRvO3NoYXBlLXJlbmRlcmluZzphdXRvO3RleHQtcmVuZGVyaW5nOmF1dG87ZW5hYmxlLWJhY2tncm91bmQ6YWNjdW11bGF0ZSIKICAgICAgIGlua3NjYXBlOmV4cG9ydC1maWxlbmFtZT0iLlxyZWN0NDQ4NS5wbmciCiAgICAgICBpbmtzY2FwZTpleHBvcnQteGRwaT0iOTAiCiAgICAgICBpbmtzY2FwZTpleHBvcnQteWRwaT0iOTAiIC8+CiAgICA8cGF0aAogICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjYyIKICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICBpZD0icGF0aDQ0OTciCiAgICAgICBkPSJtIDUuMDA1NTM3NywxMDI3LjI3MjcgYyAtMS4xNzA0MzUsLTEuMDgzNSAtMi4wMjY5NzMsLTAuNzcyMSAtMi4wNDQxNzIsLTAuNzQ2MyIKICAgICAgIHN0eWxlPSJkaXNwbGF5OmlubGluZTtmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzODRlNTQ7c3Ryb2tlLXdpZHRoOjAuMzk3MzA4NzQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiIC8+CiAgICA8cGF0aAogICAgICAgc3R5bGU9ImRpc3BsYXk6aW5saW5lO2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzM4NGU1NDtzdHJva2Utd2lkdGg6MC4zOTczMDg3NDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgIGQ9Im0gNC4zODUyNDU3LDEwMjYuOTE1MiBjIC0xLjE1ODU1NywwLjAzNiAtMS4zNDY3MDQsMC42MzAzIC0xLjMzODgxLDAuNjUyMyIKICAgICAgIGlkPSJwYXRoNDQ5OSIKICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjIiAvPgogICAgPHBhdGgKICAgICAgIHN0eWxlPSJkaXNwbGF5OmlubGluZTtmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzODRlNTQ7c3Ryb2tlLXdpZHRoOjAuMzk3MzA4NzQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICBkPSJtIDI2LjYzMDUzMywxMDI3LjE3MjQgYyAxLjE3MDQzLC0xLjA4MzUgMi4wMjY5NywtMC43NzIxIDIuMDQ0MTcsLTAuNzQ2MyIKICAgICAgIGlkPSJwYXRoNDUwMSIKICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjIiAvPgogICAgPHBhdGgKICAgICAgIHNvZGlwb2RpOm5vZGV0eXBlcz0iY2MiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgaWQ9InBhdGg0NTAzIgogICAgICAgZD0ibSAyNy4zMjE3NzMsMTAyNi42NzMgYyAxLjE1ODU2LDAuMDM2IDEuMzQ2NywwLjYzMDIgMS4zMzg4LDAuNjUyMiIKICAgICAgIHN0eWxlPSJkaXNwbGF5OmlubGluZTtmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzODRlNTQ7c3Ryb2tlLXdpZHRoOjAuMzk3MzA4NzQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiIC8+CiAgPC9nPgo8L3N2Zz4K",
            "tags": [
                {
                    "id": 9,
                    "created_at": "2025-04-02T14:20:13.878001152Z",
                    "updated_at": "2025-04-02T14:20:13.878001152Z",
                    "deleted_at": null,
                    "text": "programming",
                    "bookmarks": null
                },
                {
                    "id": 10,
                    "created_at": "2025-04-02T14:22:06.770610425Z",
                    "updated_at": "2025-04-02T14:22:06.770610425Z",
                    "deleted_at": null,
                    "text": "golang",
                    "bookmarks": null
                }
            ],
            "snapshots": [
                {
                    "id": 5,
                    "created_at": "2025-04-02T14:22:06.800464819Z",
                    "updated_at": "2025-04-02T14:22:07.383049747Z",
                    "deleted_at": null,
                    "title": "",
                    "key": "41d6b15438c7b4c1756c41834989bb89985d3c9f5cfec69747b2ff74d42db4f5",
                    "text": "Why Go arrow_drop_down|||Learn|||Docs arrow_drop_down|||Packages|||Community arrow_drop_down|||Why Go navigate_next|||navigate_beforeWhy Go|||Case Studies|||Use Cases|||Security|||Learn|||Docs navigate_next|||navigate_beforeDocs|||Effective Go|||Go User Manual|||Standard library|||Release Notes|||Packages|||Community navigate_next|||navigate_beforeCommunity|||Recorded Talks|||Meetups open_in_new|||Conferences open_in_new|||Go blog|||Go project|||Get connected|||Build simple, secure, scalable systems with Go|||An open-source programming language supported by Google|||Easy to learn and great for teams|||Built-in concurrency and a robust standard library|||Large ecosystem of partners, communities, and tools|||Get Started Download|||Download packages for Windows 64-bit, macOS, Linux, and more|||The go command by default downloads and authenticates modules using the Go module mirror and Go checksum database run by Google. Learn more.|||Companies using Go|||Organizations in every industry use Go to power their software and services View all stories|||“At the time, no single team member knew Go, but within a month, everyone was writing in Go and we were building out the endpoints. It was the flexibility, how easy it was to use, and the really cool concept behind Go (how Go handles native concurrency, garbage collection, and of course safety+speed.) that helped engage us during the build. Also, who can beat that cute mascot!”|||— Jaime Enrique Garcia Lopez, Senior Software Development Manager at Capital One|||\"A small language that compiles fast makes for a happy developer. The Go language is small, compiles really fast, and as a result it lets your mind focus on the actual problem and less on the tool you are using to solve it. Code, test, debug cycles are so quick that you forget you are not working with an interpreted language. Looking at our code, you see less boilerplate and more business logic.\"|||— Clayton Coleman, Lead Engineer, Open Shift at RedHat|||“Go has excellent characteristics for scalability and services written using it typically have very small memory footprints. Because code is compiled into a single static binary, services can also be containerised with ease, making it much simpler to build and deploy. These attributes make Go an ideal choice for companies building microservices, as you can easily deploy into a highly available and scalable environment such as Kubernetes.”|||— Matt Boyle, Lead Software Engineer at Curve|||\"In our tightly managed environments where we run Go code, we have seen a CPU reduction of approximately 10% with cleaner and maintainable code.\"|||— Bala Natarajan, Sr. Director of Engineering, Developer Experience at PayPal|||\"Tooling has always been a problem with our legacy code base... but we have found that Go has excellent tooling, plus built-in testing, benchmarking, and profiling frameworks. It is easy to write efficient and resilient applications. After working on Go, most of our developers don't want to go back to other languages.\"|||— Benjamin Cane, Vice President and Principal Engineer at American Express|||\"...when a programming language is designed for exactly the environment most of us use right now—scalable, cloud-based servers that are optimized for performance—a lot can go right.\"|||— John Biggs and Ben Popper, at Stack Overflow navigate_next|||Try Go|||Press Esc to move out of the editor. // You can edit this code! // Click here and start typing. package main import \"fmt\" func main() { fmt.Println(\"Hello, 世界\") }|||Hello, 世界 Program exited.|||Run|||Share Tour|||What’s possible with Go|||Use Go for a variety of software development purposes|||Cloud \u0026 Network Services|||With a strong ecosystem of tools and APIs on major cloud providers, it is easier than ever to build services with Go.|||Popular Packages:|||cloud.google.com/go|||aws/client|||Azure/azure-sdk-for-go|||Learn More arrow_forward|||Command-line Interfaces|||With popular open source packages and a robust standard library, use Go to create fast and elegant CLIs.|||Popular Packages:|||spf13/cobra|||spf13/viper|||urfave/cli|||delve|||chzyer/readline|||Learn More arrow_forward|||Web Development|||With enhanced memory performance and support for several IDEs, Go powers fast and scalable web applications.|||Popular Packages:|||net/http|||html/template|||flosch/pongo2|||database/sql|||elastic/go-elasticsearch|||Learn More arrow_forward|||DevOps \u0026 Site Reliability|||With fast build times, lean syntax, an automatic formatter and doc generator, Go is built to support both DevOps and SRE.|||Popular Packages:|||open-telemetry/opentelemetry-go|||istio/istio|||urfave/cli|||Learn More arrow_forward|||More use cases arrow_forward|||Get started with Go|||Explore a wealth of learning resources, including guided journeys, courses, books, and more.|||Get Started Download Go|||Resources to start on your own|||Guided learning journeys|||Step-by-step tutorials to get your feet wet|||Online learning|||Browse resources and learn at your own pace|||Featured books|||Read through structured chapters and theories|||Cloud Self-paced labs|||Jump in to deploying Go apps on GCP|||In-Person Trainings|||Ardan Labs|||Offering customized on-site live training classes.|||Gopher Guides|||Customized In-person, remote, and online training classes. Training for Developers by Developers.|||Boss Sauce Creative|||Personalized or track-based Go training for teams.|||Shiju Varghese|||On-site classroom training on Go and consulting on distributed systems architectures, in India.|||Why Go Use Cases Case Studies|||Get Started Playground Tour Stack Overflow Help|||Packages Standard Library About Go Packages|||About Download Blog Issue Tracker Release Notes Brand Guidelines Code of Conduct|||Connect Twitter GitHub Slack r/golang Meetup Golang Weekly|||Copyright|||Terms of Service|||Privacy Policy|||Report an Issue",
                    "bookmark_id": 5,
                    "bookmark": {
                        "id": 0,
                        "created_at": "0001-01-01T00:00:00Z",
                        "updated_at": "0001-01-01T00:00:00Z",
                        "deleted_at": null,
                        "url": "",
                        "title": "",
                        "notes": "",
                        "domain": "",
                        "favicon": "",
                        "tags": null,
                        "snapshots": null,
                        "collection": null,
                        "public": false,
                        "unread": false,
                        "user_id": 0
                    },
                    "size": 346501,
                    "resources": null
                }
            ],
            "collection": null,
            "public": true,
            "unread": false,
            "user_id": 1
        },
        {
            "id": 2,
            "created_at": "2025-04-02T14:13:58.500127499Z",
            "updated_at": "2025-04-02T14:13:58.500127499Z",
            "deleted_at": null,
            "url": "https://www.fsf.org/",
            "title": "Front Page — Free Software Foundation — working together for free software",
            "notes": "The Free Software Foundation (FSF) is a nonprofit with a worldwide mission to promote computer user freedom.\r\n\r\n",
            "domain": "www.fsf.org",
            "favicon": "data:image/vnd.microsoft.icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAACXBIWXMAAAsTAAALEwEAmpwYAAADG0lEQVQoFQEQA+/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQECAAAAAAAAAAAAAAAAAAAA2qOp7tTXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAP///wAAAAAAAOCyt7pUXQcSEgcQDwAAAP///wAAAAAAAAD//x9NSDqNhQEBAQQAAAAAAAAAAAAAAAAQJiQGDQ0aPToZPjoAAQEAAAAAAAAAAAABAQEpZV4AAAAAAAAAAAAA////////////////pSIv05KZ////////////////////////////////AAAAAQAAAP///6krNwAAAAAAAPHc3ggSEQcSEQAAAAAAAAAAABY3NEGelQAAAAAAAAEBAQEAAAD///+YARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGDg1g690CBgYAAAABAQEEAAAAAAAAS7etAAAAAAAAwGVtHklFIlJOAAAAAAAAAAAAAAAA+/X2BwYGAAAAAAAABAAAAAAAAB1IQwAAAAAAAAYNDBAmJB1IQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAgL//v4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAQEB//7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAECAv/+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////////////////cqK3qzM////////////////////////////////8AAAABAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGuLjDf9F8oBAAAAAElFTkSuQmCC",
            "tags": [
                {
                    "id": 4,
                    "created_at": "2025-04-02T14:13:58.492625818Z",
                    "updated_at": "2025-04-02T14:13:58.492625818Z",
                    "deleted_at": null,
                    "text": "fsf",
                    "bookmarks": null
                },
                {
                    "id": 5,
                    "created_at": "2025-04-02T14:13:58.496800641Z",
                    "updated_at": "2025-04-02T14:13:58.496800641Z",
                    "deleted_at": null,
                    "text": "free software",
                    "bookmarks": null
                }
            ],
            "snapshots": [
                {
                    "id": 2,
                    "created_at": "2025-04-02T14:13:58.509312988Z",
                    "updated_at": "2025-04-02T14:13:59.804611262Z",
                    "deleted_at": null,
                    "title": "",
                    "key": "99e10c8031f28a7b46882ee32e6639557c685092ecd89ab3e4047cdb15d7e741",
                    "text": "About|||Campaigns|||Licensing|||Membership|||Resources|||Community|||♥Donate♥|||Shop|||Search|||The Free Software Foundation (FSF) is a nonprofit with a worldwide mission to promote computer user freedom.|||Featured|||\"Free\" filing should be free as in freedom|||Featured|||GNU Head, Stallman's katana, and Internet Hall of Fame medal auctioned off to free software community members|||Free software means that the users have the freedom to run, edit, contribute to, and share the software. Thus, free software is a matter of liberty, not price. We have been defending the rights of all software users for the past 39 years. Help sustain us for many more; become an associate member today.|||Subscribe to our monthly newsletter, the Free Software Supporter:|||Follow Us on Social Media|||Share Mastodon Twitter Peertube|||Our initiatives|||Defective by Design is a grassroots campaign to eliminate Digital Restrictions Management (DRM) in media and devices.|||Read the Email Self-Defense Guide to get started with email encryption, a skill necessary to combat bulk surveillance.|||The End Software Patents initiative fights to abolish software patents around the world.|||Join us in calling for a Web that respects our freedom by being compatible with free software and stand up against nonfree JavaScript.|||The Free Software Directory is a collaborative catalog of computer programs and apps that are fully free.|||The GNU operating system is a continuously evolving, complete operating system made entirely of free software.|||LibrePlanet is our global network of free software activism, including events like our annual conference, and online collaboration spaces.|||The Licensing and Compliance Lab is the preeminent resource for public education on licensing best practices and enforcing the GPL.|||The \"Respects Your Freedom\" program certifies retailers who sell hardware in a manner that respects the rights of their users.|||\"This community that we have, that we're building, that does so much, has to grow. We can't compete with Apple, we can't compete with Google, directly, in the field of resources. What we can eventually do is head count and heart count. We can compete on the ground of ideology because ours is better.\"|||-- Edward Snowden, NSA whisteblower, speaking at LibrePlanet 2016.|||Take Action|||Nominate someone for a Free Software Award!|||Collaborate with us to build the freedom ladder|||Make the switch to free software|||Contribute to the FSF|||Bulletin|||FSF SysOps cleaning up the Internet|||Society will never be free under nonfree software|||Tracing the FSF's footsteps|||New energies for a remote FSF|||What abandonware teaches us about the importance of software freedom Read the current issue of the Bulletin and check out the archives.|||FSF40|||Join us in celebrating 40 years of fighting for software freedom!|||Blog News Events|||March GNU Spotlight with Amin Bandali|||Eighteen new GNU releases in the last month (as of March 31, 2025):|||\"Free\" filing should be free as in freedom|||A modern free society has an obligation to offer electronic tax filing that respects user freedom, and the United States is not excluded from this responsibility.|||FSD meeting recap 2025-03-21|||Check out the important work our volunteers accomplished at today's Free Software Directory (FSD) IRC meeting.|||Free Software Directory meeting on IRC: Friday, March 28, starting at 12:00 EDT (16:00 UTC)|||Join the FSF and friends on Friday, March 28 from 12:00 to 15:00 EDT (16:00 to 19:00 UTC) to help improve the Free Software Directory.|||Free Software Directory meeting on IRC: Friday, April 4, starting at 12:00 EDT (16:00 UTC)|||Join the FSF and friends on Friday, April 4 from 12:00 to 15:00 EDT (16:00 to 19:00 UTC) to help improve the Free Software Directory.|||Community meetup in Lviv, Ukraine|||Meet, discuss, work together, plan activities, and cooperate|||Meet Abelujo, a free software solution for managing bookstores|||GNU Head, Stallman's katana, and Internet Hall of Fame medal auctioned off to free software community members|||BOSTON, Massachusetts, USA (Monday, March 24, 2025) the Free Software Foundation (FSF) today announced that, among other historical free software artifacts, the GNU Head found a new home through an unprecedented memorabilia auction.|||Only one day left to win a piece of free software history in the silent auction|||Our first-ever Silent Memorabilia Auction will end tomorrow, March 21, at 15:00 EDT (19:00 UTC). This is your last chance to bid!|||Terms and conditions for the Free Software Foundation's Live Memorabilia Auction|||By participating in the Free Software Foundation's (\"FSF\", \"we\", \"us\", \"our\") Memorabilia Live Auction (\"live auction\"), anyone (individual or business representative) who bids or watches the auction (\"participate\") will be understood to have read the following live auction terms and conditions (\"terms and conditions\") and agrees to be bound by them.|||The FSF is a charity with a worldwide mission to advance software freedom — learn about our history and work.|||Copyright © 2004-2025 Free Software Foundation, Inc. Privacy Policy.|||This work is licensed under a Creative Commons Attribution-No Derivative Works 3.0 license (or later version) — Why this license?|||About|||Staff and Board|||Contact Us|||Press Information|||Jobs|||Volunteering and Internships|||History|||Privacy Policy|||JavaScript Licenses|||Hardware Database|||Free Software Directory|||Free Software Resources|||Copyright Infringement Notification|||Campaigns|||Freedom Ladder|||Fight to Repair|||Free JavaScript|||High Priority Free Software Projects|||Secure Boot vs Restricted Boot|||Surveillance|||Upgrade from Windows|||Working Together for Free Software|||GNU Operating System|||Defective by Design|||End Software Patents|||OpenDocument|||Free BIOS|||Connect with free software users|||Licensing|||Education|||Licenses|||GNU GPL|||GNU AGPL|||GNU LGPL|||GNU FDL|||Licensing FAQ|||Compliance|||How to use GNU licensesfor your own software|||Latest News|||Upcoming Events|||FSF Blogs|||Donate to the FSF|||Join the FSF|||Patrons|||Associate Members|||My Account|||Working Together for Free Software Fund|||Philosophy|||The Free Software Definition|||Copyleft: Pragmatic Idealism|||Free Software and Free Manuals|||Selling Free Software|||Motives for Writing Free Software|||The Right To Read|||Why Open Source Misses the Point of Free Software|||Complete Sitemap|||1PC9aZC4hNX2rmmrt7uHTfYAS3hRbph4UN",
                    "bookmark_id": 2,
                    "bookmark": {
                        "id": 0,
                        "created_at": "0001-01-01T00:00:00Z",
                        "updated_at": "0001-01-01T00:00:00Z",
                        "deleted_at": null,
                        "url": "",
                        "title": "",
                        "notes": "",
                        "domain": "",
                        "favicon": "",
                        "tags": null,
                        "snapshots": null,
                        "collection": null,
                        "public": false,
                        "unread": false,
                        "user_id": 0
                    },
                    "size": 1264450,
                    "resources": null
                }
            ],
            "collection": null,
            "public": true,
            "unread": false,
            "user_id": 1
        },
        {
            "id": 1,
            "created_at": "2025-04-02T14:11:26.543150935Z",
            "updated_at": "2025-04-02T14:11:26.543150935Z",
            "deleted_at": null,
            "url": "https://en.wikipedia.org/wiki/Bookmark_(digital)",
            "title": "Bookmark (digital) - Wikipedia",
            "notes": "In the context of the World Wide Web, a bookmark is a Uniform Resource Identifier (URI) that is stored for later retrieval in any of various storage formats. ",
            "domain": "en.wikipedia.org",
            "favicon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAACgCAAAAACupDjxAAAE6ElEQVR4AezOAQEAAAQAIP9PMwPUgiKHExQUFBQUFBQUFBQUFBS8GRQUFBQUFBQUFBQUFBQUFBQUFBQs4szAQ5UujMN/1I+RiLEkElkiRMRHCCEilhDiYkNEliyEi3AJIQsXi2VZliAkiwhZWWGM33dvzrzONHMWbjPzAJz7+R4z5zzvmfa/m0KpWm92evejx+lkPOi1G7VSPmvndjzl7Wyx+mdp8DB9GPa7rUatXMzmPugUU3a+XG/3huPxsN9pVPJ2qkIurfTNn3/fvR89jAbdZrVgp0r/LpiDgVceLYTxzC2ClMkHBLj9d8H3fjnEw64PvsinTj7wf2wNj3Qf7yrQSdcGK/Jj2C5Aw6rcb66yB4/LW/jIzxwqNg1otNf0WLfgUZjLP3cXedEbHa93SJxpGgIKB2rMND9quJ760KHGKqVe+ea6p/hFM3yjj6EsPPn/E5wZ008Xf8nvr52ZX/DIuPThlKBYUOeIv7R4wVSdpKt3UPZUIA3PUPygzg4Asp8UtC3RjSDU25R3JB1e4O22mxM1fgfeuuyI9C4CQf6AYhlIERRzanQANEPKL4/62oIfXg8bND3CMgXuLcAKHtWDBVgfkQiyA8UmcMah+E1hIE8qcEY6jEbwDYo+L6mqlSo99mkgc2CAW+nU9QVZ8UITmAFLKF70HTsiw058hVEJSgunvMD1hmHda0wKsI/hsZpHJniylUbRDdZN8c4zPQATBthZQNaJTJCDwGEQ9yygTY6tBeRODI3giNEJflOaCRRrkrwD8JMBnCxg7SMUZNNYms+MWrkjubaAgsMAC7UeneCzuTT3asX6MB+FmmzSqAR5ayzNzhL3FYCSywArKWV0glNjadhVK6l9Iziw5WjPIxY8ZoylWUNRN8T4mJbGRCfIvrE0bELAs+Hpjxm14BrG0rxC+M+wf6195IKsG0vDKjxeDQW4Y/SCSymNealu+mZ4j0HQyUtpjFeGvBM+hquMQZATc2lmwbu/MAKwiEXwkJLSGK8MJTdsDOecWAR5J6UxP91l2Bh+YDyC71Ia81Il5GMutY9JkFVjadqmUq/laz0OwbmpNGsI9eAYXsUmeLoxlKYFAW+XI7zG2AQ5DJRGdqC8/ublGF7EKLizQkvTAKxtQ7v7CyVpTDyCbIWV5u28K1+g6FB4kcbEJSgWDf81Ir2nnHFrqx/u1CFWQZakND7poX5l6Om/I3UZr+BPKY2eYvuTpFuUu782hlcxC35lpDTade/Rf2W45xknJzfY+AT547I0VfktQa4MmYOM4WXsghv4S/MEYHZ5ZRh77z7vxC7Ihr80ZeDWufyVwf5S82/C+AWffKVZ+l7jQH//fSB9SEDQLWilcUtAJWTS5JzzGO4yAUE+an8emV9csLpQzM5BWiUieEhLaZwiUA+9dxWdkjQmXkH9MU1/Bb4omzJOZHPGL7iSx1QA2sZfGaQxsQuyBsHamNcmTEpwAaFnqpA0JglBJysSO/N9p8fEBDmCYvDNH1XWCQruVZDtAwM4Ofm8S06QbTkGxpA/JScoNcmeGMLRPjfGTVSQZQD4+c3H6SOTFZydx5lhh6aA9GfCgif7my/ynjQmOUGOv7kKbO30JnFB7lwa+Tr+364dCwAAAAAI87cOo2cRDCD/ICAgICAgICDgEyAgICAgICAgICAgICAgICBgYUeNfR+Kw20AAAAASUVORK5CYII=",
            "tags": [
                {
                    "id": 1,
                    "created_at": "2025-04-02T14:11:26.52753391Z",
                    "updated_at": "2025-04-02T14:11:26.52753391Z",
                    "deleted_at": null,
                    "text": "wikipedia",
                    "bookmarks": null
                },
                {
                    "id": 2,
                    "created_at": "2025-04-02T14:11:26.534648077Z",
                    "updated_at": "2025-04-02T14:11:26.534648077Z",
                    "deleted_at": null,
                    "text": "bookmark",
                    "bookmarks": null
                },
                {
                    "id": 3,
                    "created_at": "2025-04-02T14:11:26.539272032Z",
                    "updated_at": "2025-04-02T14:11:26.539272032Z",
                    "deleted_at": null,
                    "text": "definition",
                    "bookmarks": null
                }
            ],
            "snapshots": [
                {
                    "id": 1,
                    "created_at": "2025-04-02T14:11:26.573449815Z",
                    "updated_at": "2025-04-02T14:11:27.725771842Z",
                    "deleted_at": null,
                    "title": "",
                    "key": "4cd5cf6dbd9859795882c94200a3466b4c9032bb67b3f489a5218b83fbb479c4",
                    "text": "Search|||Donate|||Create account|||Log in|||Contents hide|||(Top)|||Storage|||Bookmarklets|||Live bookmarks|||Bookmarks bar|||See also|||References|||External links|||Bookmark (digital)|||28 languages|||Tools|||Appearance hide|||Text|||Small|||Standard|||Large|||Width|||Standard|||Wide|||Color (beta)|||Automatic|||Light|||Dark|||From Wikipedia, the free encyclopedia|||\"Favorites\" redirects here. For other uses, see Favorites (disambiguation).|||Bookmarks in browsers are usually identified with a star icon and in many instances will use the icon image of the website to highlight the saved bookmark.|||In the context of the World Wide Web, a bookmark is a Uniform Resource Identifier (URI) that is stored for later retrieval in any of various storage formats. All modern web browsers include bookmark features. Bookmarks are called favorites or Internet shortcuts in Internet Explorer and Microsoft Edge, and by virtue of that browser's large market share, these terms have been synonymous with bookmark since the First Browser War.1 Bookmarks are normally accessed through a menu in the user's web browser, and folders are commonly used for organization. In addition to bookmarking methods within most browsers, many external applications offer bookmarks management.|||Bookmarks have been incorporated in browsers since the ViolaWWW browser in 1992,2 and Mosaic browser in 1993.3 Bookmark lists were called Hotlists in Mosaic4 and in previous versions of Opera; this term has faded from common use. Cello, another early browser, also had bookmarking features.|||With the advent of social bookmarking, shared bookmarks have become a means for users sharing similar interests to pool web resources, or to store their bookmarks in such a way that they are not tied to one specific computer or browser. Web-based bookmarking services let users save bookmarks on a remote web server, accessible from anywhere.|||Newer browsers have expanded the \"bookmark\" feature to include variations on the concept of saving links. Mozilla Firefox introduced live bookmarks in 2004,5 which resemble standard bookmarks but contain a list of links to recent articles supplied by a news site or weblog, which is regularly updated via RSS feeds; however, Mozilla removed this feature in 2018.6 \"Bookmarklets\" are JavaScript programs stored as bookmarks that can be clicked to perform a function.|||Storageedit|||The bookmarks sidebar in Mozilla Firefox 3.0. An alternative to the bookmarks menu, it is similar to sidebars found in Internet Explorer, Opera, and Safari.|||Each browser has a built-in tool for managing the list of bookmarks. The list storage method varies, depending on the browser, its version, and the operating system on which it runs.|||Netscape browsers store bookmarks in the single HTML-coded file bookmarks.html. This approach permits publication and printing of a categorized and indented catalog, and works across platforms. Bookmark names need not be unique. Editing this file outside its native browser requires editing HTML.|||For data portability and interoperability, most modern Web browsers support importing from and exporting to the Netscape bookmarks.html format.|||Beginning with Firefox 3, Mozilla Corporation began using SQLite in browser releases to store bookmarks, history, cookies, and preferences in a transactionally secure database.|||Internet Explorer's \"Favorites\" (also \"Internet Shortcuts\") are stored as individual files named with the original link name, and the filename extension \".URL\",7 for example \"Home Page.URL\" collected in a directory named \"Favorites\" which may have subdirectories. Bookmark names must be unique within a folder. Each file contains the original URL and Microsoft-specific metadata. Browsers have varying abilities to import and export bookmarks to favorites, and vice versa.8910|||Bookmarkletsedit|||Main article: Bookmarklet|||A bookmarklet in action|||Bookmarklets are JavaScript programs stored as bookmarks. The term is a portmanteau of the words bookmark and applet. Bookmarklets are possible because the JavaScript URI scheme allows JavaScript programs to be stored as URIs, which can be stored in bookmarks. Bookmarklets have access to the current page, which they may inspect and change. As such, they can be simple \"one-click\" tools which add functionality to the browser. Bookmarklets are typically installed by navigating to a web page that links to a JavaScript URI, right-clicking the link, and clicking the bookmark option.|||Web developer Steve Kangas got the idea from the Netscape JavaScript Guide,11 and coined the term bookmarklets in 1998.12 Brendan Eich, the inventor of JavaScript, explained bookmarklets as follows:|||They were a deliberate feature in this sense: I invented the javascript: URL along with JavaScript in 1995, and intended that javascript: URLs could be used as any other kind of URL, including being bookmark-able. In particular, I made it possible to generate a new document by loading, e.g. javascript:'hello, world', but also (key for bookmarklets) to run arbitrary script against the DOM of the current document, e.g. javascript:alert(document.links[0].href). The difference is that the latter kind of URL uses an expression that evaluates to the undefined type in JS. I added the void operator to JS before Netscape 2 shipped to make it easy to discard any non-undefined value in a javascript: URL.|||— Brendan Eich, email to Simon Willison13|||Live bookmarksedit|||Live bookmarks are Internet bookmarks powered by RSS, particularly in Mozilla Firefox. They allow users to dynamically monitor changes to their favorite news sources. Instead of treating RSS-feeds as HTML pages like most news aggregators do, they are treated as bookmarks that are updated in real-time with a link to the appropriate source. Live bookmarks are updated automatically; however, no browser option exists to prevent or control the automatic live bookmark updates.|||Live bookmarks were available in Firefox from 2004 until December 2018; since then, Firefox no longer supports them.6|||Bookmarks baredit|||The Bookmarks bar, also known as the Favorites bar in Microsoft Edge and Internet Explorer, is a graphical user interface (GUI) element in modern web browsers that provides quick access to frequently visited or saved websites. Positioned directly beneath the address bar by default, it allows users to store, organize, and retrieve bookmarks with minimal effort.14|||See alsoedit|||Deep linking|||Favicon|||Smart keyword|||XBEL|||Table of content|||Bookmarking systems|||Bookmark manager|||Enterprise bookmarking|||Comparison of enterprise bookmarking platforms|||Social bookmarking|||List of social bookmarking websites|||Other weblink-based systems|||Search engine|||Comparison of search engines with social bookmarking systems|||Web directory|||Lists of websites|||Referencesedit|||^ Shannon, L. R. (February 21, 1999). \"Travel Advisory: Cyberscout; Getting to Your Destination Without Drowning in Data\". The New York Times. Retrieved July 3, 2009.|||^ Berners-Lee, Tim (November 3, 1992). \"A quick look at ViolaWWW\". Retrieved March 29, 2022.|||^ \"New X-based information systems browser available.\", post to comp.infosystems by Marc Andreessen on February 16, 1993|||^ \"May World-Wide Web News\" in 1993 by Tim Berners-Lee|||^ \"Mozilla Foundation Releases the Highly Anticipated Mozilla Firefox 1.0 Web Browser\", press release on November 9, 2004|||^ a b \"Firefox 64.0, See All New Features, Updates and Fixes\". Mozilla. December 11, 2018. Retrieved December 12, 2018.|||^ \"Working with Shortcuts\". Microsoft Windows 2000 Scripting Guide. Microsoft. 22 October 2009. Retrieved June 19, 2015.|||^ \"Netscape Bookmark File Format\" (Web). Microsoft. Retrieved August 27, 2009.|||^ \"How to import and export the Internet Explorer Favorites folder to a 32-bit version of Windows\" (Web). Microsoft. Retrieved August 28, 2009.|||^ Mikkers, Jean-Paul (19 December 2007). \"How favorites are stored on Windows XP and Vista\" (Web). Codeproject. Retrieved August 28, 2009.|||^ \"About Bookmarklets\". Retrieved July 3, 2009.|||^ \"Bookmarklets Home Page — free tools for power surfing\". Archived from the original on July 7, 2009. Retrieved July 3, 2009.|||^ Willison, Simon (April 10, 2004). \"Email from Brendan Eich\". SitePoint. Archived from the original on 2009-07-21. Retrieved 2007-04-22.|||^ Shannon, L. R. (February 21, 1999). \"Travel Advisory: Cyberscout; Getting to Your Destination Without Drowning in Data\". The New York Times. Retrieved July 3, 2009.|||External linksedit|||show|||v|||t|||e|||Web browsers|||Authority control databases: National|||Czech Republic|||Categories:|||Web browsers|||Internet terminology|||Online bookmarking services|||This page was last edited on 1 April 2025, at 06:42 (UTC).|||Text is available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.",
                    "bookmark_id": 1,
                    "bookmark": {
                        "id": 0,
                        "created_at": "0001-01-01T00:00:00Z",
                        "updated_at": "0001-01-01T00:00:00Z",
                        "deleted_at": null,
                        "url": "",
                        "title": "",
                        "notes": "",
                        "domain": "",
                        "favicon": "",
                        "tags": null,
                        "snapshots": null,
                        "collection": null,
                        "public": false,
                        "unread": false,
                        "user_id": 0
                    },
                    "size": 319278,
                    "resources": null
                }
            ],
            "collection": null,
            "public": true,
            "unread": false,
            "user_id": 1
        }
    ],
    "FrequentTags": [
        {
            "Tag": "wikipedia",
            "Count": 6
        },
        {
            "Tag": "free software",
            "Count": 5
        },
        {
            "Tag": "license",
            "Count": 4
        },
        {
            "Tag": "activitypub",
            "Count": 3
        },
        {
            "Tag": "IT",
            "Count": 2
        },
        {
            "Tag": "bookmark",
            "Count": 2
        },
        {
            "Tag": "documentation",
            "Count": 2
        },
        {
            "Tag": "golang",
            "Count": 2
        },
        {
            "Tag": "news",
            "Count": 2
        },
        {
            "Tag": "programming",
            "Count": 2
        },
        {
            "Tag": "definition",
            "Count": 1
        },
        {
            "Tag": "fediverse",
            "Count": 1
        },
        {
            "Tag": "feed",
            "Count": 1
        },
        {
            "Tag": "foundation",
            "Count": 1
        },
        {
            "Tag": "fsf",
            "Count": 1
        },
        {
            "Tag": "github",
            "Count": 1
        },
        {
            "Tag": "json",
            "Count": 1
        },
        {
            "Tag": "mastodon",
            "Count": 1
        },
        {
            "Tag": "omnom",
            "Count": 1
        },
        {
            "Tag": "scraping",
            "Count": 1
        }
    ],
    "HasNextPage": false,
    "HasSearch": false,
    "OrderBy": "",
    "Page": "bookmarks",
    "Pageno": 1,
    "SearchParams": {
        "Q": "",
        "Owner": "",
        "FromDate": "",
        "ToDate": "",
        "Tag": "",
        "Domain": "",
        "Collection": "",
        "IsPublic": false,
        "IsPrivate": false,
        "SearchInSnapshot": false,
        "SearchInNote": false
    },
    "Theme": "light",
    "URL": "https://omnom.zone/bookmarks?format=json\u0026theme=light",
    "User": null
}