Live Code Editor
This is the live coding environment developed for the Khan Academy Computer Programming curriculum. It gives learners an editor on the left (either ACE or our Blocks-based drag-and-drop editor) and an output on the right (either JS+ProcessingJS, HTML, or SQL).
You can find various demos in the
demos/ directory, and start playing immediately with the simple demo:
You can use the pre-built copies of everything inside the
build/ directory. If you wish to make some changes and re-build the library from scratch you'll need to install some dependencies:
git submodule update npm install bower install # Build the Ace editor files (This is usually *not* needed) cd bower_components/ace npm install node Makefile.dryice.js -nc
At this point you can make a fresh build, using Gulp:
gulp # Or if not installed globally: node_modules/gulp/bin/gulp.js
If you have an issue with "this.merge" is undefined, then rm-rf the handlebars that's inside node_modules/gulp.
The tests are in the
/tests folder. They use Mocha/Chai/Sinon. Gulp typically runs the tests when relevant files change, but you can explicitly run the tests with:
Please add tests whenever possible for any change that you make or propose.
How you can help
We have many open issues here. The top priority are those marked as regressionbug, since those are things that used to work. After that, the ones marked as browserbug may be the easiest to take on, and there are also plain old bugs. All the issues are tagged according to their environment, pjs, webpage, sql, or if they're generally about the ACE editor, editor. There are also a few bugs specifically about the demo pages, since those can get behind, and requests for more tests, since we can always use more of those!
Some aspects of the editor are in subrepos with their own issue trackers, like structuredjs and structuredblocks, so be sure to poke around those and see if they're more up your bug-fixing alley.
There are also a handful of ideas floating here from our community. You are welcome to take them on, but it's possible we won't merge them if we worry about their effect on the programming experience on Khan Academy, like if they may introduce backwards compatibilities or performance regressions.
We have no full-time resource working on the editing environment right now, so we will do pull requests when we find ourselves with time between other projects. We thank you for your contribution, even if we may be slow to acknowledge it at times. :)
How it works
For a deep dive into the components of the LiveEditor, read this wiki.
You can also watch these talks that the team has given about the editor: