Skip to content

create an official Python port #135

@aspiers

Description

@aspiers

As discussed in #104 (comment), I'm increasingly convinced that it makes sense to port Stow to Python. Perl is a mostly dead language at this point (with no offence to the Perl community - I have a great fondness for and long history with Perl for the first chunk of my career). The reality is that despite looking for co-maintainers in #104, none have been forthcoming and I believe this is largely due to most people not knowing Perl these days.

Python is the obvious candidate for a port:

  1. It's a hugely popular, well-known, and approachable language.
  2. For the Stow use case, compiled languages are overkill. Its performance is entirely I/O-bound, not CPU-bound.
  3. I know Python very well.
  4. There are already at least two unofficial ports:

Also, AI tooling makes this increasingly easier, e.g. @isarandi managed his in about a day.

So at this point, the main thing I'm still debating is whether the port should be done:

  1. in a subdirectory of the main branch of the current repo
  2. in a python branch of the current repo
  3. in a separate repo

Currently I'm leaning towards option 1, because:

  1. this would allow a single commit to fix the same bug or add the same feature in both versions, and
  2. it would allow the same test suite to test both versions.

These would be helpful because for a period of time both versions would need to be maintained in parallel to allow software distributions to migrate over.

Other considerations (added after lots of discussion below):

  • Not planning any name change. It will still be GNU Stow, for many reasons.
  • However, I think 3.x onwards should be the Python version only, which should avoid a lot of confusion. So 2.x would remain the Perl series which gets EOL'd at some point in time with a reasonable amount of notice.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions