Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Next Generation Ideas #406

Open
varbhat opened this issue Nov 10, 2023 · 16 comments
Open

Next Generation Ideas #406

varbhat opened this issue Nov 10, 2023 · 16 comments
Assignees
Labels
enhancement New feature or request question Further information is requested

Comments

@varbhat
Copy link
Owner

varbhat commented Nov 10, 2023

exatorrent right now is good enough for my usecases. that's why you might have seen less activity on adding new features even though we fixed bugs and did occasional changes. this might be because of the reason that I only released this project to the public after i felt that it's good enough for my usecases. Regardless of these, it will be maintained and developed in future.

I have been thinking of how we can improve exatorrent in future and i want to publicly discuss this.

  1. Multiple users: exatorrent has always supported Multiple users. Is anyone using this feature? Is this beneficial?

  2. Alternative torrent engines: exatorrent currently depends upon anacrolix/torrent library. Maybe we can support external torrent engines. qbittorrent, rtorrent and transmission comes to my mind.

  3. UI revamp: Not gonna lie, I hastily wrote the UI for exatorrent. As such, it lacks some features and might be improved even more. exatorrent doesn't have pagination which i desire to have.

  4. API revamp: Currently,i have only exposed websocket API with few other REST APIs for serving files. But, instead of using websocket, we can improve upon by streaming JSON and REST endpoints.

Thus said, i would like to have discussions on this, and love to hear your opinions. You are also heartily welcome to contribute to this project at any capacity. Open source projects thrive though the community.

@varbhat varbhat pinned this issue Nov 10, 2023
@varbhat
Copy link
Owner Author

varbhat commented Nov 10, 2023

CC: @nlevee @mckaygerhard

@nlevee nlevee added enhancement New feature or request help wanted Extra attention is needed labels Nov 10, 2023
@nlevee
Copy link
Collaborator

nlevee commented Nov 10, 2023

I'm just starting to use it, and regarding the features you propose I generally agree with your feedback:

  1. Multi-user is not useful to me today. I can't think of a case where it would be. What was the original need?
  2. What would be exatorrent's role in supporting these other clients?
  3. I like the minimalist side of exatorrent (one of the reasons I chose it) but I agree that pagination, display of download and upload speed, and other informations would be great.
  4. The websocket API is great, but a standard REST API would be a real plus compared to other "oldschool" clients.

My usage is a bit particular: I have a mini-cluster and I try to decouple as much as possible the bricks linked to my uploads (download, search, rename, move, ...) with respect to this usage, I might add:

  1. Write to non-local media: s3 (for example)
  2. Manage more webhook type events (start of download, seed reached...), today very few clients communicate their events by webhook, this is a real plus of exatorrent for me.

Happy to help on any subject ;-)

@mckaygerhard
Copy link

Note the amount of interest that the project generated, this is because it offered something different, but these users are like geeks, and they leave with the same thing they come with, because for a long time it had no collaborators.. he made the project for their own needs and gains so much praise in nowadays

You see, @nlevee exatorrent is practically a customer-service system, and unless it is oriented to be used on phones must be multiuser or multiengine like uget (gui) + aria2 (console) does for linux as the only multi downloader ,

look: there are very advanced clients on the desktop, also taking into account that in Winshit there are too many popular options and in Linux the minimalists would prefer their own for that. "one click app", if it is not multi-user it would not have meaning in the wide world..

have a mini-cluster and I try to decouple as much as possible the bricks linked to my uploads

this confirms all what i write here, only rare geeks with nonsense complicated customized setups, cloud for cloud files? torrents are cloud files and only those not so common will need care.. if you try to re download the game in windos fo ancient times there is no seeds available unless is a popular game!

The websocket API is great, but a standard REST API would be a real plus compared to other "oldschool" clients.

also

Alternative torrent engines: exatorrent currently depends upon anacrolix/torrent library.

there is aria2c command line + library, this is the best unix-like application for downloading @varbhat inclusively from mega downloads!

so making exatorrent multiclient or supporting aria2c will convert exatorrent in a multi downloader frontend and put the project in a super direction..

most of the ideas are for rare customized setup but after such implementation is infected in the project authors abandoned such project.. inclusively today VarBAt is so busy . .. and you with your "customized clouds super geek setup" will try to change the project but after that? will continue until end supporting that?

sorry for hard words.. but some things are just sad realities, i am a friend of VArBath and I appreciate it for its promising future, but I am super anti windos shit and super anti anything non-traditional or windo winbuntu vould arshit containerized or etc like

@nlevee
Copy link
Collaborator

nlevee commented Nov 10, 2023

I don't really understand your position, the principle of an open source project is to let the community express itself. That's what @varbhat did, but I get the impression that it's harder for you to get feedback that doesn't go your way.

If the project perfectly met people's needs (geek or not) it wouldn't have been almost archived by @varbhat. So it's legitimate to ask what needs to be transformed.

I think that if @mckaygerhard responded to every feedback or need from the community as he do here, it's no wonder there are so few contributors.
You (@mckaygerhard ) denigrate desktop users (win or linux) but you want to design an application that appeals to them. You denigrate "geeks" but you want them to remain contributors... I think your approach is wrong. You close all debate, but you offer nothing in return.

It seems to me that your requests are also very specific (cf. #213)...

My needs are indeed very specific to my use, but I don't impose my ideas. If I'd wanted to propose nothing, I'd have forked and modified the repo on my own without ever contributing.

So @mckaygerhard , what are your proposals? Where are your contributions?

@mckaygerhard
Copy link

as a surprise for you i work for public people.. @nlevee and unless developers i pleniy understand users.. linux and geek user represent only 0.01 % of the shared marked..

@nlevee
Copy link
Collaborator

nlevee commented Nov 11, 2023

Ok but this issue is open to discuss next iteration and ideas.
What are your's @mckaygerhard ?

@mckaygerhard
Copy link

Ok but this issue is open to discuss next iteration and ideas. What are your's @mckaygerhard ?

the UI is pretty great due simplicity.. of course you must know what to do.. this leave into a problem.. if you want a big user base.. this kind of messages must be selft explanatory.. by exampel "user already adde" so my opinions were HARD BUT TRUE!

image

also @nlevee the golang version is too high.. the idea is not to force a specific version and able to build with any version of swagger and golang..

@mckaygerhard
Copy link

mckaygerhard commented Nov 11, 2023

I think that if @mckaygerhard responded to every feedback or need from the community as he do here, it's no wonder there are so few contributors.

as i posted here #406 (comment) (check picture) the usecase does not fit with normal users.. cos the user must know that the user was already add.. so this usecase is not well defined.. but lest take into consideration @nlevee

  1. exatorrent is a collaborative work so . the user must acept that (the ui just report a error that ws not error, just that the user already exits) but unfortunately normal users are dumbos .. so what we must expected?
  2. exatorrent is then made for a min level of knowledge? ok a more advanced user .. ugh.. already has windos.. so why use exatorrent... ?
  3. ok but we are geek so lest use exatorrent cos is light (EXTREME LIGHT) and can manage.. torrents? only torrents? but i want to download from mega? my movies! i want my movies! XD 😄

men.. trust me ! i a good friend of Var.. i just try to put in the table the issues!

my 50c

i very liked the IDEA.. i was one of the firsts users.. here my older ui from first releases: https://t.me/opentechnologies/51616 0.1.2 i tried for a while and inclusive i downloaded just for fun the XP sources from there!

support a complete download backend

A. option 1 : proposed (but just rejected by @varbhat but lest just write here) to change the backend of exatorrent.. to support aria2c that already support torrents fully!
B. option 2 : change the golang backend by an aria2c command line.. and only leaves the web ui to support aria2c.. this is lest to develop.. the aria2c could run as normal dedicated user

improve documentation and handle a demo site

there is no way to deploy a binary program but i can just try a host in the work.. i can ask for limited bandwidth and limited files.. offers the functionality

i can also help with github actions.. but as he said is not so simple and will fill the repo with buch of rules and files.. docker already can handle that.. but here the problem.. i already have 2 devices in home.. a 32bit daruma and a i9 dell .. the i9 is laptop so is not for dedicated downloads.. but your current build does not run in the daruma (AMD geode)

so builds for older and limited env is cruzial for user base also

embeb the help for users will improve cos user dont like to read

lest remembered that users dont like to read so :

#407

@nanreh
Copy link

nanreh commented Nov 18, 2023

I vote for a simple HTTP API, one that would make it easy to integrate exatorrent into the *arrs applications (Sonarr, Radarr, etc). I've personally been looking for a minimalist torrent client in Go or Rust and exatorrent checks all the boxes but I don't see an integration yet for those popular daemons and I'd be willing to write one but not having a simple HTTP API makes it difficult.

I think it would also be nice to be able to modify configuration dynamically: like if the peer IP:port happens to change (as happens with VPN connections).

@nlevee
Copy link
Collaborator

nlevee commented Nov 18, 2023

I also think that this issue #376 is interesting

@mckaygerhard
Copy link

@nlevee @varbhat i opened the discussion #418 to being more organized:

means that the rain must fall here and the result/conclusons in the issue will make the development separated from opinions! by example me! so you two if dessired can lock this issue for you two and leave the rest on the discussion threat

Just put an annunce on the tittle for future users

@varbhat
Copy link
Owner Author

varbhat commented Nov 21, 2023

People,

I have decided this. Please care to comment if you have objections.

  1. Remove multiuser: because no one seems to use this feature.
  2. Remove Postgresql alternative backend: we use db(sqlite or psql) for storing users AND byte completion. we currently can remove psql backend because i don't think it's good choice for the program rn.
  3. Look for cgo-free alternative to sqlite: it would be better if we can get rid of cgo(sqlite seems to be major culprit). we can look into native-go db(key-val dbs look good) and also we can experiment with modernc/sqlite which is cgo free implementation of sqlite.
  4. Implementation of VFS: Imagine if you can directly download torrents to your webdav/FTP location with your server only acting as torrent engine. I had originally thought of it but didn't implement. we may have to fork anacrolix/torrent if it doesn't provide API/ we can upstream our implementation but i think this is nice desirable feature to have.
  5. Webdav access for Torrents: If you have exatorrent server, you must be able to mount torrents as native directories using rclone AND you can also browse/view in file manager.
  6. Slim Web Interface: Add Pagination, Lightweight and Featureful UI. Simple by default, powerful when required.
  7. Alternative Backends: I have decided against having multiple backends. It would be hassle. One good point of exatorrent is that it's all in one package. you take the exatorrent binary and run it. That's it. That's it People!!!! But, having multiple backends don't look good. anacrolix/torrent is excellent library. but, if that proves to be inadequate, let us also have an option to use libtorrent rasterbar/rakshasa (via cgo bindings ofc)

Another thing, please don't fight. It doesn't look nice, let's keep everything professional (CC: @mckaygerhard )

If you have any suggestions/objections, let me know.

@nlevee
Copy link
Collaborator

nlevee commented Nov 21, 2023

Hi !

2-3. Maybe we can use a native embeddable database like :

  1. I think anacrolix/torrent implement an interface to develop any storage backend (https://pkg.go.dev/github.com/anacrolix/torrent/storage#ClientImpl)
  2. Maybe we can replace native JS 'alert' by another 'non-intrusive' solution

I'm totally agree with every other points 👍

Do you create Issue for thoses features ?

@mckaygerhard
Copy link

Another thing, please don't fight. It doesn't look nice, let's keep everything professional (CC: @mckaygerhard )

you know me pretty well .. true always is hard.. but i will post into the discussion board #418 (comment)

If you have any suggestions/objections, let me know.

@varbhat
Copy link
Owner Author

varbhat commented May 4, 2024

Current Improvement Ideas:

  • Web UI Rewrite using Svelte 5 and Simple.CSS
  • Backend Refactor
  • Support both PostgreSQL and Sqlite but Add Build Time flags to enable/disable each of them
  • Add instructions for running behind FUSE (I didn't add additional implementations to keep the size of the binary low) which lets you to use S3/Minio for storage for example.
  • Provide Optional Integration with Jackett for Searching Torrents
  • Explore Multiple Torrent Engines
  • Add Tag based Torrent Management

If you have any other ideas or suggestions, please let me know.

@varbhat varbhat added question Further information is requested and removed help wanted Extra attention is needed labels May 4, 2024
@zakaria-didah
Copy link

show more info from the metadata. like pics and etc... definitely work on th UI a littel more.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request question Further information is requested
Projects
None yet
Development

No branches or pull requests

5 participants