Common specification for clients producing events
- Our products detect data in the form of events, and send these events to our event platform.
- We want to avoid a situation where data from different products cannot be compared due to differences in the way that the data was collected.
- It is impossible to use a single implementation to cover all products.
In order to solve this engineering challenge, we will create a common specification for all "event platform clients" to follow. An event platform client is just a software library that produces events to our event platform. Such libraries currently exist in iOS, Android, JavaScript, and PHP.
The specification will be used as a guide to re-factoring the existing client libraries during the necessary upgrade to produce events to EventGate rather than EventLogging. It will also serve as a foundation for documentation of the system, and a technical structure on which to build and organize analytics practices across the product organization.
Sections
The specification is organized into sections, each covering a functional unit of software. These are:
- Buffering - buffering events or HTTP requests
- Identifiers - generation and formatting of identifier values
- Sampling - determining whether an instrument is in or out of sample
- Streams - the stream abstraction and its management
- Debugging - tools for developers to inspect behavior during testing
- Integration - functions that couple the library to MediaWiki
More may be added as the need is identified. Each section is tracked by a separate ticket. There are corresponding tickets for the implementation of these sections in each of the target platforms.