HNHacker News
TopNewBestAskShowJobs

mschrage

416 karma · joined October 14, 2014

Harvard '20 Things I’m thinking about: http://schra.ge Hardware: http://fab.cba.mit.edu/classes/863.19/Harvard/people/mschrage/
submissionscomments
mschrage··on Launch HN: Fig (YC S20) – Autocomplete for the Terminal
Thanks for your insight here! We are still deciding the exact implementation, but completely agree - Linux is a challenge due to the heterogeneity of distros, window managers, compositors, etc.

Our macOS approach might not work everywhere.

mschrage··on Launch HN: Fig (YC S20) – Autocomplete for the Terminal
Out of curiosity, do the scripts you write take options or arguments? Or are they generally just invoked directly?
mschrage··on Launch HN: Fig (YC S20) – Autocomplete for the Terminal
The aws-cli is a monster! This exactly the type of situation where we envision Fig being really helpful :)
mschrage··on Launch HN: Fig (YC S20) – Autocomplete for the Terminal
We totally agree! This is exactly where we want to take Fig.

The autocomplete product is built using an API that extends terminals with visual apps and shortcuts. Using the same API, you can build an app that interactively displays photos or wraps a common ffmpeg workflow.

We prototyped[0] a bunch of ideas like this during YC last summer, before deciding to start with autocomplete.

[0] https://fig.io/videos/old-sizzle-reel.mp4

mschrage··on Launch HN: Fig (YC S20) – Autocomplete for the Terminal
Thanks for the feedback :)

If you run into bugs or gave any suggestions, run `fig issue` to quickly create a new Github issue!

mschrage··on Launch HN: Fig (YC S20) – Autocomplete for the Terminal
Currently, Fig only supports macOS.
mschrage··on Launch HN: Fig (YC S20) – Autocomplete for the Terminal
The current implementation of Fig is a native macOS app (Swift/ObjC) that exposes an API to access terminal specific information - edit buffer, working directory, current process, etc. On every platform we support, we'll implement this natively.

As Fig grows, we want to enable an ecosystem of UI extensions for the terminal that are built to go cross platform. Using web technology here made sense since we can leverage built-in webviews for rendering or bundle a lightweight implementation like Tauri[0].

[1]

mschrage··on Launch HN: Fig (YC S20) – Autocomplete for the Terminal
These are all such cool projects. We took some early inspiration from TermKit! I think the tricky thing is that you need to switch terminal emulators in order to use the new features.

We've tried to make everything as backwards compatible as possible. Our goal is for Fig to integrate seamlessly with your existing tools and workflows.

