The Omni Group
These forums are now read-only. Please visit our new forums to participate in discussion. A new account will be required to post in the new forums. For more info on the switch, see this post. Thank you!

Go Back   The Omni Group Forums > Developer > Omni Frameworks
FAQ Members List Calendar Search Today's Posts Mark Forums Read

 
Framework summary, and OmniPresence Thread Tools Search this Thread Display Modes
Hi, I'm starting developing my first iPad app, and while I have used some of the Omni frameworks on OSX before, I'm not sure what some of the iOS frameworks in particular are for, and the frameworks page only lists some of the frameworks. Also it says that the newest framework is OmniPresence, but there is no such framework on github, so I'm wondering if it's called something else in the source code.

I'd appreciate it if people could help me complete a brief description of each of the frameworks, which will be useful for me to get it straight in my head, and hopefully will save others time trying to understand what is actually there.

I've made a start below:

OIF: OSX: Appears to be an image framework developed for OmniWeb. Not sure how relevant it is now.

OmniAppKit: OSX & iOS: Lots of useful extensions to and subclasses of AppKit objects (OSX). The iOS library just has a small subset of the classes where they are supported on iOS too. It is described on the frameworks page.

OmniBase: OSX & iOS: Various extensions to low level Obj-C objects and runtime etc (described on the frameworks page). Only a few of these things are available in the iOS library.

OmniDataObjects: OSX & iOS: Persistence framework built on top of SQLite. Replacement for CoreData. Described on the frameworks page.

OmniDAV: OSX & iOS: A WebDAV client library, allowing you to upload and download files, list folders, and move things around on the DAV server.

OmniDocumentStore: iOS: I think this is a low level wrapper around file storage operations. I'm not really sure what the purpose is.

OmniFileExchange: OSX & iOS: I think this allows a local folder to be synced with an external location either by DAV or iCloud. Not sure how you would set it up and use it. Is this what is being referred to when they talk about OmniPresence framework?

OmniFileStore: OSX & iOS: This appears to be able to sync files with a DAV source. Not really sure what this is for, cinde the OmniFileExchange seems to do this and more.

OmniFoundation: OSX & iOS: Assorted foundation object categories and useful classes and foundation subclasses. More than half of these are available on iOS. Described on the frameworks description page.

OmniInspector: OSX: Inspectors like what is found in the Omni products on OSX. Described on the frameworks page.

OmniNetworking: OSX: Wrappers around lower level networking APIs to make them easier to use.

OmniQuartz: OSX & iOS: Adds assorted useful animations, layers and utilities for quartz animations.

OmniSoftwareUpdate: OSX & iOS: An update checking system.

OmniSQLite: OSX: A SQLite wrapper.

OmniUI: iOS: Lots of useful classes for application control, inspectors, in-app purchase etc, etc

OmniUIDocument: iOS: Appears to be some sort of document picker - I think it basically allows you to create something like the document picker in OmniGraffle, and select from local or WebDAV documents. Not sure how you would implement it in an application.

OmniUnzip: OSX & iOS: A wrapper that allows you to zip and unzip files.

OWF: OSX: Omni Web foundation - lots of web related stuff. Not sure how relevant this is any more.
 
Is anyone able to confirm any of this, or add to it, or explain what exactly OmniPresence is? Thanks.
 
I am not a dev, so I may not get this perfectly right from a frameworks point of view, but...

Most of what you said above looks correct. I don't think OmniSoftwareUpdate works on iOS.

OmniPresence is an API for syncing documents to a WebDAV server. Here's our marketing page about it: http://www.omnigroup.com/omnipresence/
So on the Mac, any app can just save files to a particular folder, and the OmniPresence client app takes care of the syncing.
On iOS, where apps can't (easily) see each other's files, you would need to do the syncing in your app, with OmniFileStore and friends.

Here's the commit where OmniDocumentStore and OmniDAV were peeled out of OmniFileStore: https://github.com/omnigroup/OmniGro...3396fd282f9382 That might give a little insight.

Hopefully someone who actually worked on this/uses it daily will chime in.
 
A few more notes...

Quote:
Originally Posted by Joe Alexander View Post
OmniDocumentStore: iOS: I think this is a low level wrapper around file storage operations. I'm not really sure what the purpose is.
OmniDocumentStore provides a consistent interface that lets higher level code deal the same way with local files (stored on this iPad only) and synchronized files. This does a bunch of the grunt work for folders, renaming, duplicating, async file operations, and so forth. One important point is that this framework operates on metadata items for files that might not be present locally. So, you can use this to view, rename, and delete ODSFileItems that are not currently downloaded from an OmniFileExchange scope.

Quote:
Originally Posted by Joe Alexander View Post
OmniFileExchange: OSX & iOS: I think this allows a local folder to be synced with an external location either by DAV or iCloud. Not sure how you would set it up and use it. Is this what is being referred to when they talk about OmniPresence framework?
Yeah, this is the guts of OmniPresence. Currently there is no support for iCloud in this framework. If someone did want to iCloud support back, you'd want to make a new framework with a subclass of ODSScope that would transform NSMetadataItems into ODSFileItems, do the proper file coordinated moves/deletes and such.

Quote:
Originally Posted by Joe Alexander View Post
OmniFileStore: OSX & iOS: This appears to be able to sync files with a DAV source. Not really sure what this is for, cinde the OmniFileExchange seems to do this and more.
The code that is now in OmniDAV used to live in this framework, with OFSFileManager subclasses for local files and DAV files. This is somewhat useful, but only when used on a background queue (you don't want DAV queries blocking your UI, and even local file operations can be slow). So, we've left this in place (OmniFocus still uses it on a background queue), but OmniPresence uses OmniDAV directly for most operations via ODAVConnection.

Quote:
Originally Posted by Joe Alexander View Post
OmniNetworking: OSX: Wrappers around lower level networking APIs to make them easier to use.
I would also put this in the 'not terribly relevant anymore' pile. We still do use it in a few places, and it has some nice support for IP multicast, but it needs to be updated to use NSError, and most stuff can be done with OS X built-in classes (that didn't exist when this code was written).

Quote:
Originally Posted by Joe Alexander View Post
OmniSoftwareUpdate: OSX & iOS: An update checking system.
There is a bit of iOS code here for reporting back system stats, but we don't currently ship it in any of our iOS apps. We may also update this to work in our MAS apps so we can get OS adoption rates and such, but it won't do actual updates there.

Quote:
Originally Posted by Joe Alexander View Post
OmniUIDocument: iOS: Appears to be some sort of document picker - I think it basically allows you to create something like the document picker in OmniGraffle, and select from local or WebDAV documents. Not sure how you would implement it in an application.
Yep, this is the document picker with the list of scopes (local files, OmniPresence), folder support and all the stuff you see in OmniOutliner 2 and OmniPlan 2 for iPad. The shipping version of OmniGraffle for iPad uses an older version that doesn't support folders.
__________________
CTO, The Omni Group
 
 


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes



All times are GMT -8. The time now is 02:21 AM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, vBulletin Solutions, Inc.