The Partner Platform


The Partner Platform is a map application platform, based on a “fit client” architecture, focused on end user tasks, and particularly on field tasks. It is developer-friendly, with a well-documented API and infrastructure for configuration, customization, extension and distribution. It is also IT-friendly, providing a unified infrastructure for multiple applications, automatic update, simple and standards-based network protocols, and no unusual requirements or dependencies for either client or server machines. A certification program provides a formal basis for training, continuing education, and authorization for anyone working with the Partner Platform.

Map Application Platform

The Partner Platform is primarily designed to support map-based applications.

The platform features a high-performance geographic data framework known simply as the “Map Framework”. This provides a unified, seamless view of any number of geographic data sources, including aerial photos, GIS, CAD, and other data. Map data can also be generated from almost any ad-hoc data source.

A translation process allows the use of any supported format in a vendor-independent manner, without changing the original source data. Map publishing allows the distribution of map data to users who do not or can not have access to the original map data.

The Map Viewer provides a simple and unified user interface to this data, regardless of its original source. The Map Viewer is operating system independent, and currently runs on any operating system that supports Java Standard Edition version 7 (including Microsoft Windows, Apple Mac OS X, and Linux) and on most devices that run Apple iOS (including newer iPads, iPhones, and iPod Touches).

Map data can also be generated and modified dynamically by interactive applications. Applications may be developed entirely within the Partner Platform, or built in other frameworks and integrated with the Partner Platform to take advantage of its map interface. The platform and Map Framework do not require that data be stored inside of Partner, allowing existing applications and databases to be map-enabled without major changes.

GPS and similar location services are supported, including high-accuracy, post-processed GPS data and devices required by professional users.

The “Haversack Framework” extends the basic Map Framework with a distributed map data model appropriate for a wide variety of field data collection and mobile applications. Haversack is driven by a configurable schema, which controls database, synchronization, and user interface components and allows for the rapid and straightforward development of distributed dynamic map data applications.

Finally, the “MacLeod Framework” provides an Internet cloud infrastructure to both Map and Haversack frameworks. MacLeod allows secure, hosted updates and synchronization between all devices over both private and public networks. It includes the Partner Web, a web-based data editing and workflow tool. It also provides a standard XML- and JSON-based web service for both Partner and third-party applications to integrate with applications on the Partner Platform.

In addition to these frameworks, the Partner Platform also provides extensive libraries for general application development, including data transformation, data storage, user interface, configuration, networking, and other tools.

“Fit Client” Architecture

“Fit Client” is a term we have coined to capture the approach we have taken with the Partner Platform’s client/server architecture.

Traditionally, client/server architectures are divided into “thin client” and “fat client” (or “thick client”) models, and “fit client” is a hybrid of these approaches.

Thin Client

A thin client requires little or no installation on end-user devices; stores little or no data on those devices; and generally requires a constant network connection with the server. Examples of thin client architecture include web browsers and Google Maps.

Thin client has these advantages:

  • installation is simple,
  • the software is always up-to-date,
  • configuration and data is centralized, and
  • no important data or configuration is stored on the user device.

Thin client has these disadvantages:

  • it generally requires a constant network connection,
  • users cannot work if the network or server is down, and
  • interactive performance is often sacrificed since all software and data must transfer over the network.

Fat Client

A fat client generally requires substantial installation and configuration on end-user devices; stores software, data, and configuration on those devices; and can run without a server or network connection at all.

Fat client has these advantages:

  • it can run without a network connection or server,
  • individual installations can be customized to a large degree, and
  • interactive performance can be very good, since all software and data is available locally.

Fat client has these disadvantages:

  • software update can be complex,
  • important configuration and data is stored on the user device and can be lost or stolen, and
  • configuration and data are distributed and can be difficult to manage.

Fit Client

A fit client is a hybrid of thin and fat clients. Software, configuration, and data are managed centrally, but then copied to end-user devices via frequent updates. Data created or edited by users is synchronized back to the server. Both updates and synchronization are done when a network connection to the server is available, but the user can work without a network connection.

Fit client has these advantages:

  • installation is simple,
  • software is updated regularly,
  • configuration and data is centralized,
  • data is synchronized regularly to the server,
  • interactive performance can be very good, since all software and data is available locally, and
  • users can work without a network and can continue to work even if the network or server has failed.

Fit client has these disadvantages:

  • configuration and data is still stored on the device,
  • users must update and synchronize regularly, and
  • data that has not been synchronized may be lost if the device fails or is lost.


The framework responsible for maintaining software and configuration consistently across all installations is called Update. All Partner Platform installations use Update.

Update is a high-performance, fault-tolerant software installation and update framework. It efficiently compresses and distributes changes to the filesystem, and transfers them over simple and standard Internet TCP/IP connections. It can support any number of layers of servers and any number of user installations. It supports the transfer of very large file sets, up to hundreds of gigabytes. Of course, network bandwidth and other limitations will determine the feasibility of some update tasks.

Configuration is controlled at various levels of authority in Update, allowing customization of individual divisions, offices, or work groups. Update is tightly linked to the Partner Platform filesystem, which has a well-specified organizational structure for configuration, data, software, temporary, and other files.

