fclairamb/ftpserver

What happened to this repo?

muesli opened this issue · 3 comments

Suddenly all the releases are gone? Has the repo been wiped and the code uploaded freshly?

Hi @muesli,

Your concerns are very valid. The existing repository has been renamed ftpserverlib, and the release are there, I made a fork of this one here but I forgot to push the tags in this repository.

I'm changing a few things:

  • The name was a bad one, it's a library and not an actual server. So I moved the upcoming library to fclairamb/ftpserverlib
  • The sample implementation of the server was considered by many users like an actual server when it clearly wasn't. So I decided to make this repository an actual FTP Server that can be used by many people as-is. One of my first goals is to offer FTP to S3/Dropbox/Gdrive integration.
  • I broke a lot of the existing APIs:
    • By splitting things more correctly between the sample server and the library, it allowed me to make quite some changes to the repository structure to make it cleaner (for example move the tests next to the code) but that breaks existing API.
    • I decided to update the file access API to use a more standard one (afero) so that it's easier to integrate and so that building backends for it is more motivating. The actual changes were quite simple because both afero and my file implementation were very close to the Go types.
    • I decided to update the logging API to be more opinionated and allow to use other kinds of libraries (I have uber/zap in mind) and simplify the logging rules.

So:

  • The server/library as you know it is about to disappear. But existing tags should still work (now that I pushed them back).
  • The upcoming library should be a lot easier to integrate, you can basically just provide an afero.Fs when user authenticate.
  • The upcoming server should be a lot more powerful.

I'm happy to help you to update your existing code to the library, or get you up to date on the server, or more importantly to get to know how you use it right and how I can make it better fit your needs.

Thanks for the detailed explanation @fclairamb! Greatly appreciated!

@muesli you're project is very interesting and even if the server definitely wasn't built for this kind of use-case, the upcoming version (still in PR #8) will.
It might become a bit heavier (with each implemented backend). I'm seriously thinking about using plugins (which I think are great but still not supported on windows).

I really like the intensive tests you set up (with GitHub actions) and the general choice of backends you took.

The funny thing is we are targeting the same kind of backends.
On my end I decided to go with afero to handle all FS, it's a win/win in the sense of:

  • It's easier for anyone to integrate a backend on this server
  • Any implemented backend (like the one I reworked for S3) can be re-used for any other project