Skip to content

Commit

Permalink
Road map
Browse files Browse the repository at this point in the history
  • Loading branch information
mattgodbolt committed Jan 18, 2017
1 parent b72bd48 commit 70c2132
Show file tree
Hide file tree
Showing 2 changed files with 83 additions and 1 deletion.
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Try out one of the demo sites: [C++][cpp], [Rust][rust], [D][d] or [Go][go].
[d]: https://d.godbolt.org/ "Compiler Explorer for D"
[go]: https://go.godbolt.org/ "Compiler Explorer for Go"

### Developing
### Developing or running a local instance

Compiler Explorer is written in node.js.

Expand All @@ -33,6 +33,8 @@ The config system leaves a lot to be desired, I'm working on porting [CCS](https
Feel free to raise an issue on [github](https://github.com/mattgodbolt/compiler-explorer/issues) or
[email me directly](mailto:matt@godbolt.org) for more help.

There's now a [Road map](Roadmap.md) that gives a little insight into future plans for Compiler Explorer.

### Credits

Compiler Explorer is maintained by [Matt Godbolt](http://xania.org). Multiple compiler and difference view was
Expand Down
80 changes: 80 additions & 0 deletions Roadmap.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# Compiler Explorer Road Map

CE was started in 2012 to serve my needs at [my company](http:/drw.com) in terms of showing how
C++ constructs translated to assembly code. It started out as a `tmux` session with `vi` running in one
pane and `watch gcc -S foo.cc -o -` running in the other. Since those days it's now a public website
serving the C++, Rust, Go and D communities and performs around 20,000 compilations per day.

This document is an attempt to capture thoughts on the future direction of Compiler Explorer.

## Areas to improve

### Mobile client support

CE's UI doesn't work well with mobile clients. The editor doesn't work well on many mobile clients, and the
layout doesn't lend itself well to small screens.

Ideas for improving mobile support include automatically folding up all the panes into a single tab upon
detection of a mobile client. This would require a bunch of fixes in the
underlying [UI library](http://golden-layout.com) as this doesn't properly work with mobile and tabs.

Perhaps a read-only simplified view would work better: the main reason one brings up the CE website is to
look at tweeted links rather than author content.

### UI improvements

The UI has a number of things that need improving:

* Multiple editor windows
* Saving and restoring from browser-local storage
* Handling the loss of data if one has a work-in-progress CE window open and then clicks another CE link.

### Diff view

A frequently requested feature is to be able to diff output. A large patch was provided by @Voxelf which
helped spur on the development of the new UI, but the diff view he created has yet to be merged. There's
a possibility that moving to the [Monaco](https://microsoft.github.io/monaco-editor/) editor will not only
give a better editing experience, but also bring pretty much free diff windows out of the box.

### Execution support

Another big ticket item is to allow executing of the user's code. This is fraught with security issues, and
brings up a number of UI and API considerations. Compiling code every time to execute with different params
seems wasteful, so caching seems good; but in a multi-instance setup a shared cache woudl be needed. Perhaps
a backend system that caches the executables (and makes them downloadable; at least for some compilers where
license allows), and stores the binaries in ephemeral, shared storage. This same backend system could also
be used to store code, and could be part of a whole new way of sending and sharing code (if made permanent
storage).

### Support more compilers

Most of the open tickets are to do with adding new compilers, or fixing issues with existing compilers.
Continuing to add more compilers and make it easier for others to submit PRs to add new compilers is
very important.

## Tensions

There's an inherent tension between the standalone, run-it-yourself version of CE and the scalable, AWS-backed
CE instance. Care must be taken to keep the standalone version usable, not least as the majority of CE's
development is done on a laptop during a commute (with little or no internet access).

## Priorities

Above all, the priority is to keep the main CE site up, stable and dependable. After that, features are
added honestly in the order that is most useful and interesting to the primary developer (Matt Godbolt).

## Non-goals

CE will remain ad-free, open-source and non-commercial. There's no plans at all to add "freemium" content.

## 2017 goals

With all this in mind, the tentative goals for 2017 are:

* Move to the Monaco editor
* Implement diff view
* Come up with a decent secure solution for code execution
* Design an API that can handle remote code execution and download needs
* Implement remote execution UIs

These goals will be refined as time ticks on.

0 comments on commit 70c2132

Please sign in to comment.