mschrage··on Launch HN: Fig (YC S20) – Autocomplete for the Terminal
Thanks Ramiro! Glad to hear you're finding Fig useful :)
mschrage··on Launch HN: Fig (YC S20) – Autocomplete for the Terminal
To get autocomplete working, you just need to install the macOS app. (https://fig.io/hn)

These instructions only apply if you want to develop your own completion specs and are setting up the dev environment!

mschrage··on Launch HN: Fig (YC S20) – Autocomplete for the Terminal
No worries. We determine who is on your 'team' based on email domain excluding webmail domains, like gmail.com and hey.com.

If there are a bunch of people at the same company using Fig, we'd probably reach out to understand what you find valuable and how we could make it better - we don't have a paid offering yet, but want to figure out what teams are willing to pay for!

mschrage··on Launch HN: Fig (YC S20) – Autocomplete for the Terminal
Autocomplete is just our first product. We've built an API that makes it possible to add visual extensions to any terminal.

We want to expand into stuff like runbooks, UIs for deployment, internal infra, etc..

mschrage··on Launch HN: Fig (YC S20) – Autocomplete for the Terminal
Thanks! We currently work with the VSCode integrated terminal and will add support for Jetbrains IDEs, if possible!
mschrage··on Launch HN: Fig (YC S20) – Autocomplete for the Terminal
> Is the VC backing for another product and the CLI tool is just a PR thing?

Autocomplete is our first product. The bigger vision that Fig can enable an ecosystem of terminal extensions. Here are some early prototypes we built [0] and here is the discussion from when we were posted on HN last summer [1].

> Is the business model just selling our data?

We will never sell data. That just isn't the business we want to build - Brendan and I like hacking on the terminal because it's interesting and we get to solve our own problems.

We've been lucky enough to find investors, most of whom have an engineering background, who understand how important the terminal and believe there is a lot of room for improvement.

Obviously, we would like Fig to become a sustainable business. We plan to monetize in the short term by offering autocomplete for internal CLI tools and scripts. Longer term, we think that there is a lot of stuff that developers do in the browser that make more sense in the terminal. Fig's autocomplete product is powered by an API that lets anyone build graphical extensions that are connected to the terminal.

[0] https://fig.io/videos/old-sizzle-reel.mp4

[1] https://news.ycombinator.com/item?id=23766980

mschrage··on Launch HN: Fig (YC S20) – Autocomplete for the Terminal
Just to clarify, the text you type into the terminal NEVER leaves your device. Fig does not store or collect this information.

We send an event when you insert something using Fig's autocomplete, so we can get a sense for how frequently people use the app. We also send which completion spec (eg. git, npm or cd) was used to generate the suggestions to know which commands to prioritize.

mschrage··on Launch HN: Fig (YC S20) – Autocomplete for the Terminal
The reason we suggest logging in with your work email is so that you can share shortcuts and completions for internal CLI tools with your team.

We should probably add this explanation to the login page because I can see how this would be confusing.

mschrage··on Launch HN: Fig (YC S20) – Autocomplete for the Terminal
Thanks for reporting this. This is definitely not the expected behavior. Would love to figure out what was going wrong.

matt [at] fig.io

mschrage··on Launch HN: Fig (YC S20) – Autocomplete for the Terminal
Totally agree! The closer autocompletion lives to the source code, the better.

We've started off writing completions by hand, but to scale we will need more robust integrations. For instance, aws has 100+ subcommands and thousands of options.

Long term, we plan on writing integrations with popular CLI libraries, so that the completion spec can be generated automatically. We've already started with oclif[0] and have done some preliminary work with cobra.

[0 https://github.com/withfig/oclif-plugin/blob/main/src/comman...]

mschrage··on Launch HN: Fig (YC S20) – Autocomplete for the Terminal
I honestly feel the same way. Once you use Fig, it feels like such an obvious idea. It didn't require new APIs or anything like that.

As far as I can tell, no one tried it because to 10x the existing shell experience requires working across multiple layers of stack. You need integrations with the shell, the terminal emulator and the OS -- in addition, to mapping the structure of a bunch of CLI tools.

mschrage··on Launch HN: Fig (YC S20) – Autocomplete for the Terminal
It looks like this is an issue with the completion spec for kubectl[0]! I'm not super familiar with k8s, so you wanted to help fix this (eg. writing the generator to list pods) that would be amazing! <3

[0]https://github.com/withfig/autocomplete/blob/2a0eea63d04f6b2...

mschrage··on Launch HN: Fig (YC S20) – Autocomplete for the Terminal
Thanks for the advice! We have a telemetry opt-out which turns this off.

Currently, we would still send a daily ping so we can track retention, but after the feedback from HN, we'll turn this off as well.

mschrage··on Launch HN: Fig (YC S20) – Autocomplete for the Terminal
That's awesome to hear! Glad that everything is working!
mschrage··on Launch HN: Fig (YC S20) – Autocomplete for the Terminal
When you login with your work email, you can share shortcuts and completions for internal CLI tools and scripts with your team.
mschrage··on Launch HN: Fig (YC S20) – Autocomplete for the Terminal
Fig does not "phone home" when you type!

When you install Fig, we download the most up-to-date completions specs using the Github release API. (You can see them in ~/.fig/autocomplete). We got rate limited this morning (thanks HN!), so some people downloaded Fig, but didn't have any completion specs available.

Don't worry: all of the completion happens locally on your machine. None of your keystrokes or raw text from your terminal leaves your device.

mschrage··on Launch HN: Fig (YC S20) – Autocomplete for the Terminal
That's how we think about the completion spec standard. It essentially is a type-safe DSL that describes the structure of CLI tools.

It should be pretty easy to 'compile' a Fig completion spec down to zsh, fish, or bash. This is actually something I've been meaning to write!

mschrage··on Launch HN: Fig (YC S20) – Autocomplete for the Terminal
We're building out integrations with CLI libraries like cobra and oclif[0], so you can generate a Fig completion spec automatically the same way!

Then it just comes down to the Fig popover UX.

[0] https://github.com/withfig/oclif-plugin

mschrage··on Launch HN: Fig (YC S20) – Autocomplete for the Terminal
Autocomplete will always be free for individuals. We plan on charging for team-based collaboration, like private completion specs for internal scripts and CLI tools.
mschrage··on Launch HN: Fig (YC S20) – Autocomplete for the Terminal
Fig already works inside of VSCode and VSCode Insiders!

Also to clarify: we don't require node.js on the client. The completion specs are interpreted by the Fig macOS app.

re: LSP. Super cool idea, are you imagining Fig autocomplete in language-specific repls? Or something else?

mschrage··on Launch HN: Fig (YC S20) – Autocomplete for the Terminal
haha :) We actually send the name of the completion spec rather the initial token. In this case, it would be "dotslash".
mschrage··on Launch HN: Fig (YC S20) – Autocomplete for the Terminal
For 'dangerous' commands, Fig requires you to press enter twice - once to select suggestion and insert it into the terminal and then again to execute it!
← PreviousPage 2 of 4Next →