Wikiotics is a website for learning a foreign language.
The Wikiotics project was founded in 2008 with the goal of creating a freely licensed wiki where people could collaborate on materials for language learners. As part of this, we built a wiki engine called Ductus, which provided a framework for building interactive wiki pages from structured content, editable from the web browser. In 2011, Wikiotics joined forces with the WikiBabel project, a project with a similar vision and whose developer went on to contribute signficantly to Wikiotics. A few years later, we lost interest in maintaining Ductus and became occupied with other activities.
As of July 2020, Wikiotics has been transitioned to a static site. While it was a wiki, wikiotics.org received contributions from 62 logged-in users, as well as anonymous users identified only by their ip address. There were a total of 4064 such contributions, each of which has a corresponding commit in this repository (pull request #4). This repository is designed to serve as a working archive of the community's work. Development of new content is also possible, given sufficient interest.
The content is a bit of a mess, as might be expected from a repository that was editable by anyone in the world, without moderation. On top of that, the only real way to see a working draft of a lesson was to save it to the wiki.
The first step forward is to clean up the content. Lessons and pages that are not useful should be deleted. (They will remain in git history if we ever want to reference them.) Any lesson in progress that is not yet useful can be marked with draft = true
and thus hidden from the main website build. When multiple copies of the same content are consolidated, an alias should be left at any old location(s), as we have long followed the principle that cool URIs don't change.
Anyone who contributed to the wiki and has an account on GitHub can claim their contributions by submitting a pull request that adds an appropriate entry to the .mailmap
file in this repository. This entry should map [email protected]
to an email address associated with the person's GitHub account (or, alternatively, the address [email protected]
).
Claiming contributions in this way will mean that the user's profile is linked in the GitHub history of any page the person contributed to (example here). Unfortunately, at the moment, it seems that the contributions graph does not consider the .mailmap
file. This is inconsistent with a report on Stack Overflow but is likely related to this discussion on GitHub's Discourse instance. Interestingly, the FastHub-Libre app displays the contributions graph correctly, in its entirety.
Wikiotics is now a static site built with Hugo. The following steps allow one to edit it locally:
-
On Ubuntu, this is as simple as
$ sudo snap install hugo --channel=extended
Right now, the "extended" version is not necessary, but we may experiment with its features in the future.
-
Clone this repository:
$ git clone https://github.com/wikiotics/wikiotics.org.git
-
Start the Hugo development server and point a web browser to the provided URL:
$ cd wikiotics.org $ hugo server [...] Web Server is available at http://localhost:1313/ (bind address 127.0.0.1) Press Ctrl+C to stop
The content is in the content/
directory. Upon saving any content file, the web browser should refresh automatically with the updated content.
Each lesson is represented entirely by TOML front matter, which is contained between lines which say +++
. When editing a lesson, one tip is to temporarily set grid = true
in its front matter, which will display the lesson's elements as a spreadsheet. This can be useful to obtain a global view of the lesson. Lessons for which draft = true
will also be displayed as a grid (that is, if drafts are enabled).
Each lesson can be annotated with the language it teaches and, if applicable, the language it assumes the learner knows by setting target-languages
and/or source-languages
in the lesson's front matter, following the standard definitions of these terms. Behind the scenes, these annotations are instances of Hugo taxonomies.
The wiki naming scheme (for URLs/routes) is under discussion in #12. We also plan to document (#9) and improve (#10) the TOML data structures for lessons.
The highest priority at the moment is improving presentation of the site archive.
Adding new lesson media would currently involve coordinating changes with with the wikiotics media repository. There are two alternatives under consideration: git large file storage and ipfs (details in #15).
All content (i.e., everything in the content/
directory, recursively) is licensed under the Creative Commons Attribution-ShareAlike 3.0 license. Some of the lesson media (referenced but not included in this repository) is available under a different (but free) Creative Commons license. Everything else (e.g., all code) is available under the GNU General Public License version 3 or any later version. Some of the libraries in {assets,static}/ductus/
are available under more permissive licenses.
We like to keep things simple, following years of having a rather complicated technology stack. (Even before, we managed to avoid many of the excesses of modern frontend development.) Keeping things simple helps to maximize the bus factor and minimize time spent maintaining the site. There should be no or few moving parts, and ideally no server to maintain.
We build upon the following pieces of technology to help meet our goals:
- Hugo static site generator. It is known for allowing the creator to get quick visual feedback while building content. It moves relatively slowly, and is in an ecosystem that moves especially slowly. Every page at wikiotics.org is built by Hugo. Each lesson is a Markdown file which consists only of the lesson data structure as TOML front matter.
- Tachyons CSS framework helps to keep the development process simple.
- jQuery 1.x is about as stable as it gets.