Git Product home page Git Product logo

harvest's Introduction

Harvest

What is Harvest?

Harvest is a one-stop web application for torrent management - from ease of use to extreme scalability - everything is covered.

Project Goals

  • Easy - create a system that's simple to set up. It should require minimal knowledge of Linux and command line usage to install and configure.
  • Extendable - make it easy to add various functionality, some of it supplied as part of a core, other supplied and maintained by different people in the community.
  • The 100K - enable transparent support and good performance even with 100K+ torrents. Transparent means
    • You should be able to use the system just as fruitfully with 1000 torrents as with 100`000.
    • You shouldn't need to need anything super special to enable 100K. Minimal effort is OK (e.g. opening 10 ports instead of 1 for seeding), but otherwise everything should work out-of-the-box.
    • All features should work just as well with 100K as they do with 1K.
    • While technologically difficult, we'll do our best to not sack features just because they're difficult to implement for 100K.
  • Modern - Harvest should be modern both for the users and the developers. The aim is to give a polished and user-friendly UI, while using new, but well established technologies for development.

Communcation and Team Work

For now, I'll be main driver of communication, development, design and handle most functions. I'll try to keep this README current as the project develops. In case other people can do a better job at something, I'm more than willing to give up roles completely over to him/her.

I'll do my best to avoid the anti-pattern of Design by committee. To facilitate that, for now I'll be the gate keeper of all design, functionality, features, decisions, etc. I'll do my best to list to everyone's input and make the best decision, but don't be discouraged if your ideas don't get adopted.

We will not be writing endless proposals, design documents, discussions, etc. If you want to do something, take it on, write some code, make it nice and clean and if it's the best proposal, we'll integrate it.

The current communication structure is just a first-pass, let me know if you think something is broken or can be improved:

  • Overall architecture, project areas and technical design will be placed in ARCHITECTURE.md. I'll keep this updated as I decide on approaches, integrate other people's work and the project develops.
  • Specific issues, calls for help and async discussion will happen in individual GitHub issues.
  • In-person communication and live discussion will happen in IRC in the #wm2 channel in the Red IRC network.

As a start, head off to GitHub Projects -> Project Areas. Initial development will happen as a discussion in the individual areas with each contributor creating one or more separate forks or even separate repos containing POCs showcasing the solution of that problem. Once we reach a conclusion how the problem is going to be solved, we'll work together to integrate it into the main repo.

Technical Approaches and Design

Not 100% set in stone, but most of this will hold up.

  • Harvest will be an SPA web application using a REST API to handle front<->back end communication.
  • The backend is in the latest version of Django (2 at the moment) and Python 3. Django REST Framework will be used to a certain extent to manage the API.
  • The frontend is in React with state management TBD.
  • Packaging will be done in multiple ways, probably involving at least manual set up, Docker, and a VM image.
  • The torrenting backend is still a bit unknown. Current work in progress is a custom solution using libtorrent-rasterbar, but that's pending discussions with mods/admins at various sites. It's possible that the torrent backend will be pluggable, with a compatibility layer being offered to use Transmission instead of the built-in client.
  • There will be a core module for supporting different trackers, managing torrents, storage and settings. Everything else will be provided as a set of built-in modules and the appropriate hooks for enabling adding plugins that provide functionality on top of that. How that's going to be achieved is fully TBD.

harvest's People

Contributors

harvest-project avatar 2600box avatar corduroy300 avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.