Unmaintained tracks

In general terms, I think more tracks should be maintained and (like most people) I would prefer someone else to do this.

I entirely reject @IsaacG’s suggestion that I should take over all of them!

However… if nobody else is willing to maintain Scheme and CFML, I might be able to do this. Worth the experiment??

@glennj, if you agree, perhaps you could add me to the maintainer lists. They should accept community contributions, and I’ll delete the workflow once I have permission.

1 Like

Scheme is a bit complicated. If you keep continuity with the earlier maintainers were doing, you need to support students solving exercises in Chez AND Guile. Some of the tooling can likely be replaced or updated. For example, there are Scheme scripts to update the track config in memory, but that can probably be replaced with the battle-tested configlet workflows contributors are likely more accustomed to.

CFML shouldn’t be too bad. The test runner runs on Boxlang, not legacy CommandBox. You may want to keep supporting both for local students, but I think most folks are going to use Boxlang at this point. They both support CFML natively so it’s not an situation like Scheme where Chez and Guile behave differently in certain contexts. I was a former CFML maintainer, but I’m not particularly interested in being the sole maintainer. I have enough tracks I maintain solo, but if you want to take CFML on, I can tag along as a junior maintainer or something.

1 Like

Thanks for the advice. I’ll need it, after this rather ill-considered offer to get involved.

I was starting to realize that, though in less detail. I have no idea why a low-traffic track for a famously simple language wants the complication of supporting two not-quite-compatible versions. Longer term, I’d be tempted to pick one (probably Chez?), then simplify the tooling and installation instructions.

For now, let’s start by clearing any dependabot backlog and adding an exercise or two. There are 39 practice exercises currently, and at least one of them (Octal) is obsolete.

Very welcome! I’ve been reminding myself of your progress on the ever-problematic test runner, and I’ll probably need your advice on this in future.

Again, I’d be tempted to simplify at some point. BoxLang is clearly the way to go now, and continued support of CommandBox is just confusing.

2 Likes

As an aside: I notice that COBOL is unmaintained. Personally, I’m OK with that, though I encourage other people to step up.

I’m 4 years older than the (1960) language, I never even did Hello World, and I have no plans to mess up this long, unbroken record.

2 Likes

Is that worth keeping?

The Scheme track dates back to Exercism v1, but modern new track guidance recommends picking a single variant. The question is which one do you pick at this point? I suspect Chez Scheme might be popular because Racket uses it for their compiler backend, but that might also be because one of the devs really liked Chez. Dunno

Chez has Cisco behind it: they kept it proprietary for a few years after buying it, but open-sourced it about a decade ago. From a quick online search, it seems to be regarded as the best-supported version. Used commercially in network routers, allegedly (no details available).

On the deprecated-exercises thing, I see this was pointed out in 2023, by @BNAndras. The issue was closed as “completed”, though that may not be the best word.

Personally I think it’s entirely fine to pick one direction and drop support for the other :man_shrugging:

If it seems the best supported, I think Chez would be a safe pick. After we get the track’s affairs in order, we can revisit adding Guile or some other variant, but that’d at least get you started.

2 Likes

I think we can safely remove the extra tooling around manipulating config/track.ss to make the formatted track config.json. It’s very old and missing several top-level properties including status, version, online_editor, test_runner, files, key_features, and tags. Practice exercises are under exercises not exercises → practice. The config sets exercises’ core and unlocked_by properties rather than practices and prerequisites.

1 Like

Digging into the innards of this track is quite mystifying. So many hundreds of lines of code, so little obvious purpose. At least in an Exercism v3 context: it probably made more sense 12 years ago when it was written (the track was bootstrapped by @ktrinyx January 2015).

It seems like we have three options:

  1. A few minor tweaks, and hope it doesn’t fall over.
  2. A major rewrite, turning it into a normal v3 track.
  3. Archive it and direct students to Racket.

I suppose Option 2 is the ideal, but it’s a big job and I doubt I have the necessary expertise.

Should I be signing up for a Claude subscription at this point?

A quick look at the track build pages suggests that Scheme has more students and more exercise completions than Racket, which surprised me. Common Lisp seems more popular than either.

We archived PL/SQL and ClojureScript because they were maintainer burdens in their own particular ways, but I think we’d be better of doing 1 as a start. That leads into 2 if needed, but going 3 right away is probably a hard sell.

First step is ripping out anything related to the track.ss file. That whole workflow is irrevocably broken and doesn’t need to be maintained because configlet does the same stuff. Once all the dead code is out, you just need to see what needs to be added in piece by piece. If there’s a test generator, I’d scrap it too and add a new one (maybe Jinja2 using Python?). Then just regenerate tests using exercise-specific templates as you go exercise by exercise. That’ll make sure things are actually synced up since on old trakcks, tests.toml were batch generated years ago so they might not reflect what’s actually implemented in the suites.

1 Like

Sounds like a good plan. I’ll start tinkering with this over the next few days.

I already use Jinja2 for Julia, R, Fortran, and occasionally Python. Happy to use a similar mechanism here.

It’s probably worth breaking out into a Scheme-specific topic for further discussion.

All hypothetical at the moment, as the track is still unmaintained.

1 Like

Since I commented on the relative popularity of Common Lisp, I notice it has a learning track with 27 concepts and 15 concept exercises. Maybe something there that Scheme and/or Racket could borrow in the future? Perhaps the distant future.

Time to take another look at this. I’m a bit rusty.

1 Like

I added you to team scheme. Let’s leave CFML for now: one at a time.

exercism/scheme is now maintained-solitary

2 Likes