StreakyCobra / gws

Colorful KISS helper for git workspaces
https://streakycobra.github.io/gws/
MIT License
235 stars 22 forks source link

Early access: gws2 rewrite #48

Open emlun opened 5 years ago

emlun commented 5 years ago

Hello gws users!

For a while now I've been working on porting gws to a language easier to maintain, and I'm pleased to announce that my Rust port gws2 is now complete enough to let it try its wings in the real world and see what breaks. It's meant to be a backwards compatible drop-in replacement, but hasn't yet reached feature parity with the original. Still, the most important commands (status, update, fetch, ff) are implemented and seem to be working reliably. See the project readme for a fuller description of the feature differences. I hope to close the gap soon enough, and of course you're all invited to help.

I did include a link above, but here it is more prominently: https://github.com/emlun/gws2

This is a beta, so please be prepared that there might be some bugs. Thanks for trying it out if you do, and if not, thanks for using gws!

StreakyCobra commented 5 years ago

Thanks @emlun for the work :) I tried it quickly and it is sooooo much faster! And it worked out of the box on my current workspace as expected. I also looked a bit at the code and it looks well done, congrats!

Concerning the future, I think your version would be better suited than this one, and having a number (2) in the name does not look nice and is definitively not helpful. For me, you can take the gws name for continuing with your version (except if you want to give it is own name).

This bash version should stay here because:

So what I would suggest, once your project is ready to be released, is to put a notice at the top of this readme explaining that this project his kept here for historical reason and the development is continuing on your own project with a link to it. Then you can ask the linux distros packages to be build on your new version. Hopefully the fact that you are the current maintainer and that there is this message saying that I agree with this will be enough to convince them to do the change.

And if I may suggest something: do not get too attached to backward compatibility. The .projects.gws file syntax was build out of nowhere with bash limitations in mind. Use something like yaml, it will offer much more flexibility, readability, syntax coloration and so on. And even the name .projects.gws does not sound cool. .gws would be far better and simplier.

repos:
  my/repo: https://…
  my/other_repo: https://…
  a_repo/with_upstream:
    origin: https://…
    upstream: https://…
  another/one:
    branch1: https://…
    branch2: https://…

This if far better no? :smile:

emlun commented 5 years ago

Thanks @StreakyCobra! I agree with you on all points. I'm not quite sure what to do about the name - I do want to distribute the binary as gws and not gws2, but I also would like to keep the project named gws2 to disambiguate it from the original. In the end I might go with renaming it to gws to avoid confusion between the project name and binary name, but I don't know. Maybe keep it gws2 and just encourage packagers to rename it to gws when distributed.

As for the config file format, if you look closely at the sources you'll see I've already prepared for that - the config file parsers module is named gws2::config::parse::legacy. :wink: I wanted to start off backwards-compatible so it could be a drop-in replacement, but I agree on moving to a more capable config format in future versions.

StreakyCobra commented 5 years ago

Why do you want to disambiguate it from the original? As you made it backward compatible, it is not a totally new project, it is a rewrite in another language. This is technical choice, the usage stays the same. You can simply take the name gws and continue with it :smiley: But this choice is yours at the end, just my humble opinion!

As for the config file format, if you look closely at the sources you'll see I've already prepared for that - the config file parsers module is named gws2::config::parse::legacy. wink I wanted to start off backwards-compatible so it could be a drop-in replacement, but I agree on moving to a more capable config format in future versions.

Amazing :1st_place_medal:

emlun commented 5 years ago

True, good points. :slightly_smiling_face: I just pushed out an AUR package, and in packaging it with shell completion I decided it probably does make the most sense to rename it to gws. So now I've renamed everything except for the GitHub repository to that. :smile: I think I'll let gws2 remain in the repo name and AUR package name for now, and rename those in conjunction with the 1.0 release.