This is a non-exhaustive list of project ideas for Sketch-n-Sketch:
  • Sketch-n-Sketch is the core of our approach. It features a functional programming language, Leo, and a parser, an interpreter, reverse interpreters and an unparser. Look at the videos on the home tab of this website to get a better impression of its capabilities. Some ideas to improve Sketch-n-Sketch:
    • Create or import a lossless PHP parser and unparser to support PHP as a front-end language
    • Create or import a lossless Python parser and unparser to support Python as a front-end language
    • Support database reading and writing with ambigutiy.
    • Create automatic documentation of the prelude files from its source
    • Implement lazily computed values
    • Invent and use an import function to split the (currently huge) prelude library and load functions on demand.
    • Support for JavaScript as an alternative source language. Investigate a JS-source-to-source translation for implementing bidirectional programming (trace-based and/or evaluation-update approaches).
    • Extend SVG support to allow user-defined drawing tools, shape features, user actions.
    • Component Javascript framework: Sketch-n-sketch could be the perfect concurrent of React, Vue.js, Hyperapp or Angular.js. It just needs an API to create and mount components, where the state is the program itself.
    • Compiler to JavaScript: Programs could run 100x faster if they were compiled to native javascript before they were evaluated.
  • Editor is an HTTPS server serving dynamic pages written in Leo, HTML or Markdown. It offers the possibility to edit these pages. Some ideas to improve Editor:
    • Instead of reloading the new page, merge the modifications with the current user's modifications
    • Better UI toolkit: Design a context menu or toolbar to edit element attributes or styles, similar to the current hyperlink editor. We should also be able to select an element's parent.
    • Better editability: Currently, ENTER and TAB are mostly managed by contenteditable, which is not working as expected in most browsers, making it very hard to edit a webpage's content. We want to better interpret user's actions (splitting a paragraph, nested <ul>, copy and paste without adding spans, ...)
    • Interactive styling toolkit: Instead of changing only an element's inline styling attribute, we want to offer interactive ways to update also inline and external stylesheets.
    • Integration with github.io: Currently, Editor has to run locally. It would nice to design an online proxy that could open github.io's pages, and enable user to modify them online, using Editor's interface.
    • Hot reloading: Make editor detect when an html file being viewed is changed, and reload the page, possibly merging unsaved user's modifications
    • Database support: Enable Editor to view SQL databases and modify them.
    • Performance: send modifications to the page instead of the entire page
  • Hyde is a reversible build tool mainly for building static websites from sources. It is agnostic, in the sense the user has to configure a hydefile to explicitly frame how to build the final html files. Some ideas to improve Hyde:
    • Create a default hydefile to support Jekyll-powered websites, so that with Editor these sites become editable.
    • Similarly, create a default hydefile to support Hexo, Go hugo
    • Make hyde-powered github.io websites editable from the browser, online