Update is firm about control authority and filesystem rules, and effectively eliminates local changes to files controlled by a server.

Update can be triggered automatically or manually, but does not require a constant server connection. Typically a user updates when a network connection is available; checking for available updates is almost instantaneous.


Update is primarily responsible for distributing changes to software, configuration, and published map data. It may upgrade application data to match a software update, but does not otherwise interact with application data. Instead, this process of distributing changes to application data is called Synchronization.

Synchronization can be a very application-specific process, and applications may choose to use any method appropriate for their data. However, the Haversack Framework includes a standard synchronization mechanism that can be used for any applications based on Haversack.

Haversack synchronization is efficient, incremental, secure, and based on standard TCP/IP network sockets for maximum compatibility with LAN or mobile network technologies.

End-User Focus

GIS-type and CAD-type mapping platforms are usually focused on a narrow group of highly-trained and highly-technical users. In contrast, the Partner Platform?s focus is on a broad group of users with varying degrees of training and technical ability - at least in regard to mapping software. They may be highly trained or technical with regard to their own job, but that job does not revolve around using the software. In other words, a Partner Platform application is generally a tool for doing a job rather than the focus of the job itself.

This is still a broad definition, and Partner Platform users may have a variety of duties and work in a variety of environments with a variety of computing devices. However, as a further focus, the Partner Platform specifically supports the needs of field users.

Office users generally work in climate-controlled offices, on powerful desktop computers, with good lighting, comfortable chairs, and a reasonable keyboard and mouse setup. Field users, on the other hand, have to contend with unpleasant and unpredictable weather, bright daylight and dark night, truck-mounted setups, touch screens, and other challenges. They need devices that are portable, have good battery life and are rugged - all characteristics that are generally at odds with performance. These issues are rarely addressed by traditional software platforms and user interfaces, but are a major focus of the Partner Platform.

For the end-user, Partner has these important qualities:

  • simplicity,
  • consistency,
  • robustness,
  • high performance,
  • hardware independence, and
  • operating system independence.

Simplicity is always a challenge, and often involves saying “no” to otherwise reasonable feature requests. Partner does not provide the wealth of editing and input tools that a CAD program might, for example, but it provides the important ones and avoids the less-commonly used ones.

Consistency is encouraged through convenient and standard application behaviors. These include such things as a standard menu structure, standardized forms, standard map interaction controls, and standard map editing controls. Applications may choose to provide unique implementations and controls, but in general users benefit from having all applications in the same Map Viewer and with the same controls and similar behaviors between applications.

Robustness is the ability of the software to work even when configuration or other problems interfere. In general, the Partner Platform is designed to log errors but bull on regardless, allowing the user to work around issues instead of giving up entirely and shutting down the software.

High performance is important to usability, since pauses and delays are both aggravating and also often contribute to user error. If the software runs extremely well on standard machines, it will often run acceptably well on underpowered or mobile devices, which are typical in field uses.

Hardware independence is important because no one hardware platform meets the needs of all users. While it cannot run on every available device, the Partner Platform has no unusual hardware requirements and is designed to work on as many as possible.

Operating system independence is similarly important. The Partner Platform is designed for this independence, requiring no special operating system facilities for its core architecture. The majority of the Partner Platform is written in Java, which further increases OS independence. Every OS has its special needs and requirements, however, and mobile OSes have unusual requirements. So, at present, the Partner Platform only supports OSes that can run Java 7 Standard Edition (Microsoft Windows, Apple Mac OS X, Linux) and the Apple iOS operating system.

All map applications written for the Partner Platform are expected to follow standard conventions and behaviors so that they can coexist with other applications in the same Map Viewer. This provides two major benefits. Users can quickly learn a new application, since the controls are familiar. And they can use several applications simultaneously, such as a design tool at the same time as an inspection tool, without having to change programs. This unified, map-oriented, interactive interface is the most important benefit of the Partner Platform.


The Partner Platform?s map application focus makes it easy to create map-based applications or to map-enable existing applications. Effort scales well; simple applications are simple, and complex applications are more complex but not unreasonably so.

For both applications and the system as a whole, the Partner Platform is specifically designed to enable:

  • configuration - changing behavior through prespecified settings and data;
  • customization - modifying behavior by overriding or replacing standard components;
  • extension - adding new applications, frameworks, drivers, and other components; and
  • distribution - installing, updating, and upgrading all of the above.

Applications and extensions to the Partner Platform can be developed using a variety of methods and tools.

Many applications, including substantial ones, can be built entirely in the Partner Workbench using scripting and configuration files. A number of scripting languages are supported, with Groovy as the default and Python and others as options.

Configuration files are always in standard, open formats such as text, CSV, XML, or (for images) PNG or JPEG. Developer and configuration staff may use any combination of Partner?s configuration tools, third-party applications, or may choose to generate Partner configuration files from your own application?s configuration.

Partner itself develops most full applications in Java, linking directly against the Java libraries of the Partner platform.

Bridges are available between Java and other languages, such as C, C++, and C# and the Microsoft .NET framework.

