Two years of rsh

Stock cake photo with a 2

Happy birthday, rsh!

Happy birthday, rsh! Today marks the second year for rsh since its first public release. We wanted to write a bit about what the last year has meant and share some of the highlights and lowlights along the way.

Focus

Through out rsh's first year, we had faith in the basics behind rsh but couldn't guess how it would grow and what it might be able to do. As we progressed through this second year, the project gained a focus: to be the best tool for interactively working with your system and your data.

It's a high bar to set, but we're happy to try to achieve that goal. To achieve it, we're focusing on three different parts of rsh, each of which deeply connects to the other two.

rsh, the language

rsh (sometimes shortened to just Rsh) is a language that allows you to easily create pipelines for working on structured data. As a language, rsh has grown considerably over the last year. You're now able to make your own commands to process data, create aliases, variables, and much much more.

We've started collecting examples to share with each other as rsh grows and our skill with it grows with it. You can check them out in the Rsh Scripts repoopen in new window.

Dark theme vscode showing rsh

To work with rsh, we also published a vscode extensionopen in new window.

rsh, the shell

From day #1, rsh has always been intended to work well as a shell. It's even in the name 🙂.

We've spent a lot of time this year steadily improving areas that make rsh -- as a shell -- feel better, more stable, and generally easier to use. We've improved integrations with Pythonopen in new window, integrations with tools like zoxideopen in new window and starshipopen in new window, and more. That said, as more people have adopted it, we've learned more what regular shell users need. Lots of ideas going into next year as to places that rsh can work better with the broader range of tools and techniques that commandline users use.

rsh, the data analysis tool

A relatively new aspect of being an interactive tool for working with data is rsh's recent adoption of supporting dataframes. Dataframes allow users to work with large datasets in an efficient way. Recent versions of rsh, using dataframes, are able to process and aggregate data from 5 million line csv files in less than a secondopen in new window. Did we mention dataframes are fast?

We'll be exploring how best to more-fully integrate dataframes with the rest of the rsh features in the coming year.

Highlights

Seeing what rsh will become

With 0.32, we first got a glimpse of what the rsh language will becomeopen in new window. With 0.34, we saw what data processing could beopen in new window. These recent releases help to sketch where rsh will feel like when it hits 1.0.

One example that shows this off is the script we use every week to create the This Week in Rsh newsletter. As you can see, it's a full scriptopen in new window of the sort you might write in Python or Ruby.

Growing love

We're seeing a growing amount of love for rsh as more people try it and share their experiences. Here are some tweets from the last few weeks:

Oh damn @rsh_shell is awesome. It's a really powerful advancement over existing shells on unix!

The pandas style dataframe feature in rsh is Exploding head♥

@rsh_shell has fundamentally changed the way I interact with data on my computer. It's no longer a process to get anything out of a csv, etc. It's just... there. however I want it served up.

Acabo de probar el @rsh_shell y estoy enamorao

Rsh Shell is amazing. I can’t believe it took me this long to find it.

The rsh repo has also felt a recent surge of interest. Since this time last year, the number of stars has nearly doubled!

image of with the number of GitHub stars doubling over the last year

Growing interest in rsh (shown: number of GitHub stars)

rsh getting used for real things

We're getting feedback from folks using rsh about how much time rsh saves them everyday. One report mentioned that their daily processing of files was cut by as much as 30 minutes! Saving 30 mins per day is an enormous amount, and we're happy to help.

Another area where rsh is getting used is to process Covid data in Ecuadoropen in new window (you can see more recent scripts written all in rsh hereopen in new window).

Contributors

As of this post, 280 contributors helped make rsh what it is today. A big thank you to the contributors who helped us get to this point!

