-
-
Notifications
You must be signed in to change notification settings - Fork 449
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
Positioning, Vision and future direction of the Dat Project #824
Comments
Personally I think the naming is not a problem. Right now, dat does not need more growth than it is seeing - people are finding it organically and building infrastructure, tools and systems around it. Detailed naming of the modules etc. is mostly about being able to find them once you're already in the ecosystem, but the ideal way for people to engage is to come and ask questions. If everything were much easier to discover it would lower the barrier to entry which, right now, would probably lead to a huge increase in support requests and decrease in general progress. The layer of things above dat - tools and platforms built around it - will include things that make dat and the ecosystem of tools more discoverable and accessible imo. |
Perhaps we should use "dat protocol" more often - ranks #1 for its search
thingy https://duckduckgo.com/?q=dat+protocol&t=hq&ia=web
…On Fri, Jul 14, 2017 at 11:57 AM Richard Smith-Unna < ***@***.***> wrote:
Personally I think the naming is not a problem. Right now, dat does not
need more growth than it is seeing - people are finding it organically and
building infrastructure, tools and systems around it. Detailed naming of
the modules etc. is mostly about being able to find them once you're
already in the ecosystem, but the ideal way for people to engage is to come
and ask questions. If everything were much easier to discover it would
lower the barrier to entry which, right now, would probably lead to a huge
increase in support requests and decrease in general progress.
The layer of things above dat - tools and platforms built around it - will
include things that make dat and the ecosystem of tools more discoverable
and accessible imo.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#824 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/ACWlelDZujDjnONxkUd8LmnYXQhZxmQIks5sNzuegaJpZM4OX433>
.
|
I guess underlying my naming objection is the question how ambitious the dat project is? Dat could be one of the large projects on github, with much useful development and good community steering.. |
Some interesting discussion on the #dat irc on the topic:
|
Thanks for starting the great discussion! It seems like there were a few separate points you expanded on in IRC:
I can address a few things on each of these points: Discoverability & SuccessAs @blahah said in IRC, discoverability can be a good and bad thing. We need to be careful not to conflate success with various measures of visibility (e.g. being the top Github project). Two years from now, if we are using a module that hasn't been updated for two years - I'd say that module is successful regardless of it's popularity. The other issue is that we do develop in a very modular approach. That this repository has only 4 core contributors means nothing for how many people have contributed to it's development or the community behind it. We can do a better job of highlighting this but it has not been a priority for us. Finally, there are use cases we're interested in where popularity is a negative. Human rights defenders in countries with heavy surveillance need tools built on Dat or similar tech. But popularity will make it more likely Dat is blocked or measures put in place to make it more difficult to use (see bittorrent). SustainabilitySustainability is a major concern - both in how development is funded and how users use our tools. I'd agree, we do need to do a better job of being transparent about Dat's funding and how we plan to make it more sustainable. As a small team of focused developers we've let a few of the communications aspects slide. I've been trying to prioritize this more lately and hopefully will have some blog posts and other communication about this out soon. Community GrowthWe've been focused on growing Dat through development of (hopefully) funded applications built on Dat. We like when people building Dat or applications on Dat are being paid to do so whenever possible. If folks are contributing in their free time that is great, but it is not something we want to rely on. Frankly, if Dat were to explode in popularity with developers and have a bunch of contributors adding directly to this repository, we do not have the capacity to manage that. We do want our community to grow but most of our work is eyeing users in academia, government, or journalism. We feel that by prioritizing interaction with these users, we can develop tools that have a large positive impact but are also generally useful in other applications. Speaking for myself, these are the core properties of how we can be successful:
p.s. I usually recommend users search for dat project, dat data, or dat protocol, depending on their interests. |
And thanks for your elaborate response :)
I agree with your arguments here.
Valid point. I hadn't thought about this being such an issue, but bittorrent proves it is.
Who has not? If you have these blog posts ready I'd be happy to see if I can contribute albeit just my own 2cts worth.
Your current positioning is clear and has well-defined boundaries. My ideas evolve around local sharing economies, sustainability (social, economical, ecological) and sustainable development / growth (of the social networks), which make it an outlier in this sense but having the same high values as dat project (or its derivatives, like sciencefair).
Yes, important point. Right now to me the project feels overly scattered and fragmented, and for many things you'll have to dive in the code instead of reading the doc (like finding all opts that you can pass hypercore as a parameter). Ideally I could just take the protocol specs and write e.g. a Java port that is compatible with the core modules. Don't know how far dat is from this point. But I know in general getting to this point requires much effort. |
@aschrijver you could implement https://github.com/mafintosh/hypercore in java right now (but for the love of all that is small and modular, I urge you to consider other ways to expend your energy 😄) |
Ha ha thanks, I was not considering it. Was just examplary 😄 |
I understand the reasoning behind your current strategy, but I still think you miss out on a big opportunity. Allow me to elaborate.. Current positioning Dat et al - in its current state - is actually a generic technology framework for creating decentralized solutions of any kind. But it is not presented nor positioned as such! If I would want to use Dat for a different use case, say an event collaboration framework, and not distract you from your science community focus, then I would have to seriously untangle and recompose current modules, add different glue and logic. This because your focus is on file exchange, including hyperdrive, etc. No problem, but it would lead to extra work if later on you would like to incorporate the cool modules I have created. I might have missed Dat Project altogether in my technology research given its application focus, just like I may have missed another viable candidate because it was positioned solely as an IRC app. Broader vision Broadening your horizon and calling it a technology framework (or platform, or whatever is fitting) and explicitly positioning as such will cost you nothing in terms of how the core modules are developed and the pace in which that occurs. You can still have the dedicated core team you have now. And it would alleviate the feeling spin-off initiatives might have of being more or less out in the cold, taking big risk in diversifying from the overall direction. On your landing page you would have to extract the application parts and place them somewhere separately, but more on that later.. Benefits There are a number of benefits to be gained:
Current threats That last point is especially important. As @joehand already pointed out there are unusual forces out there against the success of decentralized computing solutions, which you don't find in other technology areas. Besides oppressive governments there is the commercial aspect. The field is not only not so commercially attractive (a good thing probably), but could also become a threat to current status quo (internet monopolists, etc.). And if applied to local sharing communities any government is not so happy about the taxes the miss out on with all the non-intrinsic bartering and doing each other favours. From about 2001 the internet is strewn with the corpses of 'the decentralized web is coming'- and 'we must act now before regulation strikes'-type initiatives. They did not survive, but I think for most of them it was their positioning, not the 'evil' forces that led to their demise. Repositioning ideas Just doing a bit of brainstorming and ideation here, since restructuring needs a well thought-out plan. Names are just indicative.
Required effort Now this looks like a lot of work, and part of it will certainly be. But most changes can be adopted gradually on a clean migration path.
Well.. quite a post this became. I hope you'll find it useful! |
BTW Just bumped into a confused potential community member: https://stackoverflow.com/questions/44859200/what-are-the-differences-between-ipfs-and-hyperdrive (Apparently the first one asked, related to dat project, I can't find more. Someone having 1500+ reputation could add SO tags for |
In addition to some pretty good ideas, I think @aschrijver has a point. The tech itself is a little bit buried in the dat homepage. |
I have a profile that I haven't used in a long time, but in the process of recovering it, since I can't remember the details :) Anyway, it has 50k something in reputation and if I get the account back I could use that as 'support' for dat. |
Hi all, Some more input, but on a slightly more technical level, but very much related to the above .. Technical considerations If I it understand correctly, simply put, with Dat you now have:
This by using modules from the ecosystem. AFAIK you currently have a modular decomposition, but you do not yet have a full modular design. or call it framework, if you prefer. This because transitive dependencies require me to untangle, recompose and add my own glue logic, in order to realign modules in such way that it supports my new cool use case. Refactoring proposal Instead consider this: Wouldn't it be better if instead Dat was modelled as follows:
So as a
In this design:
I think this constitutes a change that requires only little effort, yet comes with tremendous benefit:
Overhead and effort The overhead of wrapping data payloads into messages is only very small, depending on the message format you choose. So would code changes to existing modules, I imagine (but I'm not the one to say) I might be off in some cases, or stuff already exists; I know still little about Dat. But it is the overall idea that matters :) Cheers! PS. I'll follow up with yet another one. About vert.x this time and how I think it can progress your cause. |
Good feedback, @aschrijver! This isn’t directly related to any of the points you made, but I suggest watching this talk by Alan Kay on the power of simplicity. From my perspective, there is a lot of overlap with how the Dat community approaches (philosophically) some of the problems you’ve mentioned. https://www.youtube.com/watch?v=NdSD07U5uBs You could say the people working in this space of distributed, p2p systems are today sort of like the astronomers of Copernicus’ era :) Also, this part when going over scaling at PARC is particularly relevant: |
We have an out-of-date site at https://www.datprotocol.com/ which we could turn into a technology & developer-focused site. Tara and I can contribute some time & energy to help with that. |
With that developer site, I think documentation is kind of an art form, so this is relevant!
|
@jondashkyle saw 1st video. entertaining! @jondashkyle Huh? ;) One last chunk to my raw input stream, before I'll await pushback and response data :) I wanted to address some concerns @blahah and @joehand came up with, what I mean with 'ambitiousness' (hint: its not github stars) and to introduce you to vert.x in the process. You might want to take a quick peek at their landing page before you read on.. Let's start with vert.x.. Vert.x is interesting for 2 reasons: one, it's a good case study for good project organization and community building, and two, their technology and/or ideas + concepts can be quite relevant to you. Comparing vert.x @blahah The Vert.x project, invented by Tim Fox, came along quite smoothly, with a steady 1.x, 2.x release chain. Tim as custodian had a very practical approach, hammering on KISS, LEAN and steady, healthy growth. Very comparable to want you want to see with Dat. Also their project organization was very similar. Things were added as needed, by people having time and opportunity. Everything fine! But then - despite their careful approach - traction happened. People started taking note. They couldn't help it. And quickly problems started to amount. Code that shouldn't be there crept into So with community involvement they decided on a clear strategy for a total reorganization, to keep their dedicated focus, productivity, high code quality, and guarantee useful community involvement. In short, they did their job well, and even survived Tim Fox leaving the project, without as much as a hitch. The result is there for all to see. Some interesting bullet points (I won't digress too much, hopefully):
In terms of broader exposure to the public Vert.x is still quite low-profile, being silently integrated and embedded in a number of large projects, for dedicated purposes mostly. A kind of exposure the Dat team would feel comfortable with as well, I think.
Vert.x technology Not only is vert.x an excellent example of a message-based application framework, it also puts the properties that come with such architecture design to good benefit. For example by adding polyglot programming support. Now this should resonate with the scientific community! I would bet that given N programming scientists, you get N + 1 programming languages being used. Vert.x polyglot programming allows teams / projects to cooperate seemingly using their (jvm-based) language of choice. And this goes further than just having decoupled modules, or microservices written in different languages. [Note: Regarding JVM I should probably write another post sometime, on a number of interesting cultural observations I made, as a newcomer to your community, like religious superstitions. Let me know if you're interested] If Dat were to be polyglot in the future it would attract a broader range of scientists to both dev and user community - people that already have the proper mindset and moral + ethical values (in general). Then there is the vert.x toolkit itself. Even though vert.x is running on the JVM it can be a useful technology for running/combining with Dat. I don't know the terminology, but I hear about various background services, storage, blind servers, repeaters/forwarders, elevated services, etc.
Traction and exposure Now @joehand besides the 'How much traction can we handle? How much should we handle?' discussion.. You rightfully say 1. 'Traction leads to exposure, and exposure leads to unwanted restrictions'. An interesting subject. And vitally important, I would argue. So are tickling questions like these:
Let's address them in turn.. Negative exposure @joehand wrote:
I agree. But, unless you guys really mess up, negative exposure eventually coming to your project is inevitable. Its a given. And just like asteroids, tsunami's and earthquakes you should plan in advance, make preparations so you are ready when the moment is there. Having a stable, theoretically unstoppable software at that time just doesn't cut it, as I'll explain next.
Minimum exposure Consider that while you go steady and slow, technology in general and encroachment of internet freedoms may well be evolving at an altogether much more rapid pace. And when dark powers strike, you'll be much weaker as a small community of color-bearded ;) good-hearted dev guys, than with a broad, vibrant community with representatives from throughout society, who are willing to defend you tooth and nail. Another point. The above doesn't matter, right? "Our decentralization magic, once stable, is like self-replicating nanotech. Virtually unstoppable once we open the vial.". You may think something along these lines. But you'd be dead wrong! Other than the nanotech, people have to physically switch you on first, on a peer-by-peer basis. And if they don't like your technology, or there is a more viable candidate around they will choose that technology over yours. I know I would at least. Sure, there will still be a number of scientists using your tech in 5 to 10 or even 30 years, just like now with the many old techz - sometimes in archaic languages from the sixties - still floating around. But it would be a damned pity, would it not? You want sow seeds that prosper even when you go for greener pastures.
Optimum exposure We've established there is a minimum required amount of exposure. What about the upper bounds.. Is there a maximum? Or, better stated: What is the best amount of exposure at any specific point in time? Well, I would argue that that should be the maximum amount you can possibly deliver successfully. Strive for maximum exposure! But that's entirely besides the point.
And the efforts required to get the right kind of exposure and build the right community, should put little to no unnecessary burdens or distractions to the core team. Therefore:
You could say, good exposure requires marketing, but I know that is a dirty word :) ** Responsibility** I just recently got interested in the field of Decentralized Computing (after being annoyed how the term 'Serverless' was hijacked by the big server moguls). And I observed following:
Ooff! That puts the Dat project in a unique position! In any other IT field being a first adopter in such an empty field would lead someone to sink to the knees and thank the Big Bang, or whatever God you preach. The special characteristics of this IT area make this position both a gift and a curse. Given this situation can you afford to let the technology fail? Can you afford not going to the utmost in healthy competition to IPFS and others? Can you effort not jumping to grab unique selling points? Or can you afford not to broaden your horizon, and reposition yourself so that IPFS and Dat can coexist happily together? The answer is ... yours to make
Success I am not going to spend much time here. I am not going to talk about 'Failure'. The gist of my rants should be clear by now:
(probably already said by someone, I'm not laying claim :) -- Pfff, that was it, I'm done for now, but created for you with much pleasure! As Richard Quest would rumble, I exclaim: "I hope you'll find it profitable, wherever you may go!" Arnold Schrijver. |
@ralphtheninja that would be awesome. Thanks for volunteering that. Let us know if you get that account back anytime soon :) |
@aschrijver thanks for your input, i think that it's good to talk about these things. User facing work isn't good work unless it's in a constant state of change and reflection, hopefully fast enough to keep pace with a rapidly changing world :) As far as traction and exposure, yes I agree that it's important for the protocol to have exposure, but right now we don't have a ton of resources to spend on that. There is already a large community working on dat and the ecosystem, with lots of input and feature requests hanging unworked on. So this leads me to believe that yes, more developer-focused documentation and marketing ought to be available front and center. The site as it is now was designed before beaker approached 1.0 and other apps started being built on Dat. I think now I'd approach it similarly to what you're talking about, as a data sharing tool as well as a stack for building decentralized apps, with the suite of compatible apps and the logos of organizations currently using dat. I'm going to read through that issue thoroughly and take folks' suggestions to come up with a new front page concept. Thanks a bunch! |
@Karissa thanks for your feedback! And remember I am not criticizing anyone in any way. You've done a tremendous job getting where you are now. Nice to hear you are like-minded on so many points. Besides the more cosmetic and informational aspects, I hope you are equally triggered by the more strategic, disruptive and sensitive point I am laying out here. (For that matter I may have distracted you myself from the real essence of this thread, by providing too much additional eye candy and side paths.) I think in my comments you'll find plenty of hints to strategies on finding more funding and obtain it more easily. If funding is an issue, you should fix it ;)
The more reason to go the vert.x route (or some other successful initiative of your liking)! |
FWIW, I would love to implement DAT in other languages/frameworks, but am stopped mostly by a lack of clear documentation on the protocol and internal data structures. In particular, I'd probably implement it in Luvit, C, and Rust as I have time. |
@creationix have you read the dat paper? https://datproject.org/paper If that isn't good enough reference then could you perhaps @mafintosh know what you think might be helpful? He has expressed wanting to make it clear enough to reimplement dat. |
There wasn't enough detail in there last time I looked, but I see more now thanks. |
@creationix IMO it would be fantastic if there were more language implementations, that could interoperate in the Dat ecosystem! That would make the technology so much stronger, more capable to survive I've seen this recently with GraphQL, where besides the reference implementation now has stable implementations in Javascript, Ruby, PHP, Python, Java, C/C++, Go, Scala, .NET, Elixir, Haskell, SQL, Lua, Elm, Swift, OCaml, Rust, R and yes @whilo also in Clojure, but you were probably already aware of that.. @Karissa Explicitly promoting your spec and stimulating implementation initiatives is yet another way to acquire more / easier funding |
On request of @dominictarr I created an executive summary, which I copied here to lead the discussion back to essentials, not implementation details. Executive summary
--> They failed because did not properly define the roadmap to their own success (maybe some even didn't define success at all) As a newcomer (interested in building a social network) I made following observations on some currently viable candidate technologies (i.e. the players, and specifically IPFS, SSB, Dat and Replikativ):
Now, where previous failures had mostly themselves to blame, you are of the first generation of DC software initiatives that will be challenged by the dark powers Slightly exaggerated, but in essence true, the choice is for a future internet where there is:
Recommendations
Quick reference
|
Thanks, this was interesting. I'm going to close this, feel free to continue discussion in our discussion repo: https://github.com/datproject/discussions. |
Feels like its all being archived :( (UPDATE And severely cleaned it up, so it was probably for the best. Please take a look: dat-ecosystem-archive/datproject-discussions#58) |
It is being archived. We use this repository to manage our work on the command line Dat tool and determine what to work on. We understand it is often used as a catch-all for the project but always try to move them to the proper repository. Keeping issues open that aren't related make addressing the actual issues more difficult. We actively manage issues in this repo and try to close issues regularly if they are not related to the command line tool. These points are made in our contributing guide which we ask you to read before opening an issue:
And:
Please keep this in mind when opening future issues. We can move all of the comments here to another issue in that repo, if you'd prefer. |
Well written and understood. Thanks. I would move this to a Contribution Guidelines section if you hadn't already. |
@aschrijver The most important aspect which is security wasn't addressed properly by Dat. Dat network still has to face same problems other DHT adopters had with Sybill attacks,node adversarial fraction and still possible churn. IPFS approach with Coral DSHT+ S/Kademlia is much better and still missing in Dat. |
NOTE This thread has been cleaned and moved to dat-ecosystem-archive/datproject-discussions#58
Alternatively jump to Executive summary on this page for an overview what is here.
.
.
I love the dat project! ❤️ And I think it is currently uniquely positioned in the IT landscape.
Designed primarily for distributing scientific documentation, but it could have much broader application.
I am thinking of a dat as a more generic application platform (the core of it, at least) to create decentralized social networks, and particularly well-suited for creating solutions for the emerging sharing economy.
Instead of file exchange, dat would be involved with message exchange, message collaboration and event sourcing.
The opportunity is now.
I've done my research, and found just the tiniest amount of viable technologies / competitors for decentralized solutions. It basically boiled down to this:
Plus dat project: Written in accessible js, and doing complex things with a (still) relatively small codebase....and here comes the but...
BUT:
From a marketing perspective the naming of the project and its components is just terrible, IMHO:
You will never gain good visibility for the project with this naming scheme. And not only visibility, but also traction. A (aspiring) dat developer will have a hard time finding resources, seeing what the community is doing, etc.
Maybe I am ranting, but I think proper naming is essential for the long-term success of the project. I am afraid that without it, you'll risk ending up in that Other category once current people lose interest in a few years.
Keep the ball rolling, you are doing great work!
PS It would also be great if all dat-related project dependencies (e.g. hypercore, hyperdrive) were under the same umbrella, even though still usable independently of each other.
PS2 I cross-posted to replikativ project to make discussion more interesting: replikativ/replikativ#8
The text was updated successfully, but these errors were encountered: