The official Wikipedia iOS app.
- License: MIT License
- Source repo: https://github.com/wikimedia/wikipedia-ios
- Planning (bugs & features): https://phabricator.wikimedia.org/project/view/782/
- Team page: https://www.mediawiki.org/wiki/Wikimedia_Apps/Team/iOS
Note: The latest main branch is set up to build with Xcode 12.
In the directory, run ./scripts/setup
. Note: going to scripts
directory and running setup
will not work due to relative paths.
Running scripts/setup
will setup your computer to build and run the app. The script assumes you have Xcode installed already. It will install homebrew and ClangFormat. It will also create a pre-commit hook that uses ClangFormat for linting.
After running scripts/setup
, you should be able to open Wikipedia.xcodeproj
and run the app on the iOS Simulator (using the Wikipedia scheme and target). If you encounter any issues, please don't hesitate to let us know via a bug report or messaging us on IRC in #wikimedia-mobile on Freenode.
If you'd rather install the development prerequisites yourself without our script:
- Xcode - The easiest way to get Xcode is from the App Store, but you can also download it from developer.apple.com if you have an AppleID registered with an Apple Developer account.
- ClangFormat - We use this for linting
Covered in the contributing document.
These are general guidelines rather than hard rules.
We use Xcode's default 4 space indentation and our .clang-format
file with the pre-commit hook setup by scripts/setup
. Currently, this does not enforce Swift formatting.
Covered in the process document.
When reading logs, note that the log levels are shortened to emoji.
- 🗣️ Verbose
- 💬 Debug
- ℹ️ Info
⚠️ Warning- 🚨 Error
The Wikipedia scheme is configured to execute the project's iOS unit tests, which can be run using the Cmd+U
hotkey or the Product->Test menu bar action. Screenshot tests will fail unless you are running on one of the configurations defined by configurations_to_test_on_pull
in fastlane/Fastfile
. In order for the tests to pass, the test device's language and region must be set to en-US
in Settings > General > Language & Region. There is a ticket filed to update the tests to pass regardless of region and language.
Points to production servers.
Points to the Apps team's staging environment for page content and production for everything else. Has additional debugging menus and is pushed to TestFlight as a separate app bundle.
Points to the mobileapps and wikifeeds repos running locally.
Points to the MediaWiki beta cluster for MediaWiki API calls and production for everything else.
Launches the app in an RTL locale using the -AppleLocale argument.
For one off builds, can point to whatever is needed for the given experiment.
For user testing. Has an alternate configuration so that it can be delivered ad hoc.
For testing the events that the app sends to Event Logging. Points to the Event Logging staging environment.
Tests that run against the MediaWiki beta cluster, checking for upstream changes to MediaWiki that might break any assumptions we have.
Runs automated screenshot tests.
Bundles up the app logic shared between the main app and the extensions (widgets, notifications).
Covered in the localization document.
Covered in the languages document.
Extensions for widgets, notifications, and stickers.
Generates the CodeMirror configuration files. CodeMirror is used in the section editor.
Covered in the ci document.
Covered in the event logging document.
The article view and several other components of the app rely on web components. Instructions for working on these components is covered in the web development document.
If you have any questions or comments, you can email us at mobile-ios-wikipedia[at]wikimedia dot org. We'll also gladly accept any bug reports.