Skip to content

Ideas List

Steven A White edited this page Feb 12, 2021 · 21 revisions

##Idea 1: Serialization Improvements (ProtoBufs) BioGears currently uses XML based serialization. We are interested in creating an equivalent JSON based serialization structure as a proof of concept for eventual inclusion in to BioGears. A perspective candidate will design a protobuf definition file containing a near 1 to 1 mapping of the existing CDM. The Candidate will work with the BioGears team to identify points of optimization by reducing the complexity of the existing CDM. A Successful project will then implement Marshall and UnMarshall functions for each type in the new CDM in self contained serialize classes. A template for this design can be found in the branch f/sawhite-seralization under projects/biogears/libbiogears/src/io. This template outlines creating separate factory functions for the existing XML based CDM and a perspective canidate will be guided to use a simaler to design when developing the serialization functions for the resulting protobuf based CDM. Finally Unittest will need to be developed using the existing Biogears infrastructure to prove the ability to inflate and deflate all CDM types.

##Idea 2: Remove Replace logger implementation with C++17 Native features BioGears currently depends on a Thirdparty library named Log4Cpp the library is not fully utilized with in our code base and is an ideal place to remove third party dependency needs. A Candidate will need to review the features logging implementation contains and outline how each implementation will be implemented using and .

##Idea 3: Polishing up Python Bindings We are currently expanding on the work done by https://github.com/vybhavramachandran/biogears-vybhav. We have a standing branch f/sawhite-pyhooks which is in the process of adapting the work done by vybhavr and implementing a complete python binding for most of the Biogears API. A sucessful project will produce python based unittest for each binding and finally re implement a selection of the HowTo-* currently available in BioGears using the new bindings. This is an ongoing project in BioGears and a goal of our 8.0 release so the candidate will work daily with users of the BioGears team discuss the direction of the project and how to make the bindings the most pythonic they can be while retaining the full versatility of the C++ API.

##Idea 4: Implementing C# Language Bindings BioGears is interested in creating a Unity plugin for the BioGears API to match our existing Unreal Engine 4 Plugin. The first step to this is to develop a C# library which exposes most if not all of the BioGears API allowing for a Physiology Engine to be created advanced and modified using process_action. The team currently believes the best approach for this is to generate a C API which exposes create/destroy functions for most types in BioGears and replicates the class function for each type. The next step would be to wrap the C# API in C calls which are easy to cross language link and can be reused for additional language bindings like Rust and Go. A relevant proposal will review other methods of creating C# language bindings and discuss the pros/cons of each approach along with suggest the route the candidate will make over the project period.

Clone this wiki locally