Inspiration
After viewing multiple open source projects on platforms such as GitHub, we realized that there are many projects that do not allow for multiple programming languages. For example, developers with a background in Java may not be able to contribute to a C++ based application. Open source is all about inclusivity. We wanted to engineer a method to allow all developers to work on any open source project that they desire--regardless of the language. We developed Otto the Slack Otter Bot using the framework that we built.
What it does
The framework gives a way for any language to create objects and call methods from other languages. First, a language registers a class, along with its methods. Once a class is registered, any other language can create an instance from the class, and invoke its methods. Objects are in a shared pool, so multiple languages can use the same object. The modular design allows for new languages to be easily added. We currently support Java and Python.
Using this framework, programmers can write in their language of choice, while being able to work with other programmers, who are also writing in their preferred language. One could also use this to use various libraries from different languages. For example, one could deal with data processing in Python using Numpy, while using the structure of Java or C.
Otto the Otter Bot is a Slack Bot in the HackIllinois2019 Slack workspace that provides users with financial and health advice. Otto has components built in Python and in Java, and uses the language framework to combine the two sections.
How we built it
The language framework core is written in java, with a java and python module. To add another language, one must simply write a plugin for that language, which implements some basic methods. Internally, these use threading, socket, and JSON libraries.
Otto uses the Rasa open source API as its foundation. Using tools such as Tensorflow, spaCy, and a webhook, users can communicate with Otto through Slack.
Challenges we ran into
Figuring out the best way to host Otto (whether it be server or local based) and how the front end should look was the most difficult part of the bot's development. Several designs were discussed, including running Otto on a server with a custom iOS/Android app that communicated with him. Slack seemed like a better option due to time constraints and the fact that all hackathon attendees were registered on Slack.
Accomplishments that we're proud of
The Open Source mission of HackIllinois inspired us to develop a completely Open Source application from that ground up that would have contributions from multiple people. Not only is Otto built using completely Open Source code and libraries, we have already had pull requests to add to his feature set. Through the development of Otto, we were able to introduce people who had little computer science experience to Open Source development. A few people who are interested in our project were able to make contributions and have pull requests to our project. We were also able to introduce them to the Git workflow. We're proud that Otto is able to not only help users learn on the front end but also on the back end.
What we learned
We learned a lot about Open Source development, and the excitement of working with other developers to create a product that solves problems. We learned new technologies along the way from Tensorflow to Slack's bot services. We also learned a lot about the internal workings of languages. The skills we learned from HackIllinois will carry with us into the future and as we expand upon Otto and his cross compatible framework. We also learned
What's next for Otto the Otterbot
In terms of Otto's framework we expect to expand the languages compatible. We currently support Java and Python and will add more.
Log in or sign up for Devpost to join the conversation.