5. BUT, BUT. . .WHY?
▪ Small Team (4 people)
▪ Many platforms (6 platforms)
▪ Smaller QE (2 people shared with other
teams)
▪ Need to share as much source as possible
6. SO WHAT WERE WE DOING BEFORE?
▪ Everything above the data file level was per
platform
▪ Raw sqlite3 calls from each platform
▪ If one platform changed, there is a good
chance others would not notice
7. HOW IS THIS DIFFERENT?
▪ Everything is hidden behind an abstract
interface of operations
▪ Work is broken into logical units (open, close,
query, etc)
▪ Per platform logic very light (currently
Objective-C ~3000 LOC)
8. WHAT ABOUT ANDROID?
▪ Seven total distinct architectures
▪ Need to compile native elements for each
one the product supports
▪ What exactly is the NDK?
9. BUT WAIT, ISN’T MAINTAINING ALL THIS NATIVE CODE
HARD?
▪ Sort of, but CMake is here to help!
▪ CMake has tooling for every platform and
architecture we deploy to
▪ Let’s see an example build (OS X x64 and
Android x86 armv7 arm64)
11. BUT WE ONLY HAVE 2 QE ENGINEERS
▪ Things need to be automated as much as
possible
▪ Push to core triggers a native build and test
run
▪ A successful native build triggers a bindings
build and test run
▪ A successful bindings build triggers a
Couchbase Lite build and test run (TODO)
12. I’LL TAKE YOU ON THE TOUR
▪ Take a look at our internal Jenkins
▪ 8 powerful machines split into dozens of VMs
with dedicated RAM / CPU
▪ Coordinating different machines for different
purposes
14. CREDITS
Special thanks to all the people who made and released these awesome
resources for free:
▪ Presentation template by SlidesCarnival
▪ Photographs by Unsplash