Mojo as new lang track

I want to see if there is any interest in starting a Mojo language track. As a super set of Python I think the approach should be to only focus on Mojo features. Thoughts?

Tracks start out as a set of practice exercises, without a “focus” per se. If Mojo is a superset of Python, then all the practice problems could be solved using the same solutions.

If I’m reading it correctly, Mojo is a strict superset so you could theoretically copy all existing Python practice exercises and have them work for Mojo. It’s similar to the TypeScript/JavaScript tracks. If you were to really teach people about what’s different in Mojo, you’d be writing concept exercises (a lot more work).

I don’t see concept exercises for typescript. Are we saying that the preferred approach for successor type of languages (specially the ones that are strict super sets ) is to encode them as concepts? Or in other words like an advance concept after somebody has mastered the “base” language?

Let’s take a step back from this and look at the context.

  1. All Exercism tracks are built and maintained by volunteers. Are you volunteering? If so, please be aware that it is a LOT of work to (at a minimum) write an Exercism-compliant test runner and create a starter set of exercises.

  2. Is Mojo ready for this yet? The core libraries were open-sourced less than 5 weeks ago, and I suspect (but don’t know for certain) that key pieces will still be missing. The language is still evolving rapidly, so we could be chasing a moving target.

  3. The advantages that Mojo has over Python are in areas which may not be a great fit for Exercism in its current form: matrix operations, big data extensions, GPU support, etc. Exercism tests are run in a short-lived Docker container with no internet access and no possibility of GPU access (AWS might offer it, but at a price a non-profit certainly can’t afford).

Science-biased users and maintainers with an interest in Python/R/Julia have been discussing the idea of a data science evolution of Exercism, but there has been little or no progress on this in the last few years. It needs volunteers who combine the appropriate skills with lots of free time and energy to make it happen. People like that tend to already have busy careers!

@BethanyG probably has the most evolved ideas about this, but she already has her hands full maintaining the (very busy) Python track.

Personally, I would love to see this happen and would help if I could: I’m a long-time research scientist who does some programming on the side. However, I can’t take the lead in creating it.

Also, I love concept syllabuses, I think we should have more of them, and I’m contributed to them on other tracks. I can confirm that they are a lot of work, and difficult to get right.

  1. Sure.

  2. Mojo was released May 2023 (close source sure then yes). These language tracks take time. Probably 6 months or so given folks commitments. We can target release next year if folks are committed to even supporting it. I know languages come and go and who knows if Mojo will be able to turn over Python folks into their camp.

  3. I remember when we added support for the swift language it could not even run on windows and none of the code was tested in Linux. Mojo a niche language but so was Python/typescript not too long ago.

Who are “folks”? Are you offering to build and maintain a Mojo track? Typically tracks get built when someone offers to build and maintain them.

Hi @masters3d :wave:

Let’s be clear: I am not opposed to a Mojo track, and might even be interested in organizing and building one out eventually.

But the devil is in the details for me. Especially with limited time and energy.

So I’m chiming in to re-focus on what @colinleach has pointed out:

Mojo isn’t even at v1 yet, and has (by their own admission) sharp edges that include lacking support for classes, exceptions, list and dictionary comprehensions, generator expressions, lambdas, recursion, nested-functions, closures, function-scope, and whole lot more. They’ve only recently added a dictionary type.

They also have not accounted for the upcoming changes to Python that include removing the GIL, and other optimizations. They don’t really support the wider Python ecosystem of packages and tooling, and they wrap Python for a lot of functionality.

While they’re making good and fast progress, it doesn’t feel wholly baked yet. Maybe we wait and see what they come up with between now and the beginning of next year? I think it would be highly frustrating for both students and maintainers to have to overhaul the track due to language changes.

@masters3d – what features of Mojo would actually shine in the existing Exercism environment? Keep in mind that the online environment would be a Docker container (and since Mojo only supports Ubuntu, it would be an Ubuntu container). No access to outside libraries or services, and TDD-focused.

What existing practice exercises would be interesting or useful to help illustrate what Mojo can do? Of those exercises, what would a Mojo implementation (not Python or Python called from Mojo), including tests look like?

And what would a concept/concept exercise look like for a Mojo-specific feature? For example, structs, or StringLiteral or String?

Again, not trying to be difficult here – trying to clarify what this would look like, and why we’d be interested in working hard to make it happen.

1 Like


There are couple of things beings discussed so let’s enumerate them.

  • Who will do the work?

  • Mojo feasibility in the current infra ?

  • Mojo time to market readiness?

  • Mojo audience?

I think the most compelling discussion is if Mojo would bring value to the community in its current form to advanced users. Python is an excellent starter language but I would not consider mojo to be a good starter language without first knowing enough python.

I think it’s okay to say not yet and see what happens in the next 12 months.

1 Like

I think you’ve been asked a couple of times if you’re volunteering to do the work. Given that you have yet to say yes to that question, is it fair to assume you’re not interested in building and maintaining the track?

If there’s no one volunteering at this point you build and maintain the track, I’m not sure any other discussion is of much value at this point.

1 Like

(Just for context here in case you don’t all know each other, Chéyo is a very senior contributor: masters3d's profile on Exercism :slight_smile:)