pyIATI – a developers’ toolkit for IATI

  • Sept. 27, 2017

We spoke to IATI developer, Dale Potter about pyIATI – a developers’ toolkit for IATI

What’s pyIATI?

pyIATI – a developers’ toolkit for IATI (pronounced pie-at-ee) is an open-source library of reusable code in the programming language Python. We are going to use it over time to integrate new and existing IATI tools for improved stability and adaptability. We also hope that other software developers in the IATI community will use it for for publishing and using data.

Why is IATI’s tech team creating pyIATI?

IATI tools (including the Datastore, Dashboard, and the Validator) often experience issues. When they do, it can take a long time to fix.

These tools are also difficult to adapt to the changing needs of our users. This is mainly because our existing underlying code base was built to get IATI up and running but is now complex and not flexible enough to evolve with IATI’s current and future demands. The code for our 15+ tools and services is written in at least six languages to a variety of coding practices. This makes it hard to accomplish general maintenance efficiently.

As part of section 3A (Technical infrastructure) of the IATI workplan, we’re creating pyIATI to provide a library of robust code, written to industry standards of best practice, as this is needed to create and better maintain new IATI tools.

Who is pyIATI for?

pyIATI acts as a software toolkit for both IATI’s technical team developers and external developers in the IATI community.

Put simply, the purpose of creating pyIATI is to provide reusable components to build IATI tools. With pyIATI, developers do not need to re-invent the wheel and create components from scratch – reusable components are ready-made to a robust, standardised specification for anyone who wants to build new tools or repair and maintain existing ones.

How will pyIATI benefit developers working on/with IATI tools?

  • Faster creation of tools: a wide-range of features in the library will eliminate the need for developers to write their own basic features from scratch each time they create or update an IATI tool. No more re-inventing the wheel.
  • Easier to make changes to tools: because the code is reusable it will be easier to make fixes, provide updates and make changes to a wide range of tools to better meet user needs.
  • More robust: writing pyIATI to standards based on industry best practice means potential issues are caught early, and anything that does slip through can be fixed faster. Crucially, fixes to these issues will also be less likely to introduce unexpected new problems.
  • Consistency: pyIATI is a ‘to-the-letter’ implementation of the IATI Standard. Therefore, users of the tools built using pyIATI can expect them to work in a consistent and predictable manner as part of a stable ecosystem, especially for the more complex components, such as IATI Rulesets.
  • Learning from other IATI developers: feedback, suggestions and contributions can be made to pyIATI through Github, allowing members of the community to learn from each other.

Overall, how will IATI publishers and data users benefit from pyIATI?

As further work on the library is completed and integrated into new and existing tools over time, users will experience fewer problems with IATI tools and websites. When issues do arise, they can be fixed more quickly as the library has long-term use and maintenance in mind. Also, tool developers will have a consistent foundation to work with the IATI Standard and IATI data more quickly and easily.

Where can I find more information about pyIATI?

For more detailed information, see our original post on IATI Discuss: Introducing the IATI Python Library