Grant Proposal: Google TensorFlow API Bindings for Perl (John Napiorkowski)
Mon, 11-Jul-2022 by
Jason A. Crome
edit post
## Name
John Napiorkowski
## Amount Requested:
The minimum budget for this project is $8,800 USD
## Synopsis
This grant proposal is for the development of a Perl API to Google TensorFlow, a software library for machine learning (ML) and artificial intelligence (AI).
TensorFlow is generally considered to be the most mature and well-supported ML/AI library, and will benefit the Perl community tremendously.
## Benefits to the Perl Community
Most new software development projects tend to incorporate or utilize machine learning in some way.
Most machine learning libraries, including TensorFlow, provide a well-documented Python API with example Python applications.
Thus, due to these (and other) reasons, most new software projects are implemented using Python or some other non-Perl language.
The availability of a fully-featured and up-to-date Perl API for TensorFlow would have far-reaching and long-lasting effects on the Perl community.
To begin with, software developers will be able to much more easily convince corporate management to adopt Perl for new software projects requiring ML/AI.
Secondly, students and teachers alike will be empowered to teach Perl in ML/AI courses at countless high schools, colleges, and universities.
Third, open source Perl developers will have essential new tools for working on brilliant breakthroughs in ML/AI software, to the benefit of all humanity.
Fourth, the overall creation of new Perl ML/AI projects and educational courses will naturally result in the critically-needed creation of new Perl jobs.
Last but not least, new corporate projects using Perl ML/AI will also translate into new corporate funding and sponsorship for Perl non-profits such as TPF.
## Deliverables
An implementation of Perl API bindings to all applicable symbols in the TensorFlow C API, using FFI::Platypus from CPAN.
A comprehensive Perl test suite with automatically-provable coverage for 100% of the Perl API, using Test2 from CPAN.
A carefully-written and explanatory collection of documentation with coverage for 100% of the Perl API, using normal POD fully compatible with CPAN.
A small collection of user-friendly example Perl applications, using popular TensorFlow components to effectively showcase the Perl API.
A public GitLab repository with all source code and components of the Perl API, including unstable or experimental components.
A public CPAN distribution with all stable source code and components of the Perl API.
A public DockerHub repository with all stable source code and components of the Perl API, along with all dependencies, ready to run out-of-the-box.
The TensorFlow C API does NOT yet support gradients, functions, and control flow operations. These features will be addressed in future grant proposals.
This grant proposal specifically does NOT include any re-implementation of TensorFlow's Python layer, such as NumPy NDarrays or Keras, which is far beyond the scope of a single grant and will be addressed in future proposals.
## Project Details
All the technical details of how a TensorFlow API should behave and how to implement it in Perl can be found at the following websites:
* https://www.tensorflow.org/api_docs
* https://github.com/tensorflow/tensorflow
* https://github.com/tensorflow/docs/blob/master/site/en/r1/guide/extend/bindings.md
* https://github.com/tensorflow/tensorflow/blob/master/tensorflow/c/c_api.h
* https://metacpan.org/pod/FFI::Platypus
* https://metacpan.org/pod/Test2
## Project Schedule
Total development time is estimated at 60 to 90 days, with the normal disclaimer about the difficulty of predicting software project durations.
During the first work cycle of approximately 30 days, implement the initial Perl API.
During the second work cycle, implement the Perl test suite.
During the third work cycle, write the Perl documentation and implement the Perl example applications.
If a fourth work cycle is required, continue until the public releases on CPAN and DockerHub are complete.
## Completeness Criteria
This grant is deemed complete when all the above-listed deliverables are reviewed and accepted by the official TPF-assigned grant manager.
## Bio
I'm a prolific CPAN author, with [86 distributions so far](https://metacpan.org/author/JJNAPIORK).
I've been one of the core maintainers of [Catalyst](https://metacpan.org/release/JJNAPIORK/Catalyst-Runtime-5.90126/view/lib/Catalyst.pm), the premier Perl MVC web application framework, for over a decade.
I'm an active and dedicated member of the Perl community, including long-term participation at TPF-sponsored events such as [The Perl Conference](https://www.youtube.com/c/YAPCNA/search?query=napiorkowski).
I live outside of Austin, Texas with my family, pets, and farm animals.
Comments (3)