Skip to content
develop
Switch branches/tags
Go to file
Code

SimplyE 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 under 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 before v3.6.2, are SimplyE releases.

System Requirements

  • 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 brew is recommended.

Building without Adobe DRM nor Private Repos

git clone git@github.com: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

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

Building With Adobe DRM

Building the Application from Scratch

  1. Contact project lead and ensure you have access to all the required private repos.
  2. Then simply run:
git clone git@github.com: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 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

The 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 scripts directory.

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

Finally, open 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 SimplifiedCardCreator workspace. It requires DRM.
  • Open eBooks: This is an app primarily targeted toward the education space. It requires DRM.

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.

Questions, suggestions, and general discussion occurs via Slack: Email swans062@umn.edu for access.

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 device builds are uploaded to iOS-binaries. Commits on release branches also send the same build to TestFlight.

License

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

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.