Skip to content

Eval AI Study

Eval AI is an open source alternative to Kaggle, a data science contests platform.

The main objective of studying the Eval AI code source was evaulating the ability to use premade code to handle "contests" with multiple members participating in it and adding/contests by clients.

After studying the main backend and frontend of Eval AI I noticed the following points(not considered pros or cons): * The backend codebase is based on Django 1.10 and Django rest frameworks. * PostgreSQL is used as one big blob database that handles everything and the models handles working with all the tables(more on that later).

* Frontend is separated into legacy and v2, legacy being mainly based on vanilla js and V2 is based on a more moden and slick AngularJs with materials.

The backend Django apps running the rest backend are separated into: * Challenges * Hosts * Participants * Jobs * Web * Accounts * Base If Eval AI codebase is to be used the Jobs app will be useless to us as its main focus is to run as a middleware to run the contest code on an aws instance. However, I found the django apps in the backend to be heavily dependent on each other and stripping out the functionality of any app to be independent of the others to use in our own contest only application won't be easy.

The main reason for that is that most of the program's logic is how it deals with the fairly complex challenges models (a big zip file with many details about the contest and its data or how it's run) so that logic is intertwined with all the django apps running the rest backend.

Pros and cons

The pros and cons of using the Eval AI codebase as a headstart would be as follows from my own point of view.

Pros:

  • A headstart on the logic of holding a contest and adding participants to it.
  • 2 of the database tables can be used as is.
  • Endpoint urls are already predefined in django config.

Cons:

  • For the most part rewriting the logic from scratch will be easier than stripping down the complicated extra functionality in the django apps.
  • Frontend is written in AngularJS and backend is written in Python Django, neither of which I have personal experience developing in.
  • Most of the python code in the controllers is pretty inefficient specially the code in (challenges) with multiple nested loops in python.
  • Little to no database queries are used so the usage of a SQL database is useless.
  • Accounts app including: creation, login, recovery is done in templates not the main frontend or external auth so it'll need to be redone anyways.

Conclusion

My personal conclusion after studying the EVAL AI repository for fairly enough time and reading most of how the code works is that using the codebase or the repository won't be any useful, on the contrary it will take more time to use the prewritten code in the repository than do it from scratch (including testing). The main options are either looking for another contest hosting open source code to use the contest handling logic of or writing the whole application as a full stack app from scratch in a comfortable tech stack.

Authors: Mohamed Hisham
Back to top