Partner exposes data via web services. These can be accessed with almost any programming language and used to integrate other systems or write companion applications.

All applications for Partner are packaged in one or more modules. Partner Platform modules are specifically designed for this purpose and are well-suited to the needs of providing, installing, configuring, and upgrading software.

The Partner filesystem is designed to enforce the separation of concerns for applications and levels of control. Since an application may share the Platform with any number of other applications, the Platform does its best to prevent them from interfering with one another.

Developer-specific documentation, training, and support are available. Documentation takes the form of a wiki, manuals, tutorials, examples, and API references. Training includes both classroom-style and workshop-style sessions. Partner development staff can directly support third-parties through forums, email, phone, workshops and onsite visits. Most of these are paid services, and Partner provides both ad-hoc pricing and support plans tailored to the needs of third-party developers. Developer-specific certification guides both training and support options.


While the Partner Platform focuses primarily on the end-user, system administration and information technology (IT) staff are also an important constituency.

Partner strives to be a good citizen in a customer?s network infrastructure. This is done through a number of design and implementation choices, including:

  • site licensing,
  • use of the Java language and virtual machine,
  • use of standard TCP/IP network communications,
  • clear separation of concerns for software, configuration, and data,
  • centralized control of configuration,
  • automated updates,
  • lightweight machine footprint,
  • no unusual hardware, software, or operating system requirements, and
  • no unusual software or operating system dependencies.

Partner is generally licensed by site or customer. This eliminates most of the drudgery involved in tracking installations or issuing license keys to users. The Partner site license is generous, and allows use not just by customer employees but also by subcontractors working on behalf of the customers.

Most of the Partner Platform is written in cross-platform Java code, and can therefore run on Microsoft Windows, Apple Mac OS X, and Linux operating systems. Of course, most of our customers use Microsoft Windows, and a correspondingly larger focus is placed on that specific environment.

TCP/IP and occasionally UDP/IP are used for all network communications. This allows IT staff to use standard tools to monitor and control the performance and security of those connections. In general, these communications are also based on open standards such as HTTP and XML.

Software, configuration, and data are firmly separated in the Partner filesystem. Levels of control are as well. This makes backup planning, software maintenance, and other tasks much easier. Customer-wide software and configuration is controlled from a central ?Master Install? distributed to a ?Central Hub?. This can be further refined for district offices or other work groups via ?Site

Hubs?. Unusual or single-user installations can be refined on a per-seat basis as well.

All installations are maintained via the Partner Update framework described above. Installations are straightforward and require no complex configuration. Updates can be triggered manually or automatically as appropriate for a given installation or user. In general, updates are checked for each time the user opens the software and they are notified and prompted if any updates are available. Update uses HTTP or HTTPS downloads only, and all files are highly compressed to preserve bandwidth. It is very fault-tolerant and can simply be re-run if the network connection fails for any reason. This allows update to run on a wide variety of network types and bandwidth levels, from slow leased-line WANs to mobile networks to gigabit LANs.

The map data for a Partner installation can be large, but otherwise Partner has very little impact on a typical machine. All files for a Partner Platform installation are stored under a single top-level directory. The only exceptions are temporary files, which may be stored in the Windows temporary directory, and user account preferences, which are stored in the user?s Windows registry. Since all files are stored in the same directory structure, security, backup, uninstallation, transfer, and troubleshooting tasks are greatly simplified.

While Java has been billed primarily as a way to build software for multiple operating systems, we have found that it also insulates us from changes in Microsoft Windows itself. Thus, the Partner Platform is generally less sensitive to version and configuration differences between different Microsoft Windows installations, and can run in a heterogenous environment of mixed versions. Currently, Partner runs on any standard or server version of Windows from Windows XP to Windows 8.

All required software is included in a Partner Platform installation, so there are no additional databases, web servers, or other components that must be installed and maintained along with Partner.

As for developers, IT-specific documentation, training, support, and certification are available. There is substantial overlap between the concerns of IT and developers, and many Partner Platform customers also act as developers, with IT staff building and maintaining custom applications.

Certification Program

Certification programs are also provided by Partner. Certification formalizes the training and continuing education of all those interacting with the Partner Platform - users, managers, support, IT, developers, and resellers.

For an individual, certification provides formal recognition that they have completed and are maintaining appropriate training for the relevant part of the Partner Platform. When Partner or a third-party works with a certified person, they have a better understanding of the certified person?s level of knowledge. If the certified person is applying for a job or working as a contractor, they can use the certification to increase the value of their employment or services.

For an organization, certification provides a formal way to manage their training investment in the Partner Platform. Third-party developers and resellers can further use it to provide assurance to their own customers that they are qualified to work with the Partner Platform and have a good relationship with Partner.

For Partner, certification provides a way to improve the success of everyone involved through better education. This directly benefits Partner in higher customer satisfaction and lower support costs. It also allows us to set limits on the support of customizations - an untrained and uncertified developer can make a mess out of the Partner System, and often Partner is left to clean up the mess with no compensation. In contrast, Partner can confidently assist a certified developer or support a customer that uses custom software provided by a certified developer.