Now that source code licenses are in the news again, I guess it’s finally time to post this!

Yowza!

Nearly every year, the Chicago-based company “Cards Against Humanity”, creator of a card game with the same name, runs an absurd marketing stunt to gain brand awareness. In the past, they’ve taken donations to dig a massive pointless hole, ran a “99% off sale”, and sold literally nothing for $5.

In the wake of Elon Musk’s acquisition and subsequent burning alive of Twitter in 2022, Cards Against Humanity announced a new “social network” called “Yowza!” for Black Friday 2023. They announced it with this tweet:

A tweet from the Cards Against Humanity Twitter account, which says 'It's Black friday, and social media is tearing us apart. Lies. Hate. Crypto enthusiasts. You deserve something better. Introducing #Yowza, our new platform guaranteed to be free of misinformation, hate speech and bad vibes of any kind. #FuckXJoinYowza'

They accomplished these claims quite simply: they made a site that you can only ever post the word “Yowza!” and variants of it on. If you try to post anything else, it’ll just replace it with a variant of “Yowza!”. They also made a scheme where you could make money by referring users to it, or pay money for “Yowza! Black” which lets you post “Awooga”, too. As far as their stunts have gone, it’s fairly tame.

I got curious, though. Did they build all of this themselves? It’s a pretty smoothly put together site, a hell of a lot of work for a Black Friday stunt that loses money. Of course, I’d better check that I don’t violate the Terms of Service first to make sure I’m allowed to know!

If you want to have a look at their Terms of Service, it’s on a hard to find page that’s not really accessible from anywhere other than the now-disabled registration flow, located at https://www.yowza.social/privacy. Unfortunately for us, we’re going to be in violation of the terms of service if we keep looking into this. Cards Against Humanity lawyers, please stop reading here, this is the end of the post, I promise.

Additionally, you agree not to:

[irrelevant sections omitted]

Modify, adapt, disassemble, decompile, translate, reverse engineer or otherwise attempt to discover the source code or 
structure, sequence and/or organization of our Websites or any portion thereof, except where required by applicable local law,
and then only to the extent required by such law(s).

Anyway, now that Cards Against Humanity has stopped reading: let’s dig in. Using my crazy hacker skills, I was able t- no, just kidding. I looked at Inspect Element.

It’s heavily modified version of Mastodon 4.2.0-beta1 with federation disabled, that has been modified to subtitute post content, add referrals, as well as payments using a Stripe integration. See the initial-state json below:

