Skip to content

Instantly share code, notes, and snippets.

Last active Dec 27, 2015
What would you like to do?
codebender description


codebender is an open-source online IDE for Arduino developers, makers and engineers that incorporates many advanced development tools existing in other sectors of software development and brings them to the Arduino. Apart from that, being online makes it a powerful collaboration platform, where users can share code, clone other users’ projects, and collaborate in teams.


The objective of this assignment is to get the students acquainted with a real-world open source project and with established coding practices. codebender is comprised of a 4-5 independent subsystems, which communicate with each other via REST calls, so the students can also learn about architecture design, and get a clear idea of a clear, web-based system architecture. The end objective is to fix known bugs in the codebase, and after getting acquainted with the code, to start implementing new features such as collaboration, code completion in the IDE, premium features for users, or porting codebender to other platforms.


A good knowledge of PHP is a requirement. Knowledge of the Symfony2 framework is a plus. Depending on the area of work (frontend vs backend), the students might also be expected to know HTML5, Javascript &CSS.

Required Tools

All codebender services are built using the Symfony2 framework which is an MVC framework for building web applications with PHP, and can be downloaded here. For version control, the students will be using git, and the source code of codebender can be found on GitHub.

Getting Started

Once git and Symfony2 are installed, students should then try to get to know both tools. This guide is a good place to get started with Git. Symfony’s the Get Started section gives a clear idea about the framework. After getting to know those tools, a good starting point would be to select any of the components found on codebender’s GitHub page and get it running using the instructions.

What should I start working on?

codebender is a small open source project. That has the disadvantage that we don’t have a structured to-do list. We collaborate mostly on IRC, we fix issues as they arise, and it’s generally a more ad-hoc process. It also means that we have a more direct process, and we’re more open to suggestions, so we encourage students to suggest their own ideas. It’s best to discuss about existing bugs, the current roadmap and suggestions on IRC. We use the channel on freenode as the place where the team meets.

Here are some ideas from our current to do list to get you started:

  • Use a read-only Ace editor instead of a <pre> tag for the project view (i.e.
  • Extend library manager to work with all versions of the Arduino IDE (from 1.0.0 to 1.0.5)
  • Write Unit Tests with Selenium or similar project.
  • Write engine-agnostic DB populator using Doctrine, to populate the database with sample data, for installation/configuration and testing purposes

Project Success

Our goal is to get the students to work on real-world, active code, which has the ability to touch thousands of people around the world.

Some tasks will be easy, some tasks will be hard, but we measure success as having understood our code, and made an active, non-trivial contribution to it. The more you achieve, the more work you will be given to complete. And the more contributions you have to show to the world!

About The Instructor(s)

The main instructors will be Alexandros Baltas and Vasilis (tzikis) Georgitzikis. We are two of the original codebender team, and the co-founders of the open-source startup behind codebender. Alex graduated in July, and technically, tzikis is still a student, so we feel ya. You can contact us on if you have any questions, and we’re always free to chat about anything you want.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment