Dev Diary (November 2016)

Corey Montella - 06 Dec 2016

(Eve is a new programming language, and this is our development blog. If you’re new to Eve, start here)

With the launch of Eve v0.2 at the end of October, the early weeks of November were spent reacting and responding to feedback from new users to the ever-growing Eve community. Still, we managed to make some pretty big changes to Eve this month, so let’s get right to it!

What’s new in Eve Alpha v0.2.2?

We’re starting to become more serious about version numbers and releases, but we don’t have a fixed release schedule yet. This release was triggered by the addition of the Eve npm package, which adds enough features to Eve that it’s worth highlighting them. For a full list of changes in v0.2.2, check out the [release notes][1.1]. We’ve got several highly requested features in there for you. Let’s take a look at those in detail.

Eve npm package

We published a package for Eve on npm, so you can now install Eve like so:

npm install -g witheve

This will give you a global Eve installation that you can invoke with the command eve from anywhere. Doing so will start an Eve server, in the same way npm start currently does. (Note: be sure to install witheve, as installing eve will give you a different package)

Workspaces

We’re introducing the ability to run Eve in a custom project workspace. To create a new Eve project workspace, create a folder with an empty file named package.json then start Eve from within this folder. Eve recognizes that it’s starting in an Eve project, and will serve *.eve files from within this directory instead of the Eve examples folder. Furthermore, you can serve various assets, like images or CSS, by placing them in an “assets” sub-folder.

Server Mode

Now, Eve can be started in server mode using the --server flag:

eve --server

Without this flag, execution of Eve programs happens within the browser, with the Eve server acting as an intermediary between the browser and your local system. In server mode, Eve will instead execute your program on the server. Currently written programs will operate exactly as before, but this is a preliminary step in order to get networked Eve applications going (like a chat server or a multiplayer game). There is still work needed to be done there (currently in review), so stay tuned for more!

Deploying Eve Apps

Eve npm

This is one of the most requested features to date, so we’re happy to bring it to you! You can now run Eve applications without the editor, which should pave the way to deploying them on your own server. You can specify which Eve program you want to run after the Eve command:

eve ~/myEveDir/myEveFile.eve

Now you can navigate to Eve in your browser to access the specified program. If you like, you can also recover the editor with a flag:

eve ~/myEveDir/myEveFile.eve --editor

This will run the supplied Eve program with the editor visible.

Standard Library

The standard library still needs a lot of work, but thanks to our intrepid community we made some great progress on adding basic functionality.

  • Added support for the vast majority of HTML/SVG tags (thanks @frankier!)
  • Added urlencode[] (thanks @renegr!)
  • Achieved parity with Javascript math library functions and constants (thank @Cormac-Williams!)

There’s still a lot of work to do here, so let us know if you’re missing some basic functions that could easily be added.

Community

It’s been a month now since the launch of Eve, and we’ve been thrilled by the response so far. It seems like I say this with every new dev diary, but every day we receive more issues, pull requests, and especially Eve programs that are getting increasingly sophisticated.

With a fast growing community though, it’s tough staying on top of everything, especially with a small team like ours (we’re only 4 developers here, if you didn’t know!). Thankfully, our great community has been picking up the slack, answering questions on the mailing list, tracking down issues, identifying and implementing improvements, reviewing pull requests… the list goes on. So a very special thanks goes out to our contributors this month:

frankier, Cormac-Williams, renegr, gamebox, mpj, olafleur, beliharz, yshalabi, jonnor, esoeylemez, claushellsing, gilrosenthal, matthiaslange, pragmatrix, eobrain, austinlyons, shamrin, nmsmith, Skinney, cgarvis, vickychijwani, and thomaswrenn.

Developing with the Community

Surprisingly, one of the biggest changes to happen to Eve last month was our development process. For the past two years, we’ve been developing Eve in the open on GitHub, but many day-to-day details were sequestered in the Kodowa office. This was mainly for timeliness; discussing implementation or design details face-to-face is much faster than an asynchronous discussion on GitHub. But it also meant that the community really couldn’t participate in developing with us. With the release of v0.2, all that changes, as we are being much more deliberate about making the development of Eve transparent and open. Here are the ways we’re improving our community-focused development process.

  1. The main Eve repository can only be updated through pull requests. This applies to everyone in the office as well, which means every change to Eve is now based in a PR that gets reviewed and tested. Hopefully this leads to higher quality code and fewer broken builds, but it also means we’re creating a log of all the work done on Eve; the changelog above is just a listing of all the PRs since the last release.

  2. Everything is tracked in issues. If a bug is found we immediately make an issue for it. If we discuss a feature that’s needed, we make an issue for it. This way, anyone looking to contribute to Eve can come into the repository and find ways to contribute. We’re starting to label and categorize these issues, so beginners can find an appropriate issue to start working on.

  3. We’ll be refactoring the Eve codebase to make it more beginner friendly. Speaking of issues, that process is already tracked: [632], [609], [608], [510].

Top Feedback for Eve

Now that Eve has been in general use for a month, we’d like to hear your top 3 pieces of feedback for Eve. This feedback can relate to the language itself, the syntax, the editor, the community, or anything else really. What’s working for you, what’s not? What’s the biggest feature you’re missing? Which feature has been the best? What’s surprised you the most? You can read feedback others have posted in the mailing list, and be sure to add your own!

Puzzles & Paradoxes

One member of the community, William Taysom, has started writing a series of posts on the mailing list looking at some of the trickier corners of Eve. For example, how do you get the count of 0 records? What does the per attribute do in an aggregate? Every day William is posting a new puzzle, and a solution to the previous day’s puzzle. Here are the puzzles to date:

  1. Puzzles & Paradoxes I: How do you count #nothing?
  2. Puzzles & Paradoxes II: What is the PERpose?
  3. Puzzles & Paradoxes III: Overcommitted
  4. Puzzles & Paradoxes IV: Overbound

They’re becoming increasingly complex, so these puzzles might end up becoming a tutorial on their own.

Eve Around the Web

Another member of the community, Liron Shapira, has been writing a series about Eve on the website Hackernoon. It’s a 6 part series, with parts 1-5 out now:

  1. How Eve unifies your entire programming stack
  2. When logic programming meets CQRS
  3. Throwing off our scope chains
  4. Smalltalk and protein programming
  5. The rock-solid foundation for Eve’s big vision

Part 6 should be coming soon! The first post in the series got a little attention on HN, so you can read the comments if you’re interested.