Definition
The IOx SDK is defined as a set of tools and software used by 3rd party developers to enable their applications to execute on Cisco's IOx enabled platforms.
The SDK provides different components that allows developers to:
- Build, Package and Test Applications
- Select and produce packages for a specific set of platforms (or family of platforms)
Goals
The main goals of the SDK are to:
- offer 3rd party Software Developers a comprehensive SDK to develop, test and package applications to run on Cisco IOx devices
- provide a complete and standard Linux Runtime Environment for those Applications
- allow flexibility and convenience to Application Developers to alter/customize the development workflows
Key Guidelines
- Simplicity: Simple App should simple to build, test, package, deploy and run
- Commonality: Application developed using high-level programming language should be portable
- Modular: The SDK should be developed in an incremental way where adding platform support and tools should be straightforward
- Layered: Developer can use/reuse the SDK as a stack; if the higher level set of APIs/tools are not raw enough, go down a level until it is suitable
- Work out-of-the-box: Should be plenty of examples and scripts to simply get example working out of the box
- Flexibility:
- Should allow the developer to build their applications the way they want - shouldn't be a rigid framework that they have to conform to
- The use of the SDK (tools, scripts, tool-chain), should easily be integrated by IDE, makefile or even scripts - this should be be done through the use of environment variables (IOx specific and PATH).
Overall Usage
The user of the SDK must be able to perform many different tasks in order to get the right software to a package to be deployed on IOx devices.
At a high level, here are the main tasks:
- SDK Management Tasks
- Install the SDK on a development machine
- Update/upgrade the SDK
- Add PSPs and LDSPs
- Application Development Tasks
- Used the SDK to develop (build, compile link) and package an application
- Open Source Tasks
- Build FOSS components
- install/add components to application image
- Linux Distro Tasks
- Select component for the system image
- Modify kernel configuration and recompile
- Develop kernel modules