SimplyE and Open eBooks
The 2 apps share most of the code base. App-specific source files will have a
OE prefix or suffix, while configuration files reside under the
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 before v3.6.2, are SimplyE releases.
- Install Xcode 11.5 in
/Applications, open it and make sure to install additional components if it asks you. (We have not upgraded to Xcode 12 yet because of issues related to Carthage.)
- Install Carthage if you haven't already. Using
Building without Adobe DRM nor Private Repos
git clone firstname.lastname@example.org: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-3rd-party-dependencies.sh --no-private
Simplified.xcodeproj and build the
Building With Adobe DRM
Building the Application from Scratch
- Contact project lead and ensure you have access to all the required private repos.
- Then simply run:
git clone email@example.com:NYPL-Simplified/Simplified-iOS.git cd Simplified-iOS ./scripts/bootstrap-drm.sh
- Open Simplified.xcodeproj and build the
Building Dependencies Individually
Unless the DRM dependencies change (which is very seldom) you shouldn't need to run the
bootstrap-drm.sh script more than once.
Other 3rd party dependencies are managed via Carthage and a few git submodules. To rebuild them you can use the following idempotent script:
cd Simplified-iOS #repo root ./scripts/build-3rd-party-dependencies.sh
scripts directory contains a number of other scripts to build dependencies more granularly and also to build/archive/test 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
Building for Readium 2 Integration
Before working on R2 integration, make sure you can build the app without R2. Follow the steps listed above for building the app with DRM.
For working on integrating R2 into SimplyE, first clone the following frameworks as siblings of
Simplified-iOS on the file system:
cd Simplified-iOS/.. git clone https://github.com/readium/r2-shared-swift git clone https://github.com/readium/r2-streamer-swift git clone https://github.com/NYPL-Simplified/r2-navigator-swift git clone https://github.com/readium/r2-lcp-swift
Then rebuild the dependencies:
cd Simplified-iOS ./scripts/build-carthage-R2-integration.sh
SimplifiedR2.workspace and use the
SimplyE-R2dev target to build the app.
Building Secondary Targets
The Xcode project contains 2 additional targets beside the ones referenced earlier:
- SimplyECardCreator: This is a convenience target to use when making changes to the CardCreator-iOS framework. It takes the framework out of the normal Carthage build to instead build it directly via Xcode. Use this in conjunction with the
SimplifiedCardCreatorworkspace. It requires DRM.
- Open eBooks: This is an app primarily targeted toward the education space. It requires DRM.
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.
Questions, suggestions, and general discussion occurs via Slack: Email
firstname.lastname@example.org for access.
Branching and CI
develop is the main development branch.
Release branch names follow the convention:
release/openebooks/<version>. For example,
Feature branch names (for features whose development is a month or more):
Continuous integration is enabled on push events on
develop, release and feature branches. SimplyE device builds are uploaded to iOS-binaries. Commits on release branches also send the same build to TestFlight.
Copyright © 2015-2021 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
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.