<script id="initial-state" type="application/json">{"meta":{"streaming_api_base_url":"https://streaming.yowza.social","access_token":null,"locale":"en","domain":"www.yowza.social","title":"Yowza","admin":null,"search_enabled":false,"repository":"mastodon/mastodon","source_url":"https://github.com/mastodon/mastodon","version":"4.2.0-beta1","limited_federation_mode":true,"mascot":null,"profile_directory":false,"trends_enabled":true,"registrations_open":false,"timeline_preview":true,"activity_api_enabled":false,"single_user_mode":false,"top_referrers":[{"uses":505,"username":"spark","code":"hasty-tiger-beans","id":111466821214661555,"total_checks":1,"badge_class":"yowza-official-badge"},{"uses":448,"username":"Ctctctctcttctct","code":"spent-fruit-jesus","id":111467664822547812,"total_checks":0,"badge_class":null},{"uses":134,"username":"YoMommasMomma","code":"gaunt-fishy-games","id":111466885594825123,"total_checks":0,"badge_class":null},{"uses":85,"username":"cadetkupo12","code":"goopy-mango-paste","id":111468436410192521,"total_checks":0,"badge_class":null},{"uses":84,"username":"Buttfungus","code":"angry-idaho-dudes","id":111467365824667468,"total_checks":0,"badge_class":null},{"uses":84,"username":"Cassandraleighx","code":"nerdy-gloom-lands","id":111467865599667387,"total_checks":1,"badge_class":null},{"uses":70,"username":"Ashmeet12","code":"ohian-floor-stans","id":111466614776194693,"total_checks":0,"badge_class":null},{"uses":63,"username":"Khalico","code":"noooo-truck-chaos","id":111466642074988954,"total_checks":0,"badge_class":null},{"uses":59,"username":"Frogs4Lyfe","code":"daily-biden-ducks","id":111466687043433306,"total_checks":1,"badge_class":null},{"uses":59,"username":"freebiemom","code":"right-fruit-cream","id":111468607385772814,"total_checks":0,"badge_class":null}],"trends_as_landing_page":true,"status_page_url":null,"sso_redirect":null,"referrals_enabled":true,"eyb":true,"eyi":true,"eys":true,"ec":true,"in_mobile_webview":false,"stripe_public_key":"pk_live_vmKr3XBM5qZUPLELPGWFumI1","auto_play_gif":null,"display_media":null,"reduce_motion":null,"use_blurhash":null},"compose":{"text":""},"accounts":{},"media_attachments":{"accept_content_types":[".jpg",".jpeg",".png","image/jpeg","image/png"]},"settings":{},"languages":[["aa","Afar","Afaraf"],["ab","Abkhaz","аҧсуа бызшәа"],["ae","Avestan","avesta"],["af","Afrikaans","Afrikaans"],["ak","Akan","Akan"],["am","Amharic","አማርኛ"],["an","Aragonese","aragonés"],["ar","Arabic","اللغة العربية"],["as","Assamese","অসমীয়া"],["av","Avaric","авар мацӀ"],["ay","Aymara","aymar aru"],["az","Azerbaijani","azərbaycan dili"],["ba","Bashkir","башҡорт теле"],["be","Belarusian","беларуская мова"],["bg","Bulgarian","български език"],["bh","Bihari","भोजपुरी"],["bi","Bislama","Bislama"],["bm","Bambara","bamanankan"],["bn","Bengali","বাংলা"],["bo","Tibetan","བོད་ཡིག"],["br","Breton","brezhoneg"],["bs","Bosnian","bosanski jezik"],["ca","Catalan","Català"],["ce","Chechen","нохчийн мотт"],["ch","Chamorro","Chamoru"],["co","Corsican","corsu"],["cr","Cree","ᓀᐦᐃᔭᐍᐏᐣ"],["cs","Czech","čeština"],["cu","Old Church Slavonic","ѩзыкъ словѣньскъ"],["cv","Chuvash","чӑваш чӗлхи"],["cy","Welsh","Cymraeg"],["da","Danish","dansk"],["de","German","Deutsch"],["dv","Divehi","Dhivehi"],["dz","Dzongkha","རྫོང་ཁ"],["ee","Ewe","Eʋegbe"],["el","Greek","Ελληνικά"],["en","English","English"],["eo","Esperanto","Esperanto"],["es","Spanish","Español"],["et","Estonian","eesti"],["eu","Basque","euskara"],["fa","Persian","فارسی"],["ff","Fula","Fulfulde"],["fi","Finnish","suomi"],["fj","Fijian","Vakaviti"],["fo","Faroese","føroyskt"],["fr","French","Français"],["fy","Western Frisian","Frysk"],["ga","Irish","Gaeilge"],["gd","Scottish Gaelic","Gàidhlig"],["gl","Galician","galego"],["gu","Gujarati","ગુજરાતી"],["gv","Manx","Gaelg"],["ha","Hausa","هَوُسَ"],["he","Hebrew","עברית"],["hi","Hindi","हिन्दी"],["ho","Hiri Motu","Hiri Motu"],["hr","Croatian","Hrvatski"],["ht","Haitian","Kreyòl ayisyen"],["hu","Hungarian","magyar"],["hy","Armenian","Հայերեն"],["hz","Herero","Otjiherero"],["ia","Interlingua","Interlingua"],["id","Indonesian","Bahasa Indonesia"],["ie","Interlingue","Interlingue"],["ig","Igbo","Asụsụ Igbo"],["ii","Nuosu","ꆈꌠ꒿ Nuosuhxop"],["ik","Inupiaq","Iñupiaq"],["io","Ido","Ido"],["is","Icelandic","Íslenska"],["it","Italian","Italiano"],["iu","Inuktitut","ᐃᓄᒃᑎᑐᑦ"],["ja","Japanese","日本語"],["jv","Javanese","basa Jawa"],["ka","Georgian","ქართული"],["kg","Kongo","Kikongo"],["ki","Kikuyu","Gĩkũyũ"],["kj","Kwanyama","Kuanyama"],["kk","Kazakh","қазақ тілі"],["kl","Kalaallisut","kalaallisut"],["km","Khmer","ខេមរភាសា"],["kn","Kannada","ಕನ್ನಡ"],["ko","Korean","한국어"],["kr","Kanuri","Kanuri"],["ks","Kashmiri","कश्मीरी"],["ku","Kurmanji (Kurdish)","Kurmancî"],["kv","Komi","коми кыв"],["kw","Cornish","Kernewek"],["ky","Kyrgyz","Кыргызча"],["la","Latin","latine"],["lb","Luxembourgish","Lëtzebuergesch"],["lg","Ganda","Luganda"],["li","Limburgish","Limburgs"],["ln","Lingala","Lingála"],["lo","Lao","ລາວ"],["lt","Lithuanian","lietuvių kalba"],["lu","Luba-Katanga","Tshiluba"],["lv","Latvian","latviešu valoda"],["mg","Malagasy","fiteny malagasy"],["mh","Marshallese","Kajin M̧ajeļ"],["mi","Māori","te reo Māori"],["mk","Macedonian","македонски јазик"],["ml","Malayalam","മലയാളം"],["mn","Mongolian","Монгол хэл"],["mr","Marathi","मराठी"],["ms","Malay","Bahasa Melayu"],["mt","Maltese","Malti"],["my","Burmese","ဗမာစာ"],["na","Nauru","Ekakairũ Naoero"],["nb","Norwegian Bokmål","Norsk bokmål"],["nd","Northern Ndebele","isiNdebele"],["ne","Nepali","नेपाली"],["ng","Ndonga","Owambo"],["nl","Dutch","Nederlands"],["nn","Norwegian Nynorsk","Norsk Nynorsk"],["no","Norwegian","Norsk"],["nr","Southern Ndebele","isiNdebele"],["nv","Navajo","Diné bizaad"],["ny","Chichewa","chiCheŵa"],["oc","Occitan","occitan"],["oj","Ojibwe","ᐊᓂᔑᓈᐯᒧᐎᓐ"],["om","Oromo","Afaan Oromoo"],["or","Oriya","ଓଡ଼ିଆ"],["os","Ossetian","ирон æвзаг"],["pa","Panjabi","ਪੰਜਾਬੀ"],["pi","Pāli","पाऴि"],["pl","Polish","Polski"],["ps","Pashto","پښتو"],["pt","Portuguese","Português"],["qu","Quechua","Runa Simi"],["rm","Romansh","rumantsch grischun"],["rn","Kirundi","Ikirundi"],["ro","Romanian","Română"],["ru","Russian","Русский"],["rw","Kinyarwanda","Ikinyarwanda"],["sa","Sanskrit","संस्कृतम्"],["sc","Sardinian","sardu"],["sd","Sindhi","सिन्धी"],["se","Northern Sami","Davvisámegiella"],["sg","Sango","yângâ tî sängö"],["si","Sinhala","සිංහල"],["sk","Slovak","slovenčina"],["sl","Slovenian","slovenščina"],["sn","Shona","chiShona"],["so","Somali","Soomaaliga"],["sq","Albanian","Shqip"],["sr","Serbian","српски језик"],["ss","Swati","SiSwati"],["st","Southern Sotho","Sesotho"],["su","Sundanese","Basa Sunda"],["sv","Swedish","Svenska"],["sw","Swahili","Kiswahili"],["ta","Tamil","தமிழ்"],["te","Telugu","తెలుగు"],["tg","Tajik","тоҷикӣ"],["th","Thai","ไทย"],["ti","Tigrinya","ትግርኛ"],["tk","Turkmen","Türkmen"],["tl","Tagalog","Wikang Tagalog"],["tn","Tswana","Setswana"],["to","Tonga","faka Tonga"],["tr","Turkish","Türkçe"],["ts","Tsonga","Xitsonga"],["tt","Tatar","татар теле"],["tw","Twi","Twi"],["ty","Tahitian","Reo Tahiti"],["ug","Uyghur","ئۇيغۇرچە‎"],["uk","Ukrainian","Українська"],["ur","Urdu","اردو"],["uz","Uzbek","Ўзбек"],["ve","Venda","Tshivenḓa"],["vi","Vietnamese","Tiếng Việt"],["vo","Volapük","Volapük"],["wa","Walloon","walon"],["wo","Wolof","Wollof"],["xh","Xhosa","isiXhosa"],["yi","Yiddish","ייִדיש"],["yo","Yoruba","Yorùbá"],["za","Zhuang","Saɯ cueŋƅ"],["zh","Chinese","中文"],["zu","Zulu","isiZulu"],["zh-CN","Chinese (China)","简体中文"],["zh-HK","Chinese (Hong Kong)","繁體中文(香港)"],["zh-TW","Chinese (Taiwan)","繁體中文(臺灣)"],["zh-YUE","Cantonese","廣東話"],["ast","Asturian","Asturianu"],["ckb","Sorani (Kurdish)","سۆرانی"],["cnr","Montenegrin","crnogorski"],["jbo","Lojban","la .lojban."],["kab","Kabyle","Taqbaylit"],["kmr","Kurmanji (Kurdish)","Kurmancî"],["ldn","Láadan","Láadan"],["lfn","Lingua Franca Nova","lingua franca nova"],["sco","Scots","Scots"],["sma","Southern Sami","Åarjelsaemien Gïele"],["smj","Lule Sami","Julevsámegiella"],["szl","Silesian","ślůnsko godka"],["tok","Toki Pona","toki pona"],["zba","Balaibalan","باليبلن"],["zgh","Standard Moroccan Tamazight","ⵜⴰⵎⴰⵣⵉⵖⵜ"]],"push_subscription":null,"role":null}</script>

