Two years of rsh
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 repo.
To work with rsh, we also published a vscode extension.
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 Python, integrations with tools like zoxide and starship, 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 second. 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 become. With 0.34, we saw what data processing could be. 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 script 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:
The rsh repo has also felt a recent surge of interest. Since this time last year, the number of stars has nearly doubled!
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 Ecuador (you can see more recent scripts written all in rsh here).
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 rsh 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 experiment 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 discord and repo and let's see just how good rsh can be.
Cake photo from: https://depositphotos.com/stock-photos/birthday-cake-2.html