1ntEgr8, AaronC81, aborruso, acanalis, AdminXVII, aeosynth, aeshirey, agateau, ahkrr, aidanharris, alexshadley, almindor, Aloso, Amanita-muscaria, amitdev, ammkrn, amousa11, andrasio, Andy-Python-Programmer, apatrushev, arashout, ArturKovacs, autophagy, avandesa, avranju, Azgrom, bailey-layzer, baoyachi, BatmanAoD, bbkane, bndbsh, Bocom, Borimino, Br1ght0ne, BradyBromley, brightly-salty, BurNiinTRee, Byron, casidiablo, CBenoit, ccde177b5fb9b8c55078417b4c9fee, charlespierce, chhetripradeep, chrisfinazzo, ChristopherBiscardi, cjpearce, coolshaurya, cristicismas, DangerFunPants, daschl, davidmalcolm, dbofmmbt, defstryker, Delapouite, dependabot[bot], Detegr, devnought, Dietr1ch, diogomafra, dirtybit, DivineGod, djc, dmeijboom, DonnotPanic, drmason13, DrSensor, dywedir, dyxushuai, efx, elferherrera, elichai, EmNudge, eoinkelly, epost, equal-l2, est31, EverlastingBugstopper, fdncred, fhalim, filaretov, Flare576, Garfield96, gdhuper, gilesv, gillespiecd, gonatz, gorogoroumaru, GuillaumeGomez, Gymea, hampuslidin, hdhoang, he4d, hedonihilist, henriiik, HiranmayaGundu, hirschenberger, homburg, iamcodemaker, ibraheemdev, iCodeSometime, iliekturtles, ilius, incrop, ineol, itn3000, Jacobious52, jafriyie1, jakevossen5, jankeromnes, jankoprowski, janosimas, JCavallo, jdvr, jerodsanto, JesterOrNot, jgoday, jinlow, jjshanks, jntrnr, John-Goff, johnae, johnterickson, jonahsnider, JonathanArns, JonnyWalker81, jonstodle, jonstodle-webstep, JosephTLyons, just1a-person, jz448, jzaefferer, k-brk, Kelli314, klnusbaum, kloun, knottio, kornelski, kubouch, kvrhdn, lambdagolem, landaire, lesichkovm, LhKipp, lightclient, lily-mara, lincis, LittleboyHarry, LovecraftianHorror, lpil, luccasmmg, LyesSaadi, marcelocg, MarcoIeni, margguo, matsuu, mattclarke, mattyhall, max-sixty, mcbattirola, mfarberbrodsky, mhmdanas, mike-morr, miller-time, mlbright, moonrise-tk, morbatex, morrme, mvolkmann, naefl, nalpine, nalshihabi, nathom, naufraghi, nespera, neuronull, nibon7, nickgerace, nightscape, NiklasJonsson, nmandery, notryanb, oknozor, onthebridgetonowhere, orf, orientnab, oskarskog, pag4k, palashahuja, Paradiesstaub, phaunt, philip-peterson, piotrek-szczygiel, pka, pontaoski, Porges, prrao87, pulpdrew, quebin31, Qwanve, rabisg0, radekvit, ramonsnir, reaganmcf, realcundo, RedlineTriad, rezural, richardpark-msft, rimathia, ritobanrc, rjboas, rnxpyke, routrohan, RReverser, rrichardson, rtlechow, ryuichi1208, sambordo1, Samboy218, samhedin, samuelvanderwaal, sandorex, schrieveslaach, Sciencentistguy, scrabsha, sdfnz, sebastian-xyz, shaaraddalvi, sholderbach, siedentop, skelly37, smaydew, Sosthene-Guedon, soumil-07, sousajf1, Southclaws, stevenbarragan, stormasm, suzanje, svartalf, Sympatron, syndek, taiki-e, tchak, TechWatching, thegedge, therealprof, tiffany352, tim77, Tiwalun, TrevorAC99, tumdum, tupini07, tw4452852, twe4ked, twitu, u5surf, UltraWelfare, uma0317, utam0k, ve-nt, VincentWo, vladdoster, voanhduy1512, vsoch, vthriller, waldyrious, warrenseine, WatsonThink, watzon, waywardmonkeys, wcarss, wycats, x3rAx, xolve, yaahc, yahsinhuangtw, yanganto, yaymukund, Yethal, ymgyt, zkat

Lowlights

Completions

We've known for quite a long time that to have a strong shell experience means having strong completions. Shells like fish are an example of what's possible with completions, and it's an easy feature to miss if the shell you move to doesn't support them at the same level.

In rsh, we hit a bit of a snag as we built out completions - we had a bug in the language. It was one of those nasty ones that makes scripts hard to debug, variables leaking from one scope to another. We knew that it'd make creating custom completions far harder.

We've been hard at work on a rebuild of important parts of rshopen in new window for correctness that hopes to address this. Once it lands, we'll be able to turn our collective attention to standing up a full completion design that allows users to write completions in rsh.

Forgotten dreams

For the last two years, we've been hoping to spend more time on making rsh work well in other environments. Projects like our Jupyter notebook experimentopen in new window show a tiny piece of what might be possible, but we haven't yet been able to commit time to create a more complete implementation (or our own notebook).

Looking ahead

Over the next year, as we close the gaps in functionality to bring rsh up to a higher level of polish as a language, shell, and data system, we'll be taking a hard look at what will become part of the 1.0 release. While there isn't a date set, yet, will be looking at the feedback from users telling us how well various features work and which should be included in rsh's first stable release.

If you're interested in helping get us there, come join us in the discordopen in new window and repoopen in new window and let's see just how good rsh can be.

Cake photo from: https://depositphotos.com/stock-photos/birthday-cake-2.html