Example Client on-ramps

One of the questions we have been asking a lot lately is how we make our work easier for new developers to understand. A good place to dig in with working code is the Example Client, but that code is just one piece of a larger system. How can we improve that client so that messing around with it yields useful information about DSNP and how to join the ecosystem?

In particular, we are thinking about how to enable tire-kicking devs to connect to a test net and post content others can see. In a decentralized system, your content is your own. Content is served from your (or your app’s) server, not ours. That makes ad-hoc testing difficult for people who haven’t setup public services. They can mock a lot of workflow, but can’t easily make it available to others.

There are a lot of ways we might try to help developers with this particular hurdle. Proxies of all kinds abound. We are mulling this over and would love to hear from you what types of solutions might work for your environment.

2 Likes

Here are some notes from a recent meeting we had on this topic. Feel free to jump into this discussion!

Example Client path-smoothing for tire-kickers
28 Sept 2021
Alex, Scott, Claire, Shannon, Chris, James

Do we want to offer a running example client to users?
How do we enable interested parties to get up and running quickly?

We’re close. If you want to get the testnet up, a sample client up, we have a docker container. And the example client comes down to documentation. But then you’re on a private network and you can’t actually do fun things.

At that point, you’re not that far off from connecting to the QA net. Example client works on it, but the static servers that need to store content are not generally writeable. Your posts won’t be public. That’s just an http issue. How do we put things where people can see it? Do we make some sort of semi-secure HTTP client? We can have the static server that is behind some kind of simple auth and let people have some upload access, but then we let anyone (including the indexer) read from it without a password. That makes a security issue around running an open bucket for anybody to write to.

Another option is require an S3 login. Or provide a proxy or tunnel. ngrok has a feature that makes tunnels somewhat easy. Content only needs to be up long enough for the indexer to get it. Pagekite is also an option. https://Friendly-Pix.com is also a server possibility?

What about pushing to indexer? That doesn’t really work because the message needs a reachable URL.

Can we pay for the tunnels in bulk to lower friction for tire-kickers? Maybe? sounds complex. can we setup our own tunnel solution? Again, that sounds like a side quest we don’t want.

Claire suggests we just clear the storage daily, which is also a good idea.

Shannon says maybe a free API key might be the right answer. Alex likes this idea. We can make it a DSNP key and look it up on-chain.

What about a tor hidden service? You’ll have to run some kind of local httpd behind a tor server.

IPFS is also an option, via a gateway

TODO:
* Alex: Look at Tor hidden service as an option
* A solid set of instructions
* Make all this legible via our site/documentation
* Document localhost-only option too
* Document an S3 solution (but don’t provide keys), verify that example client works against an S3 bucket
* James: post in the forum seeking feedback on what kinds of solutions people want here

Chris says: what about product managers? How do we give them a taste of this so they can jump in? That’s a different problem entirely. They need to see the front end. Any maybe we just give them a small S3 bucket that we flush every day.

Can we apply the Us App moderation here? Scanning, etc? Yes, but it’s non-trivial to make new workflow for this. We can’t just point the existing scanning infra at the bucket.

Scripted DigitalOcean S3-alike?

Proxies abound. James, I created a system that is waiting for approval with the USPTO. It has been about 4 years and I remember thinking through DSNP back then. The way I did it was in a public utility. The trick is to work with someone, not for someone.
For instance, if we all participate, we may all never know one another. See, in order to avoid the distraction of data security, I removed the data. If you think of ownership as personal, it will always be stolen because it has “you” all over it and that is what Facebook and the rest do. Facebook is only an app, so removal is just a matter of the app stores turning off the bad app as a security risk. A system that has no knowledge of data has nothing to own. No liability and no way to do harm but only stewardship through any experience triggered within the system, not any one app.
To apply it to all apps at once through SDK is only logical. When the system is driven by honesty, there is no reason to hold all that is someone hostage, such as threading data through algorithms that lie. The data is not there. There is no there, there, just nil statements and stuff that has no identifying markings as to ownership. Ownership can not be twisted into some, you work for me thing. It has to be driven through activity that quantifies and gives personal responsibility as to what is connected to you. A social media laundry, so’s to speak.
You can’t touch without being touched, the thing is to make the touch real, with real consequences. Any app wishing to distort the intent of the direction any community may be moving will be met with almost a diode system, signifying while allowing only one direction of contact. They will not be able to “touch” back. Most apps are metrics driven, and they stand no test, because there is no data to make metrics. See, the window is one way. It does not go back. There is no influencer, just participants in real activity. My system is just the triggering device.

If we are all in this together, does it matter who is next to you? That is participation and you get more of that by doing it. Good, clean fun through a public utility, similar to what you guys are up to. There is no reason one utility can’t touch another, right? It is just participants in any community communicating. What any application that ties itself to what ProjectLiberty is doing can benefit as all or part of a public utility.

There is a good possibility mine can be a device for yours. Just a thought.

1 Like

I’m not sure what you mean by “public utility” here, but I’m not sure that matters. Still, if you care to explain, I’m all ears.

There are a ton of small, personal server projects that would make great personal agents and storage boxes in a decentralized system. TBD how they fit in, but I agree personal devices with persistent net connections have a role to play for at least some users.

Thanks for asking James. I hope to not clutter your feed here. Let’s just use an example of public utility. If you have a group of people wanting to perform a task and the tool is in each of their hands, that is a public utility. Where ownership is to those who actually participate. Where the use of products made from that tool are able to be disseminated throughout any defined target area. Commerce has issues with state lines and regulated providers fall under the guise of state in legal terms. Those state lines are uneventful to a shovel or any other “public utility.”

I watched an interview with Frank McCourt Jr. on PBS Frontline and he spoke to public utility the way I do, that it is all for the public to use, freely without being bullied by privacy issues. Public is that which others can do with you, not what you can do with others. Take a public address system for example. Each person seeing that announcement is to be viewed as a point. The discussion is not how well the address system worked, unless the town is obliterated from the natural disaster, it is that persons perspective. I used to kid when on job sites, “Looks good from my house.”

Perspective is the pool in which we swim. It can be seen that masses of grouped entities gather to deliver that one, pinpoint message, but it is one owner at the end. I liken my system as a location system. And yes, a public utility. Think of it as a ruler that the owner uses. Though the persistence is there, it is background and honest. It has no “data” usable and no personality traits or even a log of events activity. It is a bag of tricks owned by those contributing into the system through the use of a public utility.

I see that messaging matters to you guys and that’s okay. Mine doesn’t care who you are unless you are a part of the system. It is a Node like system in raw near comparison. Equality matters and public utility, in thought, is a perception. Mine is a tool to find a drop where ever it may be in a glass of water. Similar to how the PA system mentioned gets to any point though the message is not a point source (one-to-one path) or direct in any way.

Detailed art specs for the USPTO are the gist of the filings for this “Utility Patent.” Of course, every patent is to be expanded upon once having the right to proceed unchecked once approved. You are either a better mouse trap or you are that which may be defined by a mouse trap when searching for comparison. The thing or method has to have utility. “Public” just means not to be owned for private venture or other throttling to usage components. Do not confuse public utility with those regulated energy things. They call them public utility, but they can’t exist outside any state willing to harbor the abuse. The holding companies double dip and the off-shore tax nonsense is just theft, pure and simple. Hence, regulation. But if a utility functions as defined, it needs no regulation. Facebook sold itself as a utility without patent when it was just an app. The truth eventually come out so, I would like to start there, letting all using the public free to do so. Think of the users as one big company, with purchasing power, Now that is a public utility, therefor protecting the ownership rights to the participant.