1. 24

  2. 8

    Hi Lobsters. Someone on HackerNews recommended we share our work here. We’re building an experimental software development paradigm. It’s a structured cloud IDE designed around the ideas of functional programming and serverless architecture and built to reduce barriers to entry and increase developer efficiency.

    We wanted to see if we could reimagine the software development process in a way that would be more automated and assistive, less redundant, and more flexible. Drawing heavily on the concepts of functional purity, static typing, and statelessness, our premise was to design a simple, “low power” representation (i.e., AST) that serves as an easily manipulated backbone for storage/analysis, and then build a structured editor on top of it that allows for very flexible syntax and syntactic sugars. The simplified central storage allows us to offer refactoring, debugging, optimization, and reuse assistance that is often limited by traditional text-file-based editing.

    The url is a tour of the concept that ends in a sandbox where you can play around.

    A few things to note:

    • Editing. The editing is structured, so there are no syntax errors (e.g., no mismatched braces). The editing is also propagational (i.e., if you rename or delete something, that change is propagated everywhere that applies). We have built distinct mouse vs keyboard paradigms. You can double-click to see menus, or you can use keyboard shortcuts. (Look for the keyboard legend button for details).
    • Deployment. Current focus is on microservices as this was the most universal, easiest to implement deployment. But native apps and HTTP servers are in the works.
    • Progress. What we have is very much a work-in-progress, but it’s enough that we wanted to share and get some feedback.


    feedback email | beta release signup | blog

    1. 7

      It’s a very worthy goal, and my hat is off to you and really anyone who gets into this area of research, personally I do think it is the future.

      I’ve run similar experiments using the AST as the primary editing medium and there is so much to like about it.

      We were trying it once back at Microsoft on the C++ AST, it was pretty neat… zero time compiles at least for debug builds since we could simply execute the AST itself. Pretty fun.

      Charles Simonyi even left Microsoft to work on just this and created Intentional Software. He had a nifty editor that could render in a number of languages, buf it certainly wasnt cloud based or modern, but then it goes back a long time.

      Another friend of mine, is making a project called MakePad. That is an absolutely gorgeous editor that works at the AST level aimed at teaching kids WebGl. Definitely worth checking out.

      Personally I’m doing a lot of research in the area of extensible meta-circular semantic protocols and object models. This work ties in very nicely as well with these kinds of ideas.

      I’m very interested and impressed with your project and look forward to seeing your progress.

      Very nice work!

      1. 3

        Thanks for the encouragement!

        We see so much promise in this concept of editing, and the separation of concerns between storage/view/edit. The more time you spend on it, the more you realize that so much of what is baked into a language can just be considered sugar. It would seem we should be rigorous about what is defining logic and what is making the logic easier to read or write.

        We welcome the comparison to Simonyi — his work has been suggested to us before. We definitely consider it auspicious to be standing on the shoulders of such giants. I think you are right that since his efforts, cloud infrastructure has really opened up many possibilities on this front.

        Where we think we can really add to the picture is through the incorporation of more functional/purity/stateless concepts. Once you start paring down the AST because you have relegated much to sugar, you end up with a structure that is very amenable to analysis. Adding functional purity and referential transparency to this equation enables not just structural analysis but also behavioral analysis. We are excited at the idea that in real-time we could alert a user that he has written a function that is identical to however many more across the world, either through structural analysis or through empirical behavioral analysis. We think this could dramatically increase reuse and reduce redundant work.

        The teaching angle is an interesting one. There definitely seems to be a lot of momentum toward visual coding aimed at teaching kids early. We’ve considered the possibility that our project could be applied as an instructional environment, letting students learn the concepts of coding without struggling with the command line and other integration/configuration headaches.

        We are definitely looking for users and advisors at this stage, so we’d love to chat further and get more of your thoughts/feedback! We’d also be interested to learn more about your research, which sounds very applicable.

      2. 4

        Woah, this is so cool.

        1. 1

          Thanks! We’d love to hear more of your thoughts. There are a lot of directions we can take the project and we want to know what the community finds interesting and useful.

        2. 1

          The tour seems to be down to me, after choosing a language it keeps showing a loading animation.

          1. 1

            Sorry about that!! We were experiencing high load. The issue should be resolved now!

            1. 2

              Thanks, works now. It’s certainly an impressive product. The different syntaxes feel a bit cute, though I see the advantage when getting programmers with different backgrounds up to speed. But in the end, the limitations of a purely functional model are likely to end up confusing with an imperative Java-like syntax, don’t you think?

              Oh, and the gray dots in namespaced identifiers don’t invert colour when highlighted, barely visible on dark blue background.

              1. 2

                It is certainly valid to frame the “language inspired” syntaxes as a crutch to get people on board with the vision. And certainly the further a language falls from “pure FP” on the language spectrum, the less idiomatic the representation in a given language will be.

                That said, we have a bunch of “imperative sugar” (that is not yet exposed in the sandbox) to try to ease the adoption for those coming from different backgrounds, such as representing do/while/for loops as specialized maps/folds.

                And while Java or similar may be the “gateway language”, we hope the more someone buys into the overall vision, the less important any particular syntax becomes.

                And we added the namespace bug to our issue tracking. Thanks for the feedback!