New year, same old plans

31 Mar 2019 - Pratik Karki

The present…

The last time a major release of Light Table was in early 2016. It’s been 3 years. 3 years is a lot in developers time. Since, Light Table’s last release, vscode has developed from 0.10.6 to 1.32.0. Amazing development happened in La La Clojure Land too, Clojure evolved from version 1.8.0 to 1.10.1-beta while ClojureScript developed from 1.7.228 to 1.10.516. I don’t want to start on mentioning the advances on La La JS land, because it’s too much. It’s even been 2 years to last blog post by Scott Bauer in which Scott had awesome plans to continue development of Light Table.

Introduction…

Most of the early users of Light Table have left Light Table and taken sanctuary in other editors. Same thing happened to me. While starting to learn Clojure and Clojure/script couple of years back, I found out Light Table.(Though, I was an emacs user back then.)

I tried Light Table and loved it. Then, while working on some other projects, I found Vim productive and have been using it. During 2018, I came across Light Table once again.

I had to write Clojure in a friend’s machine and I didn’t have enough time to configure editors. So, I decided to use Light Table, while downloading it, I noticed the same old version, which I had used. No new releases.

So, at the end of ‘18, I decided to give back to the community and contribute to LT, since, LT is a wonderful editor, I decided to update it. I created a pull request, and notified the current maintainer Scott, I thought, there weren’t harder problems to update LT. But, while working on the electron update, I began to notice, larger problems. Since, updating and actively developing LT, was our common goal, Scott decided to pass the torch, and make me the new maintainer of LT.

Action…

So, I started to work on LT mostly during weekends, I added @Mouvedia as a collaborator, to help me categorize the issues so, that I can focus on updating LT. Now, while updating LT, these are the three crucial updates(not in that order):

  1. Electron
  2. CodeMirror
  3. ClojureScript

LT uses 0.0-2138 version of ClojureScript and 0.34.5 version of Electron. And both have undergone tremendous changes since then. The current road-blocking problem I’m facing is not of electron but of ClojureScript. The “inline evaluation” feature which we love of LT, is affected while updating ClojureScript.

I’ll speed up developing process during this April, as I’ll be working somewhat full-time to update LT. Hopefully, by the end of April, we can cut a new release. Additionally, I’ll be updating this blog series on my progress, weekly so that, LT users, can know beforehand about some regression or feature enhancement.

Stay hungry, stay foolish.

P.S. I’ve created a new repo in Light Table called townhall. This repo will store all the issues and this will be the place, where feature requests would be voted and planned by LT users. The issues section on the main LT repo would be to track vulnerabilities in LT.

-Pratik

Light Table Roadmap - 2017

27 Jan 2017 - Scott Bauer

Light Table has grown quiet as of late and we aim to bring a much needed update on what our next steps are. The Core team: Magnus, Gabriel and myself (Scott), have discussed these steps which fall under two main categories: Immediate Future and After That.

Immediate Future

Work in the short term is about documenting, updating, and stabilizing Light Table. Essentially, we need to make working on, and contributing to, Light Table easier. Few are willing to spend hours frustrated over something that should be trivial.

Let us be clear: If these tasks are not met then the project will continue to stagnate.

Migrate docs to Gitbook

Rather than spend effort maintaining our current user docs, we are migrating all guides and tutorials to Gitbook.

Documentation

It has been an ongoing need for a long time and a constant pain point. Documentation is one of our highest priorities.

We intend to take a three-pronged approach towards documentation:

  • Improve the User Guide
  • Create a Developer Guide
  • Document our API

Magnus has produced a great guide for the Elm plugin and is spearheading work on the Developer Guide.

I have been pursuing documentation for the API. Our API docs site will now render with markdown.

The User Guide has been ported over to Gitbook from docs.lighttable.com, merged with some wiki pages, and is undergoing updates before we replace the current User Guide.

Update Core Dependencies

This is another strong pain point. Our Clojurescript version is badly out of date. Our Electron version is out of date too. We adopted these technologies while they were young and there has since been breaking changes. They are fundamental to our project and require a deep knowledge of Light Table internals to update. They are also fantastic and deserve to be at the latest. The out of date dependencies have caused stagnation and are blocking significant possible improvements.

Once Clojurescript is updated then the Electron update will be handled, finally followed by CodeMirror.

Note: Expect possible breaking changes to plugins due to these updates. Should this occur, we will provide advanced notice.

Outstanding Pull Requests

There are a number of outstanding pull requests. A few of them have been lingering for some time. We will be either merging or closing them.

Fix Updating

