Support for Neocities as a backend

Hello!

First, a note, this post originally had many embedded links to different pieces of information but since I'm a new user on this form I'm only allowed to have 2 links per post. I've therefore had to pull them out and add spaces so that they are not detected as links. I've kept most of them like this since I believe they provide crucial context to this post.

Edit: Good news! I've been bumped up a trust level and the embedded links have returned.

For the uninitiated, Neocities (https://neocities.org/) is a free and open source website host that's been around since 2013 and apparently has 416,000+ users as of posting.

I've been working on implementing a Neocities backend for rclone for the past few days, it's pretty much complete now, I've just got to write tests and documentation. You can view the code here: https://github.com/luavixen/rclone/tree/neocities/backend/neocities

I wanted to get some feedback on what I've got so far and gauge opinion on this new feature! I'm in many different Neocities communities and so far I've already been getting a bunch of positive feedback of people using this new backend to do things like mounting their sites locally or downloading backups (Neocities provides a backup feature but it's disabled for large sites, 100MB I believe).

Note that Neocities does provide a WebDAV endpoint (endpoint, info, source) but it is supposedly only available for people paying to be a Supporter ($5 USD a month). However, while the documentation for how to connect is hidden from free users, the actual endpoint has no checks to see if you're actually a supporter. I discovered this halfway through development of my standalone backend, which uses the free Neocities Developers API, and was originally going to just create a guide explaining how to use WebDAV without supporter, but:

  • I don't think it's in good faith to use a supposedly paid feature like this without actually paying
  • The check to see if an account is a supporter could be added with a single line of code at any time
  • The WebDAV endpoint is incredibly slow

While I haven't done any proper benchmarks, based on the experiences of myself and some of the people who have tested both my backend and the WebDAV backend + the Neocities WebDAV endpoint, WebDAV is 2-3 times slower (or worse!) since it relies on going through the entire user sign-in process for every single request. From some tests on single requests, listing the root directory of a small site could take 600~ms with WebDAV and user/pass authentication, while using an API key could reduce it to 200~ms. This makes WebDAV incredibly annoying to use especially for managing/syncing/backing up large sites with many small files due to spending the majority of time waiting for the database to process all the repeated sign in attempts. While I'm sure this could be fixed in the future, it's been like this for 8 years and Neocities hasn't been getting any updates for the past few years.

Speaking of issues with Neocities, my backend originally supported SHA-1 hashes since the Neocities API supposedly provides them when listing files, but I eventually had to remove support as for some reason all hashes get returned as null when listing a specific directory instead of all files on the site. I think it would be unreasonable to work around this issue by listing every file any time a hash is requested, especially for larger sites where it would take a considerably large amount of time. I've submitted a pull request to the Neocities repository on GitHub with a fix for this issue, but Neocities moves extremely slowly and I don't see it getting merged any time soon: https://github.com/neocities/neocities/pull/385

Also, the addition of a Neocities backend has previously been discussed on this form, see:

That's all I have for now, I'd love to hear everyone's thoughts, opinions, concerns, anything! Thank you for your time!

1 Like

I'd say feel free to submit a PR as you'll get more discussion there I'd imagine as we do appreciate you following the rules and posting here first.

1 Like

Okay sounds good, will do soon once I've finished some of the stuff like the docs! Thank you :3

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.