Pre SIP: scala-cli as new scala command

Hello again Contributors!

Let me first give my love to all people working with scala-cli: it’s a FANTASTIC tool!

I would also like to thank all for providing your thoughts in this thread during this on-going experimental phase of SIP-46 - several interesting input have been raised and its good to hear all the various views: MANY THANKS!

@sjrd gave a very good summary of the history and rational here behind revisiting the using-keyword in the directives syntax. And I’ll in this post try to give a summary and thoughts on what’s next.

The next formal step for SIP-46 in the SIP process is for the committee to take into account lessons learned in the experimental phase and then decide if it can be promoted to “stable”, which will mean that scala-cli is released as the official new scala runner.

Each SIP proposal has 3 assigned reviewers with the responsibility to give feedback to the SIP proposal authors and provide recommendations to the SIP committee in its decision-making. The 3 reviewers of SIP-46, aka “assignees” are @srjd, @chrisandrews-ms and myself. The next SIP meeting is in two weeks and before that the SIP committee chair @julienrf needs to decide if SIP-46 should be up for a vote or not, based on if available decision input is mature enough.

I am very happy for all the input here, and I have drawn these conclusions:

  1. There are arguments for keeping the one-liner magic comment key-value syntax: mainly that it is both human- and tool-friendly.

  2. There are arguments for changing the directives syntax to some existing configuration language: mainly that an existing configuration language would ease adoption.

  3. There are concerns that the current configuration keyword using is clashing with the Scala 3 language keyword using, while many think its not a big deal with the clash.

I don’t think arguments for changing to YAML or X or Y or Z are really that strong, as there are so many different configuration languages out there and on-boarding will only be easier for the ones that happen to know the particular language chosen. Furthermore, the cost of ripping up the whole directives syntax from its roots is pretty high, and the experimental stage of this SIP was entered with a general approval of the current design philosophy of the directives.

I do think that there are merits in the arguments for changing using to something else, as it may be confusing to have overloaded meanings. I also think that now, rather than later, is the best time to change, if we should change it. I think the keyword use is a great replacement for using as it is short and to the point. I also think use scala 3 reads very well as an imperative statement in English (better than e.g. config scala 3).

So currently I lean towards making my recommendation as reviewer to the SIP committee as follows:

  • Promote SIP-46 from experimental to stable, with the addition that using is changed to use, while using is kept working for a generous grace period of several months with suitable deprecation warnings.

What do you think?

Thanks again to you all for your engagement and contributions to the evolution of Scala!

//B

5 Likes