exercism / bqn

Exercism exercises in BQN.
https://exercism.org/tracks/bqn
MIT License
2 stars 5 forks source link

Launch tracking #1

Open kytrinyx opened 1 year ago

kytrinyx commented 1 year ago

This issue helps keep track of the tasks you're working on towards launching this track.

The next steps are:

Once you've finished a task, you can check them in this list.

Questions

Please ask if you have any questions or if anything is confusing!

razetime commented 1 year ago

First two steps are done. A testing framework will have to be made. I am not able to click on the checkmarks yet.

kytrinyx commented 1 year ago

@razetime You're listed as a maintainer in the exercism/bqn team, and the team has write access to this repository, so I'm not sure why you're not allowed to click on checkmarks yet. @m3m0ry are you able to click checkmarks? (You're the only other member of this team at the moment)

razetime commented 1 year ago

It was my mistake, I did not realize i wasn't added to the org after setting up 2FA. I can work with the repository now.

gitonthescene commented 1 year ago

I’m not sure what the plan is to flesh out this roadmap are but I’ve been poking around a bit and found this spec for how the testing interface works. Posting here so it’s more handy.

I don’t know if we want to set up a kanban board but it seems to me that some of these tasks can be parallelized.

FWIW, I started poking around here. Will probably check out a couple of setups for the other languages.

[EDIT: I hit upon these links by Googling around, but it seems these are turned into published docs where all the links work. In any event, having a link here might be handy.]

m3m0ry commented 1 year ago

Hello @gitonthescene . We are happy about any help. My roadmap is to create a few exercises. My main issue is that my BQN skills are abysmal. I am still learning it. As such my primary goal was to provide a set of exercises (I think at least 20 is the limit) and tests for offline editing.

I am happy about any help. There are a few things to consider for the online editor.

So far I wanted to make a simplistic "test framework" with just asserts. If you look at the python track, they are generating their tests from the exercise's json.

As I said, with my glacial speed, I wanted to implement a few exercises and their tests manually first.

kytrinyx commented 1 year ago

it seems these are turned into published docs

That's a good shout. I've updated my scripts so that we link to the published docs in the launch tracking issue for new tracks.

gitonthescene commented 1 year ago

@m3m0ry - My feeling is that writing the actual tests will be the easiest hurdle to leap. I imagine once we have a framework that most of the contributions will be writing tests. From a pedagogical viewpoint tests written by someone very familiar with the language might be most useful.

I think designing a testing framework is a non-trivial task. There are a lot of models out there with JUnit seeming to be the most widespread. I don’t know that there is any existing unit test framework for BQN.

[EDIT: There is this which might serve as inspiration but it looks like the Excercism framework requires a particular form of output.]

It might be worth trying for TAP compliance.

Should we split out separate issues to discuss the various steps of the roadmap?

[EDIT: Inspiration from another array language!]

gitonthescene commented 1 year ago

For syntax highlighting we can probably raid bqnpad code and maybe even rope in AndreyPopp for help though he seems less active on APL Farm lately.

TBH, I’m not really sure where syntax highlighting fits in to the Exercism framework but I’d guess it’s not the highest priority.

gitonthescene commented 1 year ago

Hmm.. Have we decided to use CBQN over BQN.js?? Vice versa?

gitonthescene commented 1 year ago

@m3m0ry - I had a look at the python test runner and it looks like the only json is the configuration file config.json per lesson which simply points to the tests and doesn’t generate them.

For example this config file points to these tests.

razetime commented 1 year ago

Test runner: we will without doubt need to make our own test runner. Simple assertions work but i don't think they are enough for exercism. J has it's own unit testing library which is probably somewhere on @jsoftware.

Syntax Highlighting: Yes, we can steal from bqnpad. The required plugin is here, which we can directly use on codemirror in exercism.

Impl: We are without doubt using CBQN. CBQN is the most actively maintained, and it has all the I/O functions we require. updated the top post to show that.

m3m0ry commented 1 year ago

@gitonthescene Yes, but these tests are generated by a scirpt. That's what I was talking about.

I am also not convinced that we need a full-blown test suite. Why wouldn't simple assertions work? Yes, then we don't have the fancy "x out of y tests passed", but is it necessary?

I would go for CBQN. But I also would target the offline version of the exercise, since I have not much experience with javascript and web stuff in general.

Sure, we can do all of those things proposed, but I know I have neither the time nor the skill to do them properly.

I'll just try to get a bunch of exercises going.

ErikSchierboom commented 1 year ago

There are two parts to syntax highlighting:

  1. Syntax highlighting with the online editor: this uses codemirror and there must thus be a bqn codemirror plugin that you point us too to have us enable it
  2. Syntax highlighting for all other places (static text): this use highlightjs and there must thus be a bqn highlightjs package that we include
gitonthescene commented 1 year ago

@ErikSchierboom - Cool. @razetime, correct me if I’m wrong but I think you were suggesting that the code you linked is a codemirror plugin.

gitonthescene commented 1 year ago

@m3m0ry - I opened up a new issue. Let’s move the discussion there to avoid having threaded conversations here eventually.

razetime commented 1 year ago

@kytrinyx @ErikSchierboom request to add @aecepoglu to the bqn team.

kytrinyx commented 1 year ago

Done!

ErikSchierboom commented 1 year ago

Done!