If you build a plain Holochain app (which is what you do first anyway even if you intend to have it be Holo hosted at some point), there is no such thing as "hosting". The hApp runs completely decentralized. Every user is also showing up as host to some extend. Everybody running the DNA (and passing the optional DNA membrane, i.e. validate_agent callback) will be a part of the DHT and store, validate and serve some entries. Which means for you as the hApp developer, you just need to somehow distribute the DNA(s) and UI(s) of your hApp (together in a "hApp-bundle") so your users can install them and join the DHT. We are building a hApp-store for that, but you could distribute and deploy hApp-bundles your way too - especially if you're running private/closed hApps (which would be closed because of your custom membrane code) you wouldn't always want them to be visible publicly.Holochain is a framework for building decentralized apps - i.e. every hApp is its own p2p network implementing this specific crypto app.Now, for users to use the hApp, they would have to run a "full client" which means also storing and serving data as described above, if there wasn't Holo. The incentive for users to provide that computing capacity is being able to use the app.Holo is all about making hosting of hApps something you (as a hApp devloper / or as a user) can pay somebody for so that they take on the hosting part and have users use your fully decentralized crypto app just from a web browser. HoloPorts are bridges between the new and fully p2p Holochain networks that every hApp is, and the good old web 2.0. Early adopters and user that have a specific reason to do so will (want to) run their full node and have their own data stored on their own devices. Users that wouldn't jump over this barrier can use the same hApp and interact with those full node users just with web browser because HoloPorts take on their share of DHT hosting and act as a server that the browser can connect to.
You seem to hold some fundamental misconseptions about Holo, Holochain and "The DHT".1) Holochain is part framework and part protocol. It's purpose is to make it easier to build p2p apps, self-hosted with data integrity. Holochain takes care of the networking of a hApp, it's distribution and to ensure the validation of each hApp.2) There is no "Holochain Network"! Each hApp creates it's ow network. The core of each hApp is called the DNA. That is the validation rules and functions of a hApp. In order to join a hApp, you need to run the exact same DNA-code as everyone else. The DNA is what defines a hApp network.3) Each hApp-network is peer-to-peer in nature. The DHT is how the data is distributed on each network. When you create an entry in your hApp, you store it locally in your source-chain and then you publish it to the DHT. Each entry has a hash that defines in which neighbourhood of addresses on the DHT your entry gets stored. That way, when you go offline, your entry is still accessible by anyone on the hApp-network.Depending on the hApp, an entry can be a post, an event, a transaction, a picture... whatever suits the purpose of the specific hApp.4) when you run an app locally, you are agreeing to take some of the overall resource load and help the application to validate and store entries (i.e. transactions) and share those entries with others on the network.5) all nodes fully store their own data/ledger or interactions for any hApps they use (local source chain... it has nothing to do with hosting though)6) Leechers don't exist in the pure Holochain concept. Everyone who joins a hApp-network also takes some of the overhead.In this explanation I fully excluded the Holo-hosting aspect. Just to make it very clear, how Holochain works.
Holo-hosting uses these principles to create a hosting network. To run hApps you don't need holo-hosting. The downside with pure holochain apps is, that everyone would needs to install them.Holo-hosting is a hApp (or rather a pool of interoperating hApps), that hosts other hApps and serves them as Web-Apps to web users. It's purpose is that web users don't have to install a hApp on their machine. Which will make adoption much easier.
Holochain manages the Data part of an App. In a traditional App you have a database. Holochain could also be described as a distributed and validating database.Additionally you need a user interface, that essentially hooks into the Holochain part with an API. It doesn't have to be a web app. Any kind of software can hook into a Holochain App to enter and retrieve data.That also means that a UI can hook into many hApps at the same time. For one that means it makes sense to buils small hApps with very limited and specific functions, and to weave them together with a UI.
In Essence pure Holochain Apps are only running on the devices they are installed on, and they can only be accessed when installed.Holo Hosted hApps, in addition to being installed, can be accessed through a browser. In that scenario, the Holoports are a special part of the hApp network. They do the work to bridge between the self-hosted hApp network and the web-user.
Sure, the rules of the hApp are in the DNA(10% of hApp written in Rust). Anyone can customize any hApp to their preferrence as long as they do not break the rules. If they do, they would get forked into a separate hApp with their customizations but it would no longer be compatible with the original hApp.