# Decentralized wikis

This is a learning project about decentralized wikis. The project focuses on decentralizing wikis so that that there is distributed data in ways that is censorship resistant and persistent. Distributed and decentralized wikis have potentially many advantages to centralized wikis. Hopefully this project can help individuals understand decentralized systems better, understand blockchain better, understand wikis better, and potentially create systems that are more inclusive for all potential wiki volunteer editors and creators of Creative Common content related to learning, teaching, education, and research.
With wikis that have content under CC-BY-SA licenses, distributed/decentralized wikis can effectively back-up all content and effectively mirror content.

## Discussion questions and essay ideas

* How might decentralizing wikis help to reduce the possibility of censorship?
* What countries engage in the most censorship and how can distributed wiki technology potentially help ensure all humans on Earth have access to truthful and factual information?
* What are the pros and cons of decentralizing wikis and information sharing?
* What are potential problems with centralizing how information is stored and distributed/shared?
* How can blockchain help to enable decentralized wiki technologies?
** What other technologies can be utilized for decentralized wikis?
* How could a decentralized wikis and distributed wikis be designed and implemented from a technological perspective?
* How could the Fediverse and federation help enable distributed wikis?
** Could decentralized wikis be implemented through a federated wiki architecture? If yes, how might this be designed?
* How could ActivityPub protocol be utilized to build a sort of recent changes page for decentralized wikis?
* How might IPFS technology enable distributed wikis.
* How could existing federated software be modified to enable decentralized wikis

## Notes on technical implementation
### Through WordPress and Node.js architecture

This is some notes about how decentralized wikis could be implemented with WordPress and additional technical architecture. WordPress is highly customizable and could potentially be made to be compatible with MediaWiki.
* WordPress could be adapted to render MediaWiki syntax. This could help WordPress sites be compatible with MediaWiki effectively.
** MediaWiki can be cumbersome to update and maintain. WordPress arguably has a much simpler upgrade process and install process than MediaWiki. This may help enable decentralized wikis to be utilized by a less technical user group.
*** Through WordPress plugins and PHP code blocks, one can ensure that proper labeling of Creative Commons content is maintained on all public facing pages.
*** Separate pages (possibly through a custom taxonomy) can be utilized to track and maintain a "View history" for each page of the distributed wiki.
** WordPress plugins could be developed to communicate with the Arweave blockchain or Bitcoin Cash blockchain (using Memo or Member technology to store data).
*** Federation (and the ActivityPub protocol) could also be utilized to federate wikis, in addition to or instead of blockchain technology (i.e. Arweave or Member technology)
**** Member (Bitcoin Cash related) technology is a method of stringing together op_return memos to store paragraphs or source code (including MediaWiki markup).
** Parsoid or MediaWiki API's could be utilized to convert MediaWiki syntax data into HTML that WordPress can render.
** https://www.mediawiki.org/wiki/API%3AParsing_wikitext
** https://www.mediawiki.org/wiki/API:Main_page
** https://www.mediawiki.org/wiki/Parsoid
* "TK" (more ideas "to come")

### Through modifying existing Federated software

* Lemmy which is sort of like a decentralized Reddit, enables distributed (Federated) Lemmy instances.
** https://github.com/LemmyNet/lemmy
* This software could be modified to do the following.
** Display (render) MediaWiki syntax.
** Keep a list of edits (history) to wiki pages
** Display the appropriate CC-BY-SA license on all content and ensure posters agree to release their contributions under the CC-BY-SA license.
** Allow individuals to fork pages, while retaining an edit history
** Through the ActivityPub protocol display a list of all recent changes
** Filtering could be implemented so each individual accessing the decentralized wiki could choose which sort of content they want to see and not want to see
*** Users could choose to only see pages that do not have certain biases (this would go beyond basic decentralized wiki functionality)
** Such software could also interface with IPFS or Arweave to not only have decentralized Federated wikis, but also ensure such content is persistent, censorship resistant, and widely accessible and forkable.

### Opensource Markdown readers and decentralized wiki integration

Here are some additional notes on potential technical implementation. These involve the idea of sharing content to CC-BY-SA decentralized wikis from open source markdown readers and personal knowledge repositories.
Markdown is a relatively popular syntax for managing personal knowledge repositories. There are widely used closed source markdown readers, like Obsidian. There are also open source markdown readers.
There could be features to enable individuals to easily convert between markdown syntax, HTML and MediaWiki syntax.
MediaWiki syntax is of course compatible with the many WikiMedia projects. For distributed wikis to be implemented by those who do not want to administer or for MediaWiki itself, then markdown might be ideal for those who wish to store information offline for later personal reference, or who wish to push personal knowledge (stored in markdown) to decentralized wikis (that may use HTML or MediaWiki syntax.
** It is possible that making it frictionless and easy to switch the syntax that information is conveyed in may allow for decentralized wikis in a more efficient and effective way.
*** Marked source code https://github.com/markedjs/marked
*** Marked on NPM https://www.npmjs.com/package/marked
* Markdown repositories could have a plugin or feature to share information via decentralized wikis and to share content under CC-BY-SA
* Personal knowledge repositories (that are open source and use markdown) include
** Logseq https://github.com/logseq/logseq
** Joplin https://github.com/laurent22/joplin
** Trillium notes https://github.com/zadam/trilium
** HedgeDoc https://github.com/hedgedoc/hedgedoc
** Foam https://github.com/foambubble/foam
** https://github.com/Requarks/wiki

## Related learning resources

* Distributed Virtual Supercomputer
* Blockchain
* Decentralized autonomous organizations
* Decentralizing Wikipedia and its sister projects

## Related readings
### Wikipedia

* Arweave
* Decentralised system
* Peer-to-peer
* List of blockchains
* Decentralized application
* Distributed ledger
* Cryptoeconomics
* Eventual consistency
* Fediverse
* ActivityPub
* List of P2P protocols
* Semantic P2P networks
* Decentralization
* Decentralized web
* Decentralized application
* Peer-to-peer computing (Category)
* Bootstrapping node
* InterPlanetary File System
* Distributed learning
* List of wiki software
* History of wikis
* MediaWiki
* Distributed version control
* Distributed database
* Distributed development
* Distributed computing
* Distributed SQL
* Wiki.js
* Federated Wiki
* Federated database system

## External learning links

* ForgeFed - is a federation protocol for software forges
* WikiChain: A Blockchain-Based Decentralized Wiki Framework