Scribe-Server is a backend service that provides the API by which data is available for download within Scribe apps. The goal is to create a Scribe-Data based regularly updating dataset that can signal new data availability as well as allow for language pack downloads.
Note
The contributing section has information for those interested, with the articles and presentations in featured by also being good resources for learning more about Scribe.
Scribe apps are available on iOS, Android (planned) and Desktop (planned). For the data formatting processes see Scribe-Data.
Check out Scribe's architecture diagrams for an overview of the organization including our applications, services and processes. It depicts the projects that Scribe is developing as well as the relationships between them and the external systems with which they interact.
Contributing ⇧
Scribe uses Matrix for communications. You're more than welcome to join us in our public chat rooms to share ideas, ask questions or just say hi :)
Please see the contribution guidelines if you are interested in contributing to Scribe-Server. Work that is in progress or could be implemented is tracked in the issues and projects.
Note
Just because an issue is assigned on GitHub doesn't mean that the team isn't interested in your contribution! Feel free to write in the issues and we can potentially reassign it to you.
Those interested can further check the -next release-
and -priority-
labels in the issues for those that are most important, as well as those marked good first issue
that are tailored for first time contributors. For those new to coding or our tech stack, we've collected links to helpful documentation pages in the contribution guidelines.
After your first few pull requests organization members would be happy to discuss granting you further rights as a contributor, with a maintainer role then being possible after continued interest in the project. Scribe seeks to be an inclusive and supportive organization. We'd love to have you on the team!
Ways to Help ⇧
- Reporting bugs as they're found 🐞
- Working on new features ✨
- Localization for the app and Google Play 🌐
- Documentation for onboarding and project cohesion 📝
- Adding language data to Scribe-Data via Wikidata! 🗃️
Road Map ⇧
The Scribe road map can be followed in the organization's project board where we list the most important issues along with their priority, status and an indication of which sub projects they're included in (if applicable).
Note
Consider joining our bi-weekly developer syncs!
Data Edits ⇧
Note
Please see the Wikidata and Scribe Guide for an overview of Wikidata and how Scribe uses it.
Scribe does not accept direct edits to the grammar JSON files as they are sourced from Wikidata. Edits can be discussed and the Scribe-Data queries will be changed and ran before an update. If there is a problem with one of the files, then the fix should be made on Wikidata and not on Scribe. Feel free to let us know that edits have been made by opening a data issue or contacting us in the issues for Scribe-Data and we'll be happy to integrate them!
Environment Setup ⇧
Scribe-Server is developed using the Go programming language. Those new to Go or wanting to develop their skills are more than welcome to contribute! The first step on your Go journey would be to read through the Go documentation, with the Effective Go page in particular having great insights into the language's good practices and standards. The general steps to setting up a development environment are:
-
Download and install Go
-
Fork the Scribe-Server repo, clone your fork, and configure the remotes:
Note
Consider using SSH
Alternatively to using HTTPS as in the instructions below, consider SSH to interact with GitHub from the terminal. SSH allows you to connect without a user-pass authentication flow.
To run git commands with SSH, remember then to substitute the HTTPS URL, https://github.com/...
, with the SSH one, [email protected]:...
.
- e.g. Cloning now becomes
git clone [email protected]:<your-username>/Scribe-Server.git
GitHub also has their documentation on how to Generate a new SSH key 🔑
# Clone your fork of the repo into the current directory.
git clone https://github.com/<your-username>/Scribe-Server.git
# Navigate to the newly cloned directory.
cd Scribe-Server
# Assign the original repo to a remote called "upstream".
git remote add upstream https://github.com/scribe-org/Scribe-Server.git
- Now, if you run
git remote -v
you should see two remote repositories named:origin
(forked repository)upstream
(Scribe-Server repository)
-
Navigate to the root directory of the project
-
Create a
config.yaml
file with the configuration needed for the project- Reference the
config-example.yaml
to get started
- Reference the
-
Start a local Scribe-Server:
# Run the following target from the 'Makefile'. make run
- NOTE: This
make
target simply runsgo run .
on the project - Scribe-Server should now be running locally!
- NOTE: This
Note
Feel free to contact the team in the Data room on Matrix if you're having problems getting your environment setup!
Supported Languages ⇧
Scribe's goal is functional, feature-rich keyboards and interfaces for all languages. Check the Scribe-Data extract_transform directory for queries for currently supported languages and those that have substantial data on Wikidata.
The following table shows the supported languages and the amount of data available for each on Wikidata and via Unicode CLDR for emojis:
Languages | Nouns | Verbs | Translations* | Prepositions† | Emoji Keywords |
---|---|---|---|---|---|
French | 18,082 | 6,575 | 67,652 | - | 2,488 |
German | 194,762 | 3,637 | 67,652 | 215 | 2,898 |
Italian | 59,910 | 7,654 | 67,652 | - | 2,457 |
Portuguese | 5,281 | 539 | 67,652 | - | 2,327 |
Russian | 194,567 | 15 | 67,652 | 15 | 3,827 |
Spanish | 62,949 | 7,938 | 67,652 | - | 3,134 |
Swedish | 47,039 | 4,682 | 67,652 | - | 2,913 |
*
Given the current beta
status where words are machine translated.
†
Only for languages for which preposition annotation is needed.
Featured By ⇧
Articles and Presentations on Scribe
2024
- October: Blog post on Medium discussing the Scribe-Data development process, community and features
- October: Blog post on medium describing the main features of Scribe-Data
- September: Final Google Summer of Code report on the creation of the Scribe-Data CLI
- August: Final Google Summer of Code report on the creation of Scribe's cross-language translation functionality
- July: Blog post on Medium about the progress on creating the Scribe-Data CLI
- July: Blog post on Hashnode providing an midterm report on the localization and translation expansion for Scribe-iOS
- July: Blog post on Hashnode about the initial steps towards the localization of Scribe-iOS
- June: Blog post on Medium about the planned Scribe-Data CLI
- April: Blog post on Medium about Scribe-Data and its functionalities
- February: Presentation slides for Scribe's participation at the Wikimedia Tech Safari Program
2023
- August: Scribe-iOS final submission report for Google Summer of Code 2023
- June: Scribe-iOS development blog post on Nested UITableViews & Apple's built-in ViewControllers in app menu for GSoC '23
- March: Presentation slides for a talk at Berlin Hack and Tell (Hack of the month winner 🏆)
2022
- August: Presentation slides for a session at the 2022 Wikimania Hackathon
- July: Presentation slides for a talk at CocoaHeads Berlin
- July: Video on Scribe for Wikimedia Celtic Knot 2022
- June: Presentation slides for a talk with the LD4 Wikidata Affinity Group
- June: Scribe featured for new developers on MediaWiki
- May: Presentation slides for Wikimedia Hackathon 2022
- March: Blog post on Scribe-iOS for Wikimedia Tech News (DE / Tweet)
- March: Presentation slides for Wikidata Data Reuse Days 2022
Powered By ⇧
Many thanks to all the Scribe-Server contributors! 🚀