`(12) Patent Application Publication (10) Pub. No.: US 2009/0037337 A1
`(43) Pub. Date:
`Feb. 5, 2009
`Baitalmal et al.
`
`US 20090037337Al
`
`(54) SOFTWARE LICENSING AND
`ENFORCEMENT SYSTEM
`
`(76) Inventors:
`
`Ahmad Baitalmal, Renton, WA
`(US); Daniel J. Kolke, North Bend,
`WA (US); Jon K. Collette,
`Normandy Park, WA (U S); Casey
`Tompkins, Woodinville, WA (US)
`
`Correspondence Address:
`MORGAN, LEWIS & BOCKIUS, LLP.
`2 PALO ALTO SQUARE, 3000 EL CAMINO
`REAL
`PALO ALTO, CA 94306 (US)
`
`(21) Appl. No.:
`
`12/182,800
`
`(22) Filed:
`
`Jul. 30, 2008
`
`200
`
`|— cTent 2T0-BF0FW0Q
`|
`[BEVEEI I I I I 2__1_2__|
`
`_ _ _ _ _ _ _ _ 2_20_|
`
`(63)
`
`(60)
`
`(51)
`
`Related US. Application Data
`Continuation-in-part of application No. 12/102,854,
`?led on Apr. 14, 2008.
`Provisional application No. 60/962,877, ?led on Jul.
`31, 2007.
`Publication Classi?cation
`
`Int. Cl.
`(2006.01)
`G06Q 99/00
`US. Cl. ........................................................ .. 705/59
`
`ABSTRACT
`
`(52)
`(57)
`In an embodiment, a computer implemented method is
`described. The method is performed at one or more servers,
`hosting a marketplace application. A software application is
`received from a vendor for distribution. License terms are
`generated in response to a selection by the vendor from
`options provided by the marketplace application. The license
`terms are associated With the software application. The soft
`Ware application is made available for distribution through
`the marketplace application, in accordance With the license
`terms.
`
`_‘
`
`Client 210-A (networked mode)
`
`I
`
`I
`
`LEE/Eer- _ _ _ _l7|
`|T'C_P/E’EoTnn:s_ —i_|
`
`LLicense Authen.
`
`I
`
`Network Q
`
`Application Server
`E
`
`|
`LDAP
`Gateway 1*” 242
`
`l
`
`Auxiliary
`Services 1
`E
`
`V
`Web Server
`Engine
`
`7
`
`m /
`
`User
`Database
`E
`
`k
`
`E-Commerce Services
`Process payment &
`Authenticate license @I
`Serve Application
`
`26
`
`Synchronization, Access & Query
`Engine 260
`Conflict Management
`Record Increment
`
`I
`
`Applications Database
`E
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 1
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 1 of 178
`
`US 2009/0037337 A1
`
`Network 100
`
`\‘
`
`Client 1 10-5
`
`.
`
`M (1128) M
`
`User B
`
`.
`
`User A
`(112-A)
`
`Client
`Application
`1 14-A
`
`I
`Chem
`Application
`114-B
`
`.
`
`User N
`(112-N)
`
`Client
`Application
`1 14-N
`
`Network 120
`
`Application
`Server
`130-A
`
`Application
`Server
`130-B
`
`0
`
`Application
`Server
`130-N
`
`Figure 1
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 2
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 2 of 178
`
`US 2009/0037337 A1
`
`I
`
`|_CQpLP@t,_Data Se_c. 26l
`
`A
`
`v
`
`Network m
`
`Application Server
`m
`
`w
`|
`LDAP
`Gateway 1—" 242
`
`|
`l
`
`Auxiliary
`Services A
`E
`
`7
`
`v
`Web Server
`Engine
`E
`
`User
`Database
`m
`
`E-Commerce Services
`| Process payment a |
`|Authenticate license a |
`Serve Application
`286
`
`Synchronization, Access & Query
`Enqine 2%
`Conflict Management
`Record Increment
`
`k
`
`v
`
`Applications Database
`&
`
`Figure 2
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 3
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 3 of 178
`
`US 2009/0037337 A1
`
`Application
`Database“
`300
`
`/
`/
`/
`/
`//
`
`Application 1 @
`Record 1 E \
`\
`\
`
`0
`0
`Record N j
`
`C
`O
`I
`
`App Name Q
`
`App Title u
`
`App Host i
`
`App User 3 6
`
`App Pass a
`
`Application 2 E __
`Record 1 i Record Metadata
`o
`l
`@
`°
`\
`'
`\
`Record N i \
`\
`o
`\
`:
`Application M E \
`Record 1 i \
`.
`\
`2
`\\ Record content N
`Record N i
`w
`
`Record Log E
`
`Record content 1
`354-1
`
`.
`:
`
`____ __——1
`
`I
`
`PEER-M- - - “370W
`MEdTaWiF__@_I
`ph_p?s3____?_|
`Pr_0l§ts____E_
`
`Figure 3
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 4
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 4 of 178
`
`US 2009/0037337 A1
`
`User
`Database“
`400
`
`User Record
`402-1
`
`User Record
`402-2
`
`
`
`
`
`User Record 402-N I, 470
`
`Map 5
`
`472
`
`‘
`User ID”>
`
`Rules for
`contacts/queries;
`Stored locally or
`in separate
`database
`
`User-Rule 1
`
`Sales Opps
`Filter DB info
`Rules
`Tasks
`Appointments
`
`User-Rule 2
`460-2
`
`I
`O
`O
`
`\
`
`l User Rule N
`460-N
`
`User-Mgmt
`462-1
`
`User Admin
`rights
`
`User access
`privileges
`
`User Record 402
`
`)
`/
`
`User ID
`
`41 lo
`
`User Metadata m
`
`Query/Contact List
`M
`
`User Client Device
`lD/Type m
`User Preferences
`M
`User Authentication
`information @
`User Personal
`22
`Information
`Name Q
`Phone 2
`Email H
`Office @
`Department M
`User Enabled
`Features i
`APP 1 m
`APP N i
`EDE
`A
`Devkit g
`Schedule events
`
`User Mgmt @
`
`
`AOP i Distribute H
`Integrate @
`
`Figure 4
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 5
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 5 of 178
`
`US 2009/0037337 A1
`
`Sync Engine
`500 ‘N
`
`Server Side
`
`Sync Data
`
`E Sync Operations l
`
`@
`Files
`1
`A
`Q
`pp
`App Table w
`App co|umn &
`Primary Key m
`
`Conflict Management
`@
`Record Increment
`2 L0
`
`Synch Rules M
`Developer Rules 2
`Default Rules A
`
`Create Acc w
`
`Create DBs w
`I
`Create Acc Dr E
`Install EAS w
`Setup Scheduler
`E
`Connect to EMS
`Ghent
`E
`
`Setup E
`
`Schema @
`
`Files E
`
`Rules
`
`is
`
`Data @
`
`Figure 5
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 6
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 6 of 178
`
`US 2009/0037337 A1
`
`Sync Engine
`600 \\
`
`Client Side
`
`Sync Data
`
`@ Sync Operations u
`
`@
`Files
`m
`App
`App Table w
`App Column m
`Primary Key w
`
`Create Acc w
`
`Create DBs w
`
`Create Acc Dir %
`
`Install EAS E
`Setup Scheduler
`w
`Connect to EMS
`Server
`@
`
`Setup Q
`Schema M
`
`Files M
`
`Rules
`
`i8
`
`Data @
`
`Figure 6
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 7
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 7 of 178
`
`US 2009/0037337 A1
`
`Application
`Server 700
`
`Memo 710
`W \
`Operatlng System
`Network Communication Module
`
`f 711
`712
`f
`
`|_ _ _ _
`| Diggay :
`'- I _.
`
`CPU(S)
`m
`
`708
`
`Comms
`|nterface
`m
`
`i- _|nput_ -:
`| Device I
`
`iLDAP Gateway Module
`f 714
`Synchronization, Access & Query Module f 716
`Synchronization Module
`f 718
`Synchronize Files Module
`f 719
`720
`Access Database Module
`f
`Search/Query Database Module
`f 722
`Conflict Management Module
`j 724
`Record Increment Module
`.1’ 726
`72
`/ 8
`
`User Database
`
`f 730
`f 732
`
`E-Commerce Services Module
`Process Payment Module
`f 734
`Authenticate License Module
`f 736
`Serve Application Module
`.f 738
`Web Server Engine Module
`Web Development Environment Module f 740
`LAMP (Linux, Apache, MySQL, PHP)
`J- 741
`Module etc.; also
`WAMP (Windows, Apa, MySQL, PHP);
`LAPP (Linux, Apa, PostgreSQL, PHP);
`Tomcat; etc.
`Python Module, Ruby, Ruby on Rails, etc. fl‘:
`Ap lication Database Management Module f
`f 746
`Add/Delete Application Module
`Synch Application Module
`f 748
`Application Database Access Module f 750
`
`
`
`User Database Management Module Add/Delete User Module
`
`f 758
`
`Edit User Information Module
`User Authentication Module
`User Permissions Module
`
`Application Database
`
`O
`O
`O
`Auxiliary Services Module(s)
`
`Figure 7
`
`f 760
`f 762
`f
`764
`f
`
`766
`I
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 8
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 8 of 178
`
`US 2009/0037337 A1
`
`Client 800
`
`\>
`
`Display
`@
`
`CPWS)
`w
`
`Memory. 810 \
`Operatlng System
`Network Communication Module
`DNS Support Module
`Receive and Process User Input Module
`Display Module
`Browser Engine Module
`Synchronization, Access & Query Module
`Synchronize Files Module
`
`
`
`808 \ Synchronization Module Local Copy of Database Module
`
`Edit Local Database Module
`
`811
`I
`f 812
`f 813
`f 814
`_f 815
`_f 816
`_f 818
`f 819
`
`5
`
`f 824
`
`Network
`Interface
`M
`
`|nput
`
`Device
`m
`
`f 826
`E-Commerce Client Module
`Download & Enable Application Module f
`Authenticate License Module
`f
`Copy Protection and Data Security Mod. f 832
`Local Web Server Engine Module
`J‘ 834
`
`f 836
`
`Web Development Envt. Module,
`Software Stack
`LAMP (Linux, Apache, MySQL, PHP)
`Module etc.; also
`WAMP (Windows, Apa, MySQL, PHP); I 838
`LAPP (Linux, Apa, PostgreSQL, PHP);
`Tomcat; etc.
`Framework Language Module
`|Python Module, Ruby, Ruby on Rails f 842
`AOP Framework Module
`.f 844
`Traffic Management Module
`I846
`Local Application Database Module
`J 848
`Add/Delete Record Module
`f 850
`Application Database Access Module f 852
`Application Database Query Module f 854
`
`Local User Database Module
`Add Delete User Module
`
`
`
`Edit User Information Module User Authentication Module
`
`User Permissions Module
`Applications database
`User database
`Figure 8
`
`‘r858
`860
`
`f
`
`f 866
`I 868
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 9
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 9 of 178
`
`US 2009/0037337 A1
`
`900
`
`\\
`
`\*
`
`Users and Groups
`
`User A
`
`Belongs to
`Group A
`
`Memberships
`Table in
`Account
`
`User B
`
`Is an Admin of
`Group A
`
`Administrator
`privileges
`
`Group A
`
`User A's
`information is
`added to the user
`out log table for
`User B.
`
`This determines if
`someone else can
`see User A's data.
`
`E.g. Manager for
`User A can see
`contacts for sales
`reps that report to
`her.
`
`Figure 9
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 10
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 10 0f 178 US 2009/0037337 Al
`
`|Application Server1005” |
`
`1000
`
`Client 1001 Network
`
`Web-based Application
`1006
`
`E.g., http://app1.com
`
`120
`
`||
`
`|
`
`| | | |
`
`@ BrowserEngine 1003
`
`E.g., http://apo1.com
`
`Web-based
`Application
`1007
`
`Software Stack
`
`1004
`
`Figure 10
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 11
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 11
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 11 of 178 US 2009/0037337 A1
`
`1100 ”\
`
`At the client, with AOP running, receive a user input
`
`// 1102
`
`@
`
`At the client, start a browser application.
`
`1104
`
`7
`
`I __________________________________________ _ _
`
`J’ 1106
`
`At the client, receive a user request to visit a web page or web-based
`application.
`User request includes a URL.
`
`1
`
`|
`
`i. _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __.
`
`____________________
`
`(Optional) At the client, detect if a connection cannot be made to the I
`| web page or web-based application (e.g., the user may be offline and may not L/ 1108
`i
`have Internet connection).
`|
`
`6})
`
`At the client, local web server responds to request.
`
`/, 1110
`
`i /
`
`r ___________________________________________ _ _
`
`|
`:
`
`(Optional) At the client, run the web-based application locally on I
`the client, using the client operating system.
`i
`l
`
`r
`|@ (Optional) At the client, run open source software (e.g. Software
`Stack) in conjunction with the AOP framework.
`
`(Optional) At the client, receive a user request to navigate browser
`to a web address
`(e.g., a virtual AOP web address : http://app1.com.aop)
`Navigate the browser to the local virtual instance of the web page
`
`r
`|
`'
`:
`:
`
`I
`
`|
`'
`g3) (Optional) At the client, detect when a connection can be made to
`|
`'
`:
`emote web page or server corresponding to the local virtual instance. :
`'
`|
`l
`I
`l
`
`r
`
`“
`
`Figure 11
`
`7/ 1112
`
`, 1114
`
`/ 1116
`
`7/ 1118
`
`'
`
`.
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 12
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 12 of 178 US 2009/0037337 A1
`
`A
`1200 ’
`“‘
`
`AOP Installation
`
`Do nload
`sogtware
`@ P k
`ac ages
`1201
`
`(2) Download AOP
`Package
`1202
`—l
`
`Install Software 1203
`—
`Python and Libraries
`: Apache
`M SQL
`y
`PostgreSQL
`Tomcat
`(SOftWare Stackf
`download to client)
`
`Start AOP Install
`1204
`
`Create an Account
`2%
`
`v
`Initialize accou nt 1206
`6)
`
`Connect to Server 1207
`Authenticate user
`Verify AOP permissions
`Process Request
`
`Network
`<_@_ E =
`
`@» '—>
`
`App S
`AOP
`etup
`J21 2_
`
`Figure 12
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 13
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 13 of 178 US 2009/0037337 A1
`
`@
`
`1300 f}
`At the client, download software packages.
`
`7/ 1301
`
`At the client, download an AOP package including an installer for AOP /. 1302
`framework.
`‘”
`
`G)
`
`At the client, install the software packages.
`
`of 1303
`
`(A)
`
`At the client, start AOP package installation.
`
`7 1304
`
`Y
`At the client, collect (e.g., from user) web application account
`information.
`
`‘I, 1305
`
`I _______ __._____.__. _______ __. ___________________ _“
`
`|
`
`Account information includes domain, username and password.
`
`:
`
`l _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _.
`
`Y
`@ At the client, initialize account using AOP application.
`
`/ 1306
`
`V
`At the client, connect to a server, authenticate web application account
`information, and verify AOP permissions.
`
`V”
`
`1307
`
`7
`At the client, receive from server information required to complete the
`@
`application setup.
`
`/‘
`
`r 1308
`
`V
`At the client, complete the application setup process with the
`application fully synchronized with the web application on the server.
`
`1309
`
`*”
`
`Figure 13
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 14
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 14 of 178 US 2009/0037337 A1
`
`1400 f‘
`
`AOP Initialize Account
`
`Download 1408
`Download.Etelos.Com
`
`'ggwnéiasd giiléages
`-Famfamfam,
`-phpMyAdmin,
`-phpPGAdmin,
`-WebSvn
`
`Connect to Server w
`Authenticate user
`Verify AOP permissions
`Process Request
`
`Synchronizer
`
`_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1
`
`Network
`
`14 6
`
`AOP lni File
`Configuration
`-Authentication
`-Appname
`-Vhost
`-Database
`-Aliases
`-Domain
`
`1405
`
`Vhost
`Write out
`.aopvhost.conf
`Files per domain
`
`1
`
`4 @ Database
`1408
`
`1404 @ M
`
`1 ‘ Database
`r 1409
`
`@ l
`
`IAOP 14
`l
`l
`l
`I
`|
`l
`:
`I
`I
`| Packages
`|
`I
`| Account
`I
`I
`I EMS M
`I
`I
`
`M
`
`_1407
`Host file
`Write out
`.aop
`hostfile
`
`I I
`
`I
`I
`I
`I
`I
`I
`I
`|
`l
`l
`I
`I
`|
`I
`I
`:
`I
`I
`J
`
`_ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _
`
`Software Stack _0
`
`Operating System 1412
`
`Figure 14
`
`AOP application and
`Software Stack are run
`on client Operating
`System
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 15
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 15 of 178 US 2009/0037337 A1
`
`1500 f3‘
`
`@
`
`At the client, install AOP framework.
`
`// 1501
`
`@
`
`At the client, set up EMS with its own database.
`
`1502
`
`@ At the client, using AOP connect to the server and authenticate user 4/” 1503
`permissions.
`
`@
`
`At the client, create an account inside EMS.
`
`if 1504
`
`At the client, configure virtual host (vhost) files to enable navigation to
`@
`the application locally.
`
`,/ 1505
`1
`
`(9
`
`At the client, save the AOP initialization (ini) file with additional
`configuration information.
`
`7/,’ 1506
`4
`
`At the client, modify the host file locally to communicate to the
`operating system that any local domains (e.g. *.aop) are run locally.
`
`f 1507
`
`At the client, download packages from a server repository (e.g.,
`G) download.etelos.com) as required by the app configuration.
`. “E1555; géciégeéiriciuaé _EA§,_Z_e_nd,_fam_farh failf, B?gliyitafnin,
`
`K1508
`’
`1509
`
`l ______________ _ pleieéqnlintvyeqsyna _____________ _ -l
`' """"""""""""""""""""""""" " :
`
`/1510
`
`Figure 15
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 16
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 16 of 178 US 2009/0037337 A1
`
`1600 ’\
`
`AOP Application Installation
`
`Connect to Server 1620
`
`Authenticate user
`Verify permission synchromzer
`Process Request
`M
`
`Fnes
`1615
`
`Data
`Schema
`1616 M
`
`l- _ _ _ _ _ _ _ _ _ _
`
`_ '— _ 1
`
`Application —16 2
`
`Vhost
`1603
`
`Network
`w
`
`A‘
`
`l AOP Framework 16 1
`|
`:
`I
`|
`|
`|
`l
`| Packages
`
`File Transfer
`v
`v
`e.g. SVN or
`Database
`rsync
`www
`1604 w 1606
`l'
`
`1 07
`
`Database
`
`|
`l
`I
`:
`I
`I
`|
`:
`
`1
`
`1608
`
`l
`| Account
`|
`l
`l
`I EMS @
`
`l
`f = : Ru es
`| M
`l
`
`Database
`k’ 1611
`
`l_ _ _ _ _ _ _ _| _ _ _ _ _ _ _ _ _ _ _ _ J
`
`<- Software Stack
`
`161
`
`Operating System 1614
`
`AOP application and
`Software Stack are run
`on client Operating
`System
`
`Figure 16
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 17
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 17 of 178
`
`US 2009/0037337 Al
`
`1 700 “A‘
`
`At the client, download and install schema for the database from the
`server.
`
`1701
`
`At the client, download files using file transfer, e.g. SVN or rsync.
`
`of 1 702
`
`CD
`
`(2)
`
`kg) At the client, download rules and insert them into the account database. H// 1
`
`At the client, download application data as part of the initial
`synchronization process.
`
`I 1704
`
`Figure 17
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 18
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 18 of 178 US 2009/0037337 A1
`
`1800 b‘ Application (AOP) initial data synchronization
`
`Connect to Sen/er 1816
`
`Synchronizer
`
`Authenticate user
`Verify permission
`Process Request
`
`it
`
`_@_
`
`: Files
`1817
`
`> Data
`1818
`
`l' _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ' _ _ _ _ _ _ _ ‘I
`
`I
`l
`I
`Network |
`w |
`l
`l
`|
`I
`Synchronizer
`I
`l M Account
`l
`2
`I
`l
`l
`
`M
`
`Packages
`
`’|8—7
`
`18 8
`
`Q)
`
`3
`
`EMS m
`
`AOP Framework 1801
`-
`-
`1'
`Appllcatlon 1802 File Transfer
`Vhost
`www
`e.g. SVN or
`1803
`18 4
`rsync 1805
`t
`
`"
`Database
`1806
`
`Database
`1811
`
`f
`l->
`
`Database
`H 1812
`
`|
`l
`I
`|
`|
`l
`l
`I
`I
`I
`|
`l
`I
`l
`l
`
`|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ l
`
`=
`
`Software Stack
`
`1
`
`3
`
`Operating System 1814
`
`Figure 18
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 19
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 19 of 178 US 2009/0037337 A1
`
`1900 A‘
`
`6)
`
`At the client, start a synchronization process.
`
`f 1901
`
`f‘ 1902
`V
`(2) At the client, retrieve synchronization rules from a database and flag
`them for an initial synchronization operation.
`
`v
`At the client, send a synchronization request to the server, with
`authorization to sunchronize.
`
`f 1903
`
`"
`
`f 1904
`
`Synchronize the files using file transfer
`
`3
`
`4
`
`@ Data is sent back to initially synchronize up the client application.
`
`v
`
`r 1905
`
`Figure 19
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 20
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 20 of 178 US 2009/0037337 Al
`
`2000 ~~“*
`
`How application (AOP) runs
`
`Connect to Server
`2015
`
`Authenticate
`Verify permission
`Process Request
`
`4)
`
`AOP Launch
`Interface
`
`Launch
`Browser with
`Application
`running locally
`2017
`
`(5)"8(6) Openfile request domain.aop
`
`2002
`
`| |
`
`File Transfer
`Network
`
`
`
`|||Vhost www e.g. SVN or Database
`
`
`
`
`120
` Application 2002
`
`| || | | | | | |
`
`Account
`
`2008
`
`
`EMS 2009
`(3)
`Database
`
`
` Database
`
`2010
`
`2014
`
`a S
`
`(2)
`
`oftware Stack
`
`2012
`
`Operating System 2013
`
`r___|
`
`Figure 20
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 21
`
`User OFFLINE
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 21
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 21 of 178 US 2009/0037337 Al
`
`2100 ~ “4
`
`1) At the client, start the AOP application running, in response to a user
`
`selection.
`
`(2)
`
`At the client, from within the AOP application, start the software stack.
`
`3)
`
`At the client, from within the AOP application, start the EMS.
`
`At the client, from within the AOP application, launch a userinterface.
`~ oe eeeeeeeee
`The interface includes a desktopinterface.
`
`!
`
`At the client, detect user selection of an application, and navigate in a
`browser window to the URL associated with that application.
`
`At the client, listen with using the Web Server and servethe application
`locally to the browser window.
`Po The WebServerincludesApache.
`
`Figure 21
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 22
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 22
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 22 of 178 US 2009/0037337 Al
`
`2200 ~~
`
`Howthe client serves up a local version of the webpage
`
`HostFile
`
`2202
`
`Browser 2201 Domai
`
`File Transfer
`e.g. SVN or
`rsync
`2208
`
` Packages
`
`2209
`
`Figure 22
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 23
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 23
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 23 of 178 US 2009/0037337 Al
`
`2300 ~~«
`
`(1)
`
`At the client, determine the IP addressof the current domain.
`
`_- 2301
`
`>
`(2)
`
`Vv
`At the client, the OS Network Stack looks at the hostfile which was
`
`modified during application (AOP)startup.
`
`yr 2302
`
`At the client, address is returned.
`I (
`
`The addressis 127.0.0.1
`
`(4)
`
`(5)
`
`NN
`
`(7)
`
`The local web serverlistens at the address.
`
`The local web server receives a request.
`
`- 2304
`
`230
`
`2305
`
`The local web server compares the domain to the virtual host (vhost)
`configurationfile.
`
`2306
`
`The local web server determines the local application web root.
`
`s- 2307
`
`
`
`The local application processes the request and loads appropriate tools
`to complete the request..
`The tools include framework, database,etc.
`
`(9)
`
`The local web server serves up the local web page.
`
`7 2309
`
`Figure 23
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 24
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 24
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 24 0f 178 US 2009/0037337 Al
`
`2400 ~“«
`
`High Level View of Synchronization
`
`Changes Log 2405
`
`Conflicts Log 2408
`
`Figure 24
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 25
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 25
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 25 of 178 US 2009/0037337 Al
`
`
`
`Va(2)
`
`Collect changes from the local database in a changeslog.
`
`- 2902
`
`Send the collected changes log from the client to an application server,
`ae
`:
`wg
`which includes corresponding databasefor the application.
`
`-- 2503
`
`.
`
`(4) Synchronize and apply the changes to the server database, keeping
`connection with client alive until the sync operation is finished.
`
`_ 2504
`
`4
`
`Detect conflicts in data on the server, and if any are found grant priority to the
`server.
`
`
`
`Resolve conflicting data and store conflict resolution data in a conflict
`resolution log on the server.
`
`y- 2505
`
`
`
`6)Send conflict resolution log from the application serverto the client. - 2506
`
`(7Yat the client, apply the conflict resolution log to the client local database.
`
`y~ 2507
`
`Figure 25
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 26
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 26
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 26 of 178
`
`US 2009/0037337 Al
`
`
`
`
`
`s6o7sanlesINOJBAIaS
`
`
`
`OZJAAIOSuOeoI|ddy
`
`esegeieq
`
`£09¢
`
`SS890/d
`
`U]JAAIBS
`
`SSO00/d
`
`OL9¢
`
`9zeinbl+
`
`1092USD
`
`
`
`
`
`(01)909¢
`
`$S990JqUlJUdI|D
`
`©&)
`
`qUS|D
`
`suoiealddy
`
`esegeieq
`
`Z09¢
`
`@)
`
`
`
`sBo7}UaI|D
`
`SSd00/q
`
`aeoa©INOjWws!|DS00Z
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 27
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 27
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 27 of 178 US 2009/0037337 Al
`
`2700-4
`
`- 2701
`
`Detect changesin an application database, when a user uses the
`application.
`|___ Changescan beonserver appdatabaseorlocalappdatabase. __ 4
`
`Synchronize data by pulling data from the internal log on server and
`
`Push the data from the account log on the server to the outbound log
`on the server.
`
`ra aa aa a 7
`eee
`Keepthe synchronizerrunningfast
`
`Pause the outbound log, and wait for a user to initiate sync with the
`
`- 2704
`
`2706
`
`pushing it to an account log on the server.
`AOPapplication.
`transaction identifier (e.g. “sync block ID”) to the data.
`
`(6)Push data to a ‘server out process’ for outbound processing and add a
`
`Figure 27A
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 28
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 28
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 28 of 178 US 2009/0037337 Al
`
`(7a)
`
`(7b)
`
`(7c)
`
`At “server out process”, map data to users.
`
`At “server out process”, push userdata to usertables.
`
`-- 2707a
`
`-- 2707c
`
`- 2707d
`
`At “server out process”, perform filter function on data received. -- 2407b
`At the server, sort data by user out tables.
`
`(74)
`
`At “server out process”, run a group managementrules check.
`
`At “server out process”, identify administrator group memberships
`relationships for a user.
`
`_- 2707e
`
`At “server out process”, map additional data to administrator users
`based on group administrator of a particular user A.
`
`Figure 27B
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 29
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 29
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 29 of 178 US 2009/0037337 Al
`
`(2)
`
`At client, receive data at AOP application and pushit to “clientin
`
`process” for processing.
`
`2709
`
`(108) At “client in process”, perform filterfunction on data received using auto
`
`increment rules (flag).
`
`(106) At “client in process”, check auto incrementflagged column for conflict.
`
`IN
`
`(106)
`
`At “client in process’, if there is no conflict found, move to insert the
`
`data.
`
`
`
`At “client in process”, if a conflict is found, leave the data in the sync log
`
`(10d)
`
`for the next session.
`- 2710e
`|
`
`one.
`
`
`
`
`At “client in process”, filter the data into insert, update and delete
`operations.
`
`(41) Perform insert operations to push data into the application.
`
`NA
`
`(12) Push update and delete operations into the sync accountlog.
`
`IS
`
`a 271 1
`
`2712
`
`prevent the cycle from doubling backinto an infinite loop.
`
`During insertion, disable a trigger on that “connection”like a session,
`
`2713
`
`NA
`
`(14) The application has synchronized the received data atthe client.
`@®
`Figure 27C
`
`< 2714
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 30
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 30
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 30 of 178 US 2009/0037337 Al
`
`(15)
`
`Monitor data in the applications database for changes.
`
`At client, if the database changes, listen and push changestointernal log.
`
`2715
`
`(17)
`
`At client, synchronize by pulling data from the log and pushingit to the
`
`accountlog.
`
`elit
`
`At client, push data from the account log to the outbound log.
`
`et i18
`
`Keep the synchronizer running fast.
`
`!
`
`(19)
`
`2719
`At client, pause the outbound log and wait for the userto initiate sync
`
`with the AOP application.
`
`2720
`At client, push data to a “client out process” for outbound processing
`
`and add a transaction identifier (e.g.,“sync block ID”) to the data.
`=
`
`e—-———
`
`User information istied tosynchronizationaccount. !
`
`2721a
`
`(210)
`
`At “client out process”, push data to synchronization account out log.
`
`7 2721b
`
`7 2t22
`
`Figure 27D
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 31
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 31
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 31 of 178 US 2009/0037337 Al
`
`
`
`(242)
`
`At “server in process”, compare userin data and userout datato find
`
`duplicate transactions.
`
`(-2324a
`
`ed bytrigger and identifier (e.g., “sync_block_id”) added by sync session.
`
`Al “server in process”, analyze identifier (e.g., “_eas_syncmap_id”)
`
`-2724b
`
`(240)
`
`(242)
`
`246)
`
`(248)
`
`At “serverin process”,if a conflict is detected, the server wins and
`
`conflicts are deleted.
`
`At “serverin process”,filter insert, update and delete operations.
`
`At “serverin process”,filter auto incrementflags.
`
`At “server in process”, insert records with no conflicts.
`
`2024c
`
`-2724d
`
`-2724f
`
`x 2724g
`At “serverin process”, where records have conflicts, increment to end
`and insert.
`
`Server would win on this record and delete duplicate entry...
`
`At “serverin process”, start trigger as new records makeround trip
`back to application database.
`
`eas_sync_map_id =
`Contact10 = contact10
`Email = john@etelos vs email = john.smith@etelos.com
`
`__eas_sync_map_id
`
`Figure 27E
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 32
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 32
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 32 of 178 US 2009/0037337 Al
`
`At server, process updates and deletes into the database from the sync
`
`complete.
`
`
`accountlog. Alt server, application has sync data, and the synchronization processis
`
`2729
`
`of conflict.
`
`At server, if auto increment conflict (AIC) rules, then take another pass
`rough the process to update conflicted records at the “client in process’.
`
`Add, process and synchronize records which were previously left out because
`
`Figure 27F
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 33
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 33
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 33 of 178 US 2009/0037337 Al
`
`2800 —“
`
`Auto Increment Conflict Resolution
`
`Before
`
`Synchronized
`
`New on AOP (3)
`
`Synchronized
`
`ass
`
`Synchronized
`
`Synchronized
`2" p
`“
`pass
`Synchronized
`
`New on Server
`Synchronized
`al
`I
`(4)NewforaoP| 6)
`( 5 New on AOP
`:
`
`Update on Server
`
`(8) pdate for AOP
`
`Update (7)
`
`Synchronized
`
`New on AOP
`
`After
`
`Synchronized
`
`|
`
`2830
`
`2840
`
`(9)
`
`Figure 28
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 34
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 34
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 34 0f 178 US 2009/0037337 Al
`
`At the start of a synchronization operation, identify data that matches|, 2901
`on both server and client application (AOP) instance.
`
`2900 ~~4
`
`
`
`| 2902
`
`At the server, determine that new records have been addedon the
`
`(AOP) as newrecords.
`
`Determine there is a conflict and that identifiers associated with the new
`records already exist.
`
`v 2904
`
`Pause the process and wait for a second pass beforeinserting records.
`
`On the second pass, treat the records as an update.
`
`server. At the server, send new records from server to the client application
`
`(‘5 )At the client, send new records from client application (AOP)to the server.|_,-2905
`
`
`
`
`
`
`
`
`(9)
`All records match and are in synch with both the web server and the
`
`(7)
`
`(8)
`
`At the server, add these records and create newidentifiers for them,
`incrementing the sequenceofidentifiers in the database.
`
`|_-- 2906
`
`At the server, log the changes and package as an updatefor those
`
`records.
`
`2907
`
`Process the updated records.
`
`
`
`client application (AOP).
`
`2908
`
`2909
`
`Figure 29
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 35
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc's Exhibit 2002, page 35
`
`
`
`Patent Application Publication
`
`Feb. 5, 2009 Sheet 35 of 178 US 2009/0037337 Al
`
`3000 ~~~
`
`Provide on a computer system a local software stack configured to
`provide local web services for dynamic, web-based applications that are executed
`on the computer system when itis offline.
`
`3002
`
`3004
`”
`,
`:
`When the computersystem is offline, execute on the computer systemafirst
`dynamic, web-based application using the web services provided bythe local
`software stack, such that functionality of the first dynamic, web-based application
`when the computer system is offline is substantially similar to functionality of the
`first dynamic, web-based application when the computer system is online.
`
`Lo __ _ ___softwarestackusingTCP/IP
`
`[
`| The first web-based application is a database-driven web-basedapplication. |
`
`An architecture of the first dynamic, web-based application is not
`modified to provide the functionality when the computer system is offline
`
`In responseto detecting a network connection with an application server,
`| synchronizing with the application server changesin information associated with
`the first dynamic, web-based application due to its offline execution.
`
`In response to detecting a user instruction, initiating execution of the the first,
`dynamic web-based application when the computer system isoffline by directing a |
`web browser on the first computer system to a specified universal resource
`locator (URL) that is associated with first computer system instead of a remote
`application server.
`
`The specified URLis associated with the first computer system through a
`dynamic naming server (DNS) record on the first computer system.
`
`:
`|
`The local software stack comprises: a web server responsive to browser-
`issued commands, a database management system, and a dynamic scripting
`language
`| The web server is Apache webserver, the database management system is |
`| mySQL, and the dynamic scripting language is at least one of PHP, Python,
`Perl, or Ruby.
`|
`
`|
`
`The first dynamic, web-based application communicateswith the local
`
`3006
`
`3008
`
`3010
`
`3012
`
`3014
`
`3016
`
`3018
`
`3020
`
`3022
`
`3024
`
`Figure 30
`
`Apple v. Uniloc, IPR2017-2202
`Uniloc'