Some of the source code which we've written for our Mac OS X and iPhone applications is available for use under the terms specified in the Omni Source License (basically the MIT license). We have not yet provided any formal documentation, though the source code does include a limited amount of internal documentation.
OmniBase is the lowest level framework in the Omni framework suite, used by every product we ship. OmniBase provides a series of debugging aids for class allocation and initialization, an alternative assertions mechanism, several Objective-C runtime manipulation aids, and a very reliable, cross-platform implementation of +load (called +didLoad).
OmniFoundation is our extension to Apple’s Foundation framework. Besides several extremely useful extensions to Apple Foundation classes, OmniFoundation provides a horde of unique and powerful classes. Among the more interesting are:
- OFStringScanner - A blindingly fast Unicode-safe alternative to NSStringScanner, for when you really need to burn through those character streams.
- OFRegularExpression - Powerful regular expression processing wrapped in an Objective-C shell. Combine with OFStringScanner for extra fun.
- OFTrie - Implementation of the popular trie data structure. Interfaces to OFStringScanner for rapid scanning of “longest” token elements.
- OFMessageQueue & OFQueueProcessor - Writing stable multithreaded applications is an error prone process. These classes help de-fang the savage beast.
OmniFoundation is a veritable treasure chest of programming goodies. Take a look for yourself.
OmniDataObjects provides a CoreData-like API, but with a much smaller feature set (and thus implementation). Built on top of SQLite, OmniDataObjects provides the persistence for OmniFocus on the Mac and iPhone.
OmniAppKit is our set of extensions to Apple’s AppKit.framework, full of cool stuff to make Mac OS X application development even easier. Some highlights:
- AppleScript - OAOSAScript makes it super-easy to run AppleScripts from within a Cocoa app, and companion classes introduce features such as automatically populated script menus, scripts on toolbars, and extensions to the Text suite allowing scripters to manipulate rich text.
- OAPreferences - An architecture for building multi-pane Preferences windows. All you need to do is write the individual preference panes (which is quite easy) and OAPreferences will automatically generate an appropriate Preferences window ? one like System Prefrences if you have lots of panes, or one like Mail’s Preferences window if you only have a few.
- OAFindPanel - Apple has a standardized architecture for Find in applications, but they leave implementing it entirely up to developers. OmniAppKit provides a powerful Find & Replace panel and a protocol for easily making widgets and documents in your app searchable.
OmniAppKit also includes lots of extensions to Apple’s classes to make creating rich user interfaces much easier.
Omni’s inspector framework as seen in OmniGraffle, OmniFocus, OmniOutliner and OmniPlan!
OmniNetworking provides a simple and extensible Objective-C wrapper to a multitude of complex networking constructs. Communication over several internet standard protocols is supported, including TCP, UDP and Multicast. Writing a simple FTP client, or custom TCP/IP-based server program becomes a trivial task using OmniNetworking.
Omni Source Code software is available from The Omni Group on their web site at www.omnigroup.com. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: Any original copyright notices and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.