Short version:
- New ksh 93u+m branch based on 93u+:
https://github.com/modernish/ksh
- Currently the only actively developed ksh93 fork
- Loads of bugs fixed already, loads more fixes to follow
- Regression test suite fixed to working state, preventing more bugs
- Please test, and send bug reports and patches to github, or this list
- If ksh-community ever get started, so much the better; they can take
all the fixes. Meanwhile, I'm done with waiting. Let's get to work!
Long version:
1. Why?
2. Policy
3. My qualifications
WHY?
Between 2017 and 2020 there was an ultimately unsuccessful attempt to
breathe new life into the KornShell by extensively refactoring the last
unstable AST beta version (93v-). While that ksh2020 branch is now
abandoned and still has many critical bugs, it also had a lot of bugs
fixed. More importantly, the AST issue tracker now contains a lot of
documentation on how to fix those bugs, which makes it possible to
backport many of them to the last stable release instead.
In February 2020, having concluded the AST 93v- beta was too broken to
base new work on, others decided to start a new fork based on the last
stable 93u+ 2012-08-01 release. Unfortunately, the new ksh-community
organisation is yet to see any significant activity three and a half
months after its bootstrapping. I hope that will change; this fork is
not intended as hostile.
The last stable ksh93 release from 2012 is the least buggy release
currently available, but it still has many serious bugs. So it is well
past time to start fixing those bugs, leave the rest of the code alone,
and get an improved release out there.
As far as I know, 93u+m is currently the only actively developed
fork/branch of ksh93. Many bugs are already fixed, many more are waiting
to be fixed, and I'm sure there are many more yet to be reported and/or
discovered. The goal is to work towards the most solid ksh93 release
ever, without compromising on performance or compatibility.
My ongoing discussion with the ksh-community folks can be seen here:
https://github.com/ksh-community/ksh/issues/11
POLICY
1. No new features. Bug fixes only.
2. No major rewrites. No refactoring code that is not fully understood.
3. No changes in documented behaviour, except if required for compliance
with the POSIX shell language standard which David Korn intended for
ksh to follow.
4. No 100% bug compatibility. Broken and undocumented behaviour
gets fixed.
5. No bureaucracy, no formalities. Just fix it, or report it: create
issues, send pull requests. Every interested party is invited to
contribute.
6. To help increase everyone's understanding of this code base,
fixes and significant changes should be fully documented in commit
messages.
MY QUALIFICATIONS
It has been correctly pointed out that ksh should be maintained by
someone qualified. So, what qualifies me to maintain a fork (even if, as
I hope, it will be temporary until ksh-community gets its act together)?
I live and breathe shell. Whereas many people have a disdain for POSIXy
shell languages (which was IMHO the fatal flaw of the most active
ksh2020 developer), I have a real love for them and I see a lot of
potential that is untapped to this day -- particularly in a shell like
ksh93 which combines great functionality with great performance.
I have a real respect for the history and nature of a project like ksh.
I want ksh to live, but stay itself. I don't believe in massive
overhauls, nor in refactoring for the sake of it. I believe the 93u+m
bugfix version's behaviour should change no more, and no less, than the
minimum necessary to fix bugs.
I'm a member of the Austin Group, where I've argued with the POSIX
standard developers quite a bit and occasionally even convinced them of
my point of view. My name is among the hundreds acknowledged in the
POSIX standard (PDF version).
I've been developing a novel and robust cross-platform shell language
enhancement library for about five years, which has many innovative
features not seen elsewhere, and which also works on ksh 93u+ 2012
(working around its many bugs):
https://github.com/modernish/modernish
Unlike the Bell Labs ksh/AST authors, I am a bit of a perfectionist. You
can really tell ksh was a research project; the code shows a lot of
signs of being written by people excited to invent and try new concepts,
and not so excited to do the boring work of ensuring correctness. My
appetite for innovation is more than satisfied by working on modernish.
I find fixing bugs and breakage equally satisfying, and I intend to do
just that when working on ksh.
Developing modernish has made me very good at breaking shells, and
particularly gave me an an intimate familiarity with many of the bugs in
ksh 93u+ 2012 version. Most active POSIX shell authors (of bash, dash,
NetBSD sh, mksh, yash, zsh) have been getting to know me over the last
five years as I kept sending them bug reports and patches, sometimes for
decades-old bugs. You can find my name in all their changelogs and/or
commit messages. I've had a particularly active collaboration with kre
(Robert Elz) of NetBSD sh, who sent me test versions with my initials in
the version ID :) As a result NetBSD 9.0 is now the first release that
has a sh that can properly be called POSIX compliant.
I don't pretend to understand everything, or even most things, about the
barely-commented ksh93 code base. Unfortunately the only people with an
intimate understanding of the same worked at AT&T Bell Labs and are now
inactive. But my understanding has been growing by watching ksh2020
develop and then unravel. I am also good at knowing my limits; if I
don't understand it, I don't touch it. And I am more than ready to
accept patches by those who understand what I don't; you just have to
convince me that you know what you are doing :)
The proof of the pudding is in the eating. I've already done a lot of
ground work that is out there in public. (There's already someone
sending pull requests as well, I've got four merged so far.) How
qualified I really am can only be shown by the quality of my work, which
is up to the community to judge.
So I invite everyone to review the git log regularly, and open bugs or
pull requests. If you're too old-school for that, sending reports or
patches to this list is also fine (unless the community on this list
objects to that, in which case I can start my own list).
- Martijn
--
|| modernish -- harness the shell
||
https://github.com/modernish/modernish
||
|| KornShell lives!
||
https://github.com/modernish/ksh