Not that you would notice if 0.8.1 was your first encounter with Light Table, but it used to be possible to update Light Table when a new version was released. Since there have not been any releases this has not been an issue, but will be in the future.

Regular Releases

As the number of maintainers and contributors of Light Table can highly vary, as well as their availability, we will no longer be making firm commitments as to what will be in each release. Instead, we will simply release what has been done since the last release. Sometimes this will be a lot… sometimes not. We are still deciding what frequency we aim to release with and will announce once we decide.

After That

Once the above has been taken care of, Light Table will be in a solid position to encourage new growth and innovation. Areas to focus on at this point are as follows.

Testing

We need to catch bugs and regressions before they are released to users. While we can’t catch them all, we also cannot spend excessive amounts of time performing manual QA. Thus, we will be pursuing automated testing of the UI as well as testing at the code level. Tests will provide an additional benefit of guiding future contributors and preventing regressions.

Actively Recruit

We need people. This is an open source project with (currently) no sponsorship - private or corporate. As such, everything is done through people’s free time and time is always short.

From plugin authors to maintainers, we need everyone and anyone interested in the project to pitch in. Even opening a pull request to fix a typo in documentation is valuable.

Feature Parity

There are other editors we lag behind in certain ways. Common functionality found across other editors needs to be up to current standards (or better) for Light Table. This does not mean it will necessarily be in Light Table proper, but potentially a plugin.

Searching and autocomplete come to mind as obvious targets. Both need to be improved for users to have a pleasant experience. Our search functionality is simply inadequate when compared to Atom. Autocomplete is lacking when compared to others, such as Cider.

A Call for Ideas

Light Table is built on the idea of being a next generation editor. Many of our ideas were ported over to other editors and that is awesome! However, we need to keep innovating and want to hear from you. What would you like to see in an editor that you can’t find elsewhere? What plugins don’t yet exist?

-Scott

Light Table 0.8.0

10 Dec 2015 - Gabriel Horner

We are excited to announce an 0.8.0 release of LightTable! Many thanks to our contributors including Chris and Mike for the move to Electron. We are also fortunate to have added Kenny Evitt and Magnus Rundberget to the core team, both of whom have been critical in helping users and getting this release out. This release finalizes an important transition from LightTable being a Kodowa managed project to a community managed one.

Changelog

If we could give a theme for this release, we’d say it’s transition and maintainability. We have made major changes: switching to Electron, upgrading CodeMirror, revamping how LightTable is built from source, and revamping how plugins are distributed (hint: it’s all just data in this repository). For maintainability, we have gotten off forked dependencies and added significant documentation. This release has the following major changes:

  • CHANGED: We have switched to Electron from NW.js
  • CHANGED: LT’s releases and self-updating processes are completely in the open on Github
  • ADDED: LT can be built from source with provided scripts across supported platforms
  • ADDED: Most of LT’s node libraries are installed as npm dependencies instead of as forked libraries
  • ADDED: Significant documentation. See more below
  • FIX: Major usability issues on >= OSX 10.10
  • CHANGED: 32-bit linux is no longer an official download. Building from source will still be supported
  • FIX: ClojureScript eval for modern versions of ClojureScript

For more, see the full changelog.

Notes for plugin authors:

  • lt.objs.app/window-number numbering now starts on 1 instead of 0. We encourage you to use lt.objs.app/first-window
  • Use lt.objs.platform/electron set to true if your plugin needs to detect for behavior specific to LT versions before or after 0.8.0 (and electron).
  • The following fns have been removed: lt.objs.thread/node-exe and lt.objs.app/extract!

Documentation

While LightTable has a documentation site, there has been a concern around LightTable not having enough documentation, both for those who want to understand its internals and for those who want to become power users. We have heard those concerns and done the following to address them:

As we continue to improve documentation, we look forward to it enabling the community to better use, understand, and develop LightTable.

Next Steps

LightTable is built on two amazing communities, ClojureScript and CodeMirror. LightTable is primarily written in ClojureScript, which allows us to use immutable data instead of mutable objects, explicit state management, functional programming and much more. CodeMirror is the underlying editor which provides a 100+ language modes, dozens of addons and powerful vim and emacs keybindings. Unfortunately, LightTable has been running on old versions of both of these and it is time we fixed this. As part of our 0.9.0 milestone, we will be upgrading them to recent versions. We want to enable these communities to use their latest libraries and creations in LightTable. Aside from upgrades, we will continue to expand the community with more documentation, clean up LightTable internals and empower plugin authors with a powerful API and possibly even tools. Looking forward to what we can build together!

-Gabriel