Case closed, it’s secretly Mastodon!

Mastodon and AGPL

Mastodon is licensed under a software license called the “GNU Affero General Public License” or more commonly “AGPL”. If you’ve ever worked for a company that’s involved in software, you’re almost certainly under a policy banning the use of AGPL code in company projects. AGPL is poison for companies. That is, unless your company doesn’t know better (or just doesn’t care).

See, unlike most other open source licenses which are more permissive, AGPL has some clauses in it that are pretty terrifying to corporate lawyers. While licenses like GPL require source code to users who are provided with binaries of the software (on many devices, you can find an open source acknowledgements menu that includes these), AGPL takes this a leap further. Section 13 of the AGPL expands on that, with the requirement that if you modify the source code and run it on a network server, the modified source must be provided freely and prominently to users of the network server.

If you’d like to read for yourself, the full text of the AGPL 3.0 license is available at https://www.gnu.org/licenses/agpl-3.0.en.html

Back in 2021, the social network “Truth Social” got a slap for violating the AGPL by ripping off Mastodon, which was covered in The Verge (https://www.theverge.com/2021/10/29/22752850/mastodon-trump-truth-social-network-open-source-gab-legal-notice)

I reached out to Cards Against Humanity on the day after Yowza! launched requesting the source code and citing the AGPL license. 13 minutes later, I received an email from a representative at Cards Against Humanity, in which they misspell my name and say it will be resolved soon.

Hey Alex, Thanks for reaching out! I've passed this along to the right folks on our end so hopefully this will be resolved soon. Appreciate it! Yowza forever, REMOVED Sent from Front > On November 25, 2023 at 1:09 PM PST REMOVED@REMOVED.TLD wrote: > > Hello Cards Against Humanity, > > > I was looking at the requests that Yowza makes when in use on my browser, and it has come to my attention that Yowza.social is a modified version of Mastodon. > > > Per the license that Mastodon is distributed under, The GNU Affero General Public License Version 3 (AGPLv3), operators of publicly accessible network servers using AGPL licensed software, are required to release the modified source code to the public. > > > Please publish your code to GitHub or another publicly accessible distribution point to make it available to all users according to section 13 of AGPLv3: > >     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. > > > > Alyx Wijers >

Update

A large portion of this was written back in November at the launch of Yowza! Since then, they have gone ahead and linked it in their FAQ and posted the source to GitHub.

https://github.com/CardsAgainstHumanity/yowza-source