[Open Source Project] A binary executable system for providing dependencies for cross language/framework compatibility
Tags: opensource, tooling, startup, programming
Published: 2022-02-19 16:19:14

## Introduction
Software applications are built majorly on their language dependencies/modules. These dependencies/modules are tied to the language environment and not flexible enough to be used in another language environment. For example, a file converter module available on npm can't be used directly in a PHP project, you would have to use an equivalent module/dependency in composer or serve its feature through an API system.

A binary dependency system can help bridge these gaps and create a new way to work around dependencies across languages. Binaries (executable console applications) can be created as dependencies and then any backend application or software can execute these binaries and get results directly from the executed binary into their application. The response and output can be formatted using the language core libraries and also these binaries can be sorted into a common folder.
This common folder would contain the binaries and wrappers that help execute and return responses from binaries into a backend application or software.

With a central binary module system, this will help:
 - Create a global repository that can be used across different languages and frameworks.
 - Open a new world to application development: Software developers (regardless of language source) can build console applications as binaries modules and shared to a global repository.
 - Provide flexibility for projects: Projects built on binary dependencies can port to a new language or framework without worrying about recreating or searching for equivalent modules in the new language or framework. They can directly integrate the binary modules they used in the old project.

## Relevant Technology

1.  **Package Publisher Website ( Web )**
Github can be used as a code repository, software developers who create binary dependencies can provide the configurations of their binaries, create their usage and then publish on a web platform created for binary module publishers.


2. **Package Management Software  (Desktop Application)** 
This will work like other package management systems e.g npm, composer, etc. It will be used to pull binary modules and their dependencies and also link them to your project. A module.json file (this will include all the module names and configurations)  will be required at the project root.

3. **Documentation**
Proper documentation is needed for the project and all sections of it

## Project Test Case
A simple binary module created in **Go lang** for generating hashes (md4, md5, sha512, etc) was published [here](https://github.com/iNerdStack/crypto-cli) and used as a test case for the project.

The module was created with a custom wrapper to use the modules directly in the projects below:
1. [Laravel PHP](https://github.com/iNerdStack/Paravon-Laravel-PHP)
2.  [Node Express](https://github.com/iNerdStack/Paravon-Node-Express)


## Summary
The project test case was a success and was able to function without any error on live hosting like Heroku. We hope to bring more developers to join this project to help share their experience and skills to make the project beneficial to everyone