Git Product home page Git Product logo

simplified-ios's Introduction

SimplyE and Open eBooks Build License

SimplyE and Open eBooks

This repo contains the client-side code for the New York Public Library's SimplyE and Open eBooks apps.

The 2 apps share most of the code base. App-specific source files will have a SE / OE prefix or suffix, while configuration files reside in the SimplyE and OpenEbooks directories at the root of the repo.

Consequently, releases in this repo track both apps. However, you won't see any Open eBooks versions before 1.9.0 because historically Open eBooks lived in a separate repo. Releases that lack an app specifier, i.e. any version such as v3.6.1 and earlier, are SimplyE releases.

System Requirements

  • Install Xcode 14.3.1 in /Applications, open it and make sure to install additional components if it asks you.
  • Install Carthage 0.38 or newer if you haven't already. Using brew is recommended.

Building without DRM support

git clone [email protected]:NYPL-Simplified/Simplified-iOS.git
cd Simplified-iOS
git checkout develop

# one-time set-up
./scripts/setup-repo-nodrm.sh

# idempotent script to rebuild all dependencies
./scripts/build-dependencies.sh --no-private

Open Simplified.xcodeproj and build the SimplyE-noDRM target.

Building with DRM Support

Building from Scratch

  1. Contact project lead and ensure you have access to all the required private repos.
  2. Set up the repo and build the dependencies (you'll need to do this only once):
git clone [email protected]:NYPL-Simplified/Simplified-iOS.git
cd Simplified-iOS
./scripts/bootstrap-drm.sh
  1. Open Simplified.xcodeproj and build the SimplyE or Open eBooks targets.

Building Dependencies Individually

Unless the DRM dependencies change (which is very seldom) you will not need to run the bootstrap-drm.sh script more than once. Regarding the other dependencies, there are leaner / faster ways to rebuild them.

First party dependencies are managed via Swift Package Manager. Most of these dependencies are managed via local Swift packages (with the exception of iOS-Utilities, which is remote), given by the git submodules checkouts. PureLayout is also managed via SPM. They are built automatically when you build the Simplified Xcode project targets.

All other 3rd party dependencies are managed via Carthage. To rebuild them you can use the following idempotent script:

cd Simplified-iOS #repo root
./scripts/build-dependencies.sh

The scripts directory contains a number of other scripts to build dependencies more granularly and also to build/test/archive the app from the command line. These scripts are the same used by our CI system. All these scripts must be run from the root of the Simplified-iOS repo, not from the scripts directory.

Building Open eBooks

Open eBooks is an app primarily targeted toward the education space. It requires DRM. Follow the same steps as indicated above and use the "Open eBooks" Xcode target.

NOTE: the Open eBooks target needs to be upgraded to match SimplyE's.

Contributing

This codebase follows Google's Swift and Objective-C style guides, including the use of two-space indentation. More details are available in our wiki.

Most of the code follows Apple's usual pattern of passive views, relatively passive models, and one-off controllers for integrating everything. Immutability is preferred wherever possible.

Currently we are not accepting contributions but will update this document when we are.

Branching and CI

develop is the main development branch.

Release branch names follow the convention: release/simplye/<version> or release/openebooks/<version>. For example, release/simplye/3.7.0.

Feature branch names (for features whose development is a month or more): feature/<feature-name>, e.g. feature/my-new-screen.

Continuous integration is enabled on push events on develop, release and feature branches. SimplyE and Open eBooks device builds are uploaded to Firebase and, for release builds, also to TestFlight.

License

Copyright © 2015-2023 The New York Public Library, Astor, Lenox, and Tilden Foundations

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

simplified-ios's People

Contributors

winniequinn avatar ettore avatar gioneill avatar vladimirfedorov avatar benanderman avatar raduzb avatar vuinguyen avatar mickael-menu-mantano avatar djds23 avatar neckk avatar explorernautilus avatar aferditamuriqi avatar singhraman4282 avatar mickael-menu avatar edwinguzman avatar jkim-git avatar ernestfan avatar jce1028 avatar swandog30 avatar backstroke-bot avatar elindsey avatar leonardr avatar malcolmmcfly avatar io7m avatar dependabot[bot] avatar killerpuppytails avatar

Stargazers

 avatar Ches Martin avatar Gelo avatar  avatar  avatar Bob Edmonston avatar Muhammad Umer avatar Ellie K. avatar Bobby Adamson avatar Kerry Knight avatar Matt Shu avatar Richard Guinn avatar Jernej Zorec avatar  avatar  avatar Matt Curtis avatar Евгений (Yevhen) avatar CodeS1ave avatar  avatar  avatar  avatar  avatar Aaron Piotrowski avatar Louis T. avatar Juliana Cook avatar  avatar OIiver Mayor avatar

Watchers

Patrick Keating avatar  avatar  avatar Brandon Haugen avatar James Cloos avatar Tim DiLauro avatar Greg Kallenberg avatar Keith Bauer avatar Brett Richter avatar Amy Slagle avatar Crystal Ngai avatar  avatar Richard Guinn avatar Jiayong avatar  avatar  avatar  avatar  avatar Miguel Rayos-Velazquez 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.