Giter VIP home page Giter VIP logo

apps-ios-wikipedia's Introduction

Wikipedia-iOS

Native rewrite of the Wikipedia reader application for iOS.

Dependencies

This project uses CocoaPods to manage Objective-C dependencies and npm to manage web dependencies. Please see the Podfile and www/package.json for a comprehensive list. The web dependencies (in the www folder) are managed with . Please see for a list of dependencies.

Setup

Prerequisites

Please make sure the following are installed on your system before trying to build the project:

  • Xcode 6 or higher on Mac OS X, available on the App Store or developer.apple.com after signing in with your Apple ID.
  • Xcode Command Line Tools: On newer OS X versions, you can run xcode-select --install to install them. If that doesn't work, you can find instructions online for downloading the them via Xcode or the Apple developer portal.
  • Ruby: comes bundled with OS X (this project only requires the system version).

rbenv is nice for managing mulitple Ruby versions.

  • CocoaPods: Ruby gem for Objective-C dependency management.

Bundler is recommended for installing Ruby gems without sudo.

  • NodeJS: The web portion of the app is built using npm to install node packages and grunt to manage tasks.

nodenv is recommended for managing multiple node versions.

Building

Once all the dependencies are installed, you'll have to do a couple of things before firing up Xcode and running the app:

  • Setup CocoaPods
    • Install the cocoapods gem
    • Setup the CocoaPods specs repo by running pod setup (prepend bundle exec as needed)
    • Install our CocoaPods dependencies by going to the repository's root directory and running pod install (not pod update)
  • Setup web components (if you're feeling lucky: cd www && npm install && grunt)
    • Go into the www directory
    • Run npm install to install our node dependencies
    • Run grunt to generate our web assets
  • Open Wikipedia.xcworkspace in Xcode. Note the use of .xcworkspace extension—not .xcodeproj
  • Build the project!
  • Profit! (Just kidding, we're non-profit)

If the build failed, we're really sorry! We'll be more than happy to help you if you file a bug and/or bug us via IRC or email. See the top of this file for our contact information. Please include any console logs and/or Xcode screenshots along with a description of your environment.

Running

Simply run the Wikipedia target for the destination of your choosing (i.e. simulator or device). Keep in mind that you'll need to provision any physical devices with an active developer account in order to build and run the app on them.

Testing

The unit testing target is configured to build & test under the Wikipedia scheme. Use the Xcode Product -> Test menu-bar action (Cmd + U for hotkey fanatics) to run them. New unit tests (and their application-code dependencies) should be added to the WikipediaUnitTests target.

Filing Bugs

Please file bugs at bugzilla.wikimedia.org; use the "iOS App" component.

Submitting patches

See mediawiki.org's Gerrit page for general information about contributing to Wikimedia project source code hosted in Gerrit -- use the project name "apps/ios/wikipedia" in place of "mediawiki/core" etc.

You can also follow or fork from our GitHub mirror. Note that pull requests submitted through GitHub must be manually copied over to Gerrit for review and merge (though there is a bot we plan to enable to simplify this).

Please include unit tests with any new code where possible.

Architecture

This generation of the Wikipedia reader app is built around native UI chrome (menus, toolbars, search UI, preferences, caching, etc) to improve startup time, responsiveness and "nativey" look-n-feel versus a previous HTML-based approach using PhoneGap/Apache Cordova.

The majority of app logic and UI will be in the native layer; we expect to use the WebView component as a relatively dumb content display & event trigger layer.

Components of the app will be relatively self-contained, communicating via NSNotificationCenter as a messaging bus to avoid over-close coupling of parts and to make test-driven development more feasible.

Development team

The app is primarily being developed by the Wikimedia Foundation's Mobile Apps team, starting at the end of October 2013. The team operates on an "agile"-style process with 2-week sprints, and checkin scrums on Monday/Wednesday/Friday at 10:15am US Pacific Time.

In addition to a general bug pool in Bugzilla, we'll be tracking ongoing work on the backlog board and active sprint boards on Trello.

Volunteer contributions are welcome!

We can be reached during California office hours (and sometimes outside them) in IRC: #wikimedia-mobile on irc.freenode.net.

apps-ios-wikipedia's People

Contributors

berndsi avatar bgerstle avatar bvibber avatar deskana avatar dr0ptp4kt avatar gabicoware avatar hashar avatar legoktm avatar lokal-profil avatar montehurd avatar seshness avatar somechris avatar translatewiki avatar yuvipanda avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.