123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607 |
- <!doctype html><!-- This is a valid HTML5 document. -->
- <!-- Screen readers, SEO, extensions and so on. -->
- <html lang=fr>
- <!-- Has to be within the first 1024 bytes, hence before the <title>
- See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
- <meta charset=utf-8>
- <!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
- <!-- The viewport meta is quite crowded and we are responsible for that.
- See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
- <meta name=viewport content="width=device-width,minimum-scale=1,initial-scale=1,shrink-to-fit=no">
- <!-- Required to make a valid HTML5 document. -->
- <title>Sync/Backup workshop at Redecentralize Conference (archive) — David Larlet</title>
- <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
- <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons/apple-touch-icon.png">
- <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons/favicon-32x32.png">
- <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons/favicon-16x16.png">
- <link rel="manifest" href="/manifest.json">
- <link rel="mask-icon" href="/static/david/icons/safari-pinned-tab.svg" color="#5bbad5">
- <link rel="shortcut icon" href="/static/david/icons/favicon.ico">
- <meta name="apple-mobile-web-app-title" content="David Larlet">
- <meta name="application-name" content="David Larlet">
- <meta name="msapplication-TileColor" content="#da532c">
- <meta name="msapplication-config" content="/static/david/icons/browserconfig.xml">
- <meta name="theme-color" content="#f0f0ea">
- <!-- That good ol' feed, subscribe :p. -->
- <link rel=alternate type="application/atom+xml" title=Feed href="/david/log/">
-
- <meta name="robots" content="noindex, nofollow">
- <meta content="origin-when-cross-origin" name="referrer">
- <!-- Canonical URL for SEO purposes -->
- <link rel="canonical" href="http://www.flourish.org/2015/11/syncbackup-workshop-at-redecentralize-conference/">
-
- <style>
- /* http://meyerweb.com/eric/tools/css/reset/ */
- html, body, div, span,
- h1, h2, h3, h4, h5, h6, p, blockquote, pre,
- a, abbr, address, big, cite, code,
- del, dfn, em, img, ins,
- small, strike, strong, tt, var,
- dl, dt, dd, ol, ul, li,
- fieldset, form, label, legend,
- table, caption, tbody, tfoot, thead, tr, th, td,
- article, aside, canvas, details, embed,
- figure, figcaption, footer, header, hgroup,
- menu, nav, output, ruby, section, summary,
- time, mark, audio, video {
- margin: 0;
- padding: 0;
- border: 0;
- font-size: 100%;
- font: inherit;
- vertical-align: baseline;
- }
- /* HTML5 display-role reset for older browsers */
- article, aside, details, figcaption, figure,
- footer, header, hgroup, menu, nav, section { display: block; }
- body { line-height: 1; }
- blockquote, q { quotes: none; }
- blockquote:before, blockquote:after,
- q:before, q:after {
- content: '';
- content: none;
- }
- table {
- border-collapse: collapse;
- border-spacing: 0;
- }
-
- /* http://practicaltypography.com/equity.html */
- /* https://calendar.perfplanet.com/2016/no-font-face-bulletproof-syntax/ */
- /* https://www.filamentgroup.com/lab/js-web-fonts.html */
- @font-face {
- font-family: 'EquityTextB';
- src: url('/static/david/css/fonts/Equity-Text-B-Regular-webfont.woff2') format('woff2'),
- url('/static/david/css/fonts/Equity-Text-B-Regular-webfont.woff') format('woff');
- font-weight: 300;
- font-style: normal;
- font-display: swap;
- }
- @font-face {
- font-family: 'EquityTextB';
- src: url('/static/david/css/fonts/Equity-Text-B-Italic-webfont.woff2') format('woff2'),
- url('/static/david/css/fonts/Equity-Text-B-Italic-webfont.woff') format('woff');
- font-weight: 300;
- font-style: italic;
- font-display: swap;
- }
- @font-face {
- font-family: 'EquityTextB';
- src: url('/static/david/css/fonts/Equity-Text-B-Bold-webfont.woff2') format('woff2'),
- url('/static/david/css/fonts/Equity-Text-B-Bold-webfont.woff') format('woff');
- font-weight: 700;
- font-style: normal;
- font-display: swap;
- }
-
- @font-face {
- font-family: 'ConcourseT3';
- src: url('/static/david/css/fonts/concourse_t3_regular-webfont-20190806.woff2') format('woff2'),
- url('/static/david/css/fonts/concourse_t3_regular-webfont-20190806.woff') format('woff');
- font-weight: 300;
- font-style: normal;
- font-display: swap;
- }
-
-
- /* http://practice.typekit.com/lesson/caring-about-opentype-features/ */
- body {
- /* http://www.cssfontstack.com/ Palatino 99% Win 86% Mac */
- font-family: "EquityTextB", Palatino, serif;
- background-color: #f0f0ea;
- color: #07486c;
- font-kerning: normal;
- -moz-osx-font-smoothing: grayscale;
- -webkit-font-smoothing: subpixel-antialiased;
- text-rendering: optimizeLegibility;
- font-variant-ligatures: common-ligatures contextual;
- font-feature-settings: "kern", "liga", "clig", "calt";
- }
- pre, code, kbd, samp, var, tt {
- font-family: 'TriplicateT4c', monospace;
- }
- em {
- font-style: italic;
- color: #323a45;
- }
- strong {
- font-weight: bold;
- color: black;
- }
- nav {
- background-color: #323a45;
- color: #f0f0ea;
- display: flex;
- justify-content: space-around;
- padding: 1rem .5rem;
- }
- nav:last-child {
- border-bottom: 1vh solid #2d7474;
- }
- nav a {
- color: #f0f0ea;
- }
- nav abbr {
- border-bottom: 1px dotted white;
- }
-
- h1 {
- border-top: 1vh solid #2d7474;
- border-bottom: .2vh dotted #2d7474;
- background-color: #e3e1e1;
- color: #323a45;
- text-align: center;
- padding: 5rem 0 4rem 0;
- width: 100%;
- font-family: 'ConcourseT3';
- display: flex;
- flex-direction: column;
- }
- h1.single {
- padding-bottom: 10rem;
- }
- h1 span {
- position: absolute;
- top: 1vh;
- left: 20%;
- line-height: 0;
- }
- h1 span a {
- line-height: 1.7;
- padding: 1rem 1.2rem .6rem 1.2rem;
- border-radius: 0 0 6% 6%;
- background: #2d7474;
- font-size: 1.3rem;
- color: white;
- text-decoration: none;
- }
- h2 {
- margin: 4rem 0 1rem;
- border-top: .2vh solid #2d7474;
- padding-top: 1vh;
- }
- h3 {
- text-align: center;
- margin: 3rem 0 .75em;
- }
- hr {
- height: .4rem;
- width: .4rem;
- border-radius: .4rem;
- background: #07486c;
- margin: 2.5rem auto;
- }
- time {
- display: bloc;
- margin-left: 0 !important;
- }
- ul, ol {
- margin: 2rem;
- }
- ul {
- list-style-type: square;
- }
- a {
- text-decoration-skip-ink: auto;
- text-decoration-thickness: 0.05em;
- text-underline-offset: 0.09em;
- }
- article {
- max-width: 50rem;
- display: flex;
- flex-direction: column;
- margin: 2rem auto;
- }
- article.single {
- border-top: .2vh dotted #2d7474;
- margin: -6rem auto 1rem auto;
- background: #f0f0ea;
- padding: 2rem;
- }
- article p:last-child {
- margin-bottom: 1rem;
- }
- p {
- padding: 0 .5rem;
- margin-left: 3rem;
- }
- p + p,
- figure + p {
- margin-top: 2rem;
- }
-
- blockquote {
- background-color: #e3e1e1;
- border-left: .5vw solid #2d7474;
- display: flex;
- flex-direction: column;
- align-items: center;
- padding: 1rem;
- margin: 1.5rem;
- }
- blockquote cite {
- font-style: italic;
- }
- blockquote p {
- margin-left: 0;
- }
-
- figure {
- border-top: .2vh solid #2d7474;
- background-color: #e3e1e1;
- text-align: center;
- padding: 1.5rem 0;
- margin: 1rem 0 0;
- font-size: 1.5rem;
- width: 100%;
- }
- figure img {
- max-width: 250px;
- max-height: 250px;
- border: .5vw solid #323a45;
- padding: 1px;
- }
- figcaption {
- padding: 1rem;
- line-height: 1.4;
- }
- aside {
- display: flex;
- flex-direction: column;
- background-color: #e3e1e1;
- padding: 1rem 0;
- border-bottom: .2vh solid #07486c;
- }
- aside p {
- max-width: 50rem;
- margin: 0 auto;
- }
-
- /* https://fvsch.com/code/css-locks/ */
- p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
- font-size: 1rem;
- line-height: calc( 1.5em + 0.2 * 1rem );
- }
- h1 {
- font-size: 1.9rem;
- line-height: calc( 1.2em + 0.2 * 1rem );
- }
- h2 {
- font-size: 1.6rem;
- line-height: calc( 1.3em + 0.2 * 1rem );
- }
- h3 {
- font-size: 1.35rem;
- line-height: calc( 1.4em + 0.2 * 1rem );
- }
- @media (min-width: 20em) {
- /* The (100vw - 20rem) / (50 - 20) part
- resolves to 0-1rem, depending on the
- viewport width (between 20em and 50em). */
- p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
- font-size: calc( 1rem + .6 * (100vw - 20rem) / (50 - 20) );
- line-height: calc( 1.5em + 0.2 * (100vw - 50rem) / (20 - 50) );
- margin-left: 0;
- }
- h1 {
- font-size: calc( 1.9rem + 1.5 * (100vw - 20rem) / (50 - 20) );
- line-height: calc( 1.2em + 0.2 * (100vw - 50rem) / (20 - 50) );
- }
- h2 {
- font-size: calc( 1.5rem + 1.5 * (100vw - 20rem) / (50 - 20) );
- line-height: calc( 1.3em + 0.2 * (100vw - 50rem) / (20 - 50) );
- }
- h3 {
- font-size: calc( 1.35rem + 1.5 * (100vw - 20rem) / (50 - 20) );
- line-height: calc( 1.4em + 0.2 * (100vw - 50rem) / (20 - 50) );
- }
- }
- @media (min-width: 50em) {
- /* The right part of the addition *must* be a
- rem value. In this example we *could* change
- the whole declaration to font-size:2.5rem,
- but if our baseline value was not expressed
- in rem we would have to use calc. */
- p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
- font-size: calc( 1rem + .6 * 1rem );
- line-height: 1.5em;
- }
- p, li, pre, details {
- margin-left: 3rem;
- }
- h1 {
- font-size: calc( 1.9rem + 1.5 * 1rem );
- line-height: 1.2em;
- }
- h2 {
- font-size: calc( 1.5rem + 1.5 * 1rem );
- line-height: 1.3em;
- }
- h3 {
- font-size: calc( 1.35rem + 1.5 * 1rem );
- line-height: 1.4em;
- }
- figure img {
- max-width: 500px;
- max-height: 500px;
- }
- }
-
- figure.unsquared {
- margin-bottom: 1.5rem;
- }
- figure.unsquared img {
- height: inherit;
- }
-
-
-
- @media print {
- body { font-size: 100%; }
- a:after { content: " (" attr(href) ")"; }
- a, a:link, a:visited, a:after {
- text-decoration: underline;
- text-shadow: none !important;
- background-image: none !important;
- background: white;
- color: black;
- }
- abbr[title] { border-bottom: 0; }
- abbr[title]:after { content: " (" attr(title) ")"; }
- img { page-break-inside: avoid; }
- @page { margin: 2cm .5cm; }
- h1, h2, h3 { page-break-after: avoid; }
- p3 { orphans: 3; widows: 3; }
- img {
- max-width: 250px !important;
- max-height: 250px !important;
- }
- nav, aside { display: none; }
- }
-
- ul.with_columns {
- column-count: 1;
- }
- @media (min-width: 20em) {
- ul.with_columns {
- column-count: 2;
- }
- }
- @media (min-width: 50em) {
- ul.with_columns {
- column-count: 3;
- }
- }
- ul.with_two_columns {
- column-count: 1;
- }
- @media (min-width: 20em) {
- ul.with_two_columns {
- column-count: 1;
- }
- }
- @media (min-width: 50em) {
- ul.with_two_columns {
- column-count: 2;
- }
- }
-
- .gallery {
- display: flex;
- flex-wrap: wrap;
- justify-content: space-around;
- }
- .gallery figure img {
- margin-left: 1rem;
- margin-right: 1rem;
- }
- .gallery figure figcaption {
- font-family: 'ConcourseT3'
- }
-
- footer {
- font-family: 'ConcourseT3';
- display: flex;
- flex-direction: column;
- border-top: 3px solid white;
- padding: 4rem 0;
- background-color: #07486c;
- color: white;
- }
- footer > * {
- max-width: 50rem;
- margin: 0 auto;
- }
- footer a {
- color: #f1c40f;
- }
- footer .avatar {
- width: 200px;
- height: 200px;
- border-radius: 50%;
- float: left;
- -webkit-shape-outside: circle();
- shape-outside: circle();
- margin-right: 2rem;
- padding: 2px 5px 5px 2px;
- background: white;
- border-left: 1px solid #f1c40f;
- border-top: 1px solid #f1c40f;
- border-right: 5px solid #f1c40f;
- border-bottom: 5px solid #f1c40f;
- }
- </style>
-
- <h1>
- <span><a id="jumper" href="#jumpto" title="Un peu perdu ?">?</a></span>
- Sync/Backup workshop at Redecentralize Conference (archive)
- <time>Pour la pérennité des contenus liés. Non-indexé, retrait sur simple email.</time>
- </h1>
- <section>
- <article>
- <h3><a href="http://www.flourish.org/2015/11/syncbackup-workshop-at-redecentralize-conference/">Source originale du contenu</a></h3>
- <p>The fabulous <a href="http://redecentralize.org/conference/">Redecentralize Conference</a> was organised by <a href="http://shevski.com/">Ira</a> and a bunch of other volunteers. Its subject – how do we make the net resilient, private and fun again?</p>
-
- <p>It was an unconference, so I decided to do a session on a personal itch I’ve had for the last few years – file synchronisation and backup.</p>
-
- <p>I don’t have a nice way to manage my files – documents, music, photos, email. Syncing them across devices and keeping them backed up seems strangely harder than it did in the 1990s. At least, if you don’t just go all in and trust Google or Dropbox with them.</p>
-
- <figure id="attachment_1573" style="width: 600px;" class="wp-caption aligncenter"><a href="https://twitter.com/ggbozzo/status/655306731052994560"><img class="wp-image-1573 size-full" src="http://www.flourish.org/wordpress/wp-content/uploads/2015/11/CRgd_JXXIAEa2ih.jpg" alt="Redecentralize Conference" width="600" height="450" /></a><figcaption class="wp-caption-text">Photo by Luigi Bozzo</figcaption></figure>
-
- <p>The idea of the workshop was to find out what decentralized software technical people actually use every day for syncing and backing up their files.</p>
-
- <p>We wrote down all the tools on cards, and voted with sticky notes if we used them. I was hoping there was some amazing tool based on newish technology like Distributed Hash Tables that I could use. There wasn’t.</p>
-
- <p>So here’s the tools geeks use, working up to the favourite at the end.</p>
-
- <h2><a href="https://syncthing.net/">Syncthing</a> (0 votes)</h2>
-
- <p>This is one of the few actually peer to peer tools which came up – it directly syncs files between devices. Lots of people mentioned it, which is why it got a card even with no votes. Alas, none of us use it day to day. It just isn’t mature enough. Every six months I try it again, hit an unsolvable problem and revert to <a href="https://www.getsync.com/">BitTorrent Sync</a>. They’re <a href="https://github.com/syncthing/syncthing/graphs/contributors">working hard</a> to improve Syncthing, and I’m sure would welcome more help.</p>
-
- <h2><a href="https://photobackup.github.io/">PhotoBackup</a> (1 vote)</h2>
-
- <p>Looks like a nice solution to get files off your camera phone and onto your own server. It’s a pain that it needs a special server to post the files to – I’d like it more if I could configure it to just use SCP (see the SSH section below).</p>
-
- <h2><a href="https://bombich.com/">Carbon copy cloner</a> (1 vote), <a href="https://en.wikipedia.org/wiki/Time_Machine_%28OS_X%29">Time Machine</a> (2 votes)</h2>
-
- <p>A few people recommended proprietary Mac tools. They considered them decentralized, because they keep the backups on their own multi-terabyte hard drives at home, rather than putting them in one central cloud. No doubt they’re polished and easy to use – I still use <a href="http://www.code42.com/crashplan/">CrashPlan</a> on an old Mac for that reason! Alas, they’re no good if you have even one device with another operating system.</p>
-
- <h2><a href="https://owncloud.org/">ownCloud</a> (2 votes)</h2>
-
- <p>This self-hosted email/calendar/contacts/file sync tool is a powerful combination. Surprisingly few people use it. My theory is that it tries to do too much itself, and does none of it quite well enough. I found it too slow, clunky, and unconvincing to trust my most valuable data to. I’m optimistic that it’ll continue to improve.</p>
-
- <h2><a href="http://duplicity.nongnu.org/">duplicity</a> (2 votes)</h2>
-
- <p>While researching backup for myself, I find price is a constant frustration. All the most open ones require a server with a live disk mounted on it. S3, an Amazon service that can just store blobs, is considerably cheaper. It’s even cheaper than Dropbox, which is <a href="https://www.quora.com/Why-does-Dropbox-still-use-Amazon-S3-to-store-data-instead-of-building-its-own-data-center">built on top of S3</a> and adds a margin!</p>
-
- <p>A couple of people at the workshop took advantage of this price while keeping privacy by using duplicity. It encrypts files and stores them in S3. I find that a bit of a cheat – some control is still lost, it isn’t resilient. As economies of cloud storage scale even more, I’m open to changing my mind!</p>
-
- <h2><a href="https://www.tarsnap.com/">Tarsnap</a> (2 votes)</h2>
-
- <p>This technically excellent Unix backup tool also uses S3 behind the scenes. It is by all accounts easy to set up, fast and powerful. My one concern is that it is too dependent on its founder Colin Percival. You really want backup software to have a whole community maintaining it, or a strong company with incentives to keep the service running. Or it won’t be there when you really need it.</p>
-
- <h2><a href="http://www.openssh.com/">SSH</a> (4 votes)</h2>
-
- <p>People using SSH probably overlap with the rsync people below, or they were using scp or bup or unison or something similar. All of these excellent command line sync and backup tools need a protocol to send files remotely, and that’s SSH. Stalwart, and to this day what geeks use to write data remotely from automated processes. It’s that basic writing functionality which I want some funky new DHT to improve.</p>
-
- <h2><a href="http://rsnapshot.org/">rsnapshot</a> (5 votes), <a href="https://rsync.samba.org/">rsync</a> (1 vote)</h2>
-
- <p>It’s hard now to remember how revolutionary rsync was when it came out (apparently in 1996!). Rolling checksums make file copying fast the second time, enabling all sorts of new backup and sync possibilites. The raw technology idea was <a href="https://dl.dropboxusercontent.com/u/27532820/app.html">vital to Dropbox’s genesis</a>. Nearly everyone at the workshop used rsync via <a href="http://rsnapshot.org/">rsnapshot,</a> a layer which can backup whole machines and archive their history.</p>
-
- <h2><a href="http://www.git-scm.com/">git</a> (6 votes), <a href="http://www.git-annex.org/">git-annex</a> (1 vote)</h2>
-
- <p>I use git with an auto-commit script to keep important text documents. One workshop member used git-annex, making even large files not a problem. It’s very geeky, but it’s very reliable – history and checksums and decentralization make it very hard to lose data. It does two way sync, but unlike Dropbox actually merges the files.</p>
-
- <p>A key problem for me with this is that Android support is woeful. In the end, I fix that with a nasty hack – I use BitTorrent Sync to transfer a directory on my phone to a server, and have a script there which merges and commits.</p>
-
- <p>Thinking about it, git is the biggest obvious opportunity which came from this workshop. Just as Dropbox was built on rsync technology, could something very user friendly be built on top of git, for the purpose of personal document syncing? Add a peer-to-peer <a href="http://git-scm.com/book/en/v2/Git-Internals-Transfer-Protocols">transfer protocol</a>, a beautiful GUI, three way merge of Word documents… The internals built by Linus would make it robust and reliable.</p>
-
- <figure id="attachment_1577" style="width: 622px;" class="wp-caption aligncenter"><a href="https://commons.wikimedia.org/wiki/File:Backup_Backup_Backup_-_And_Test_Restores.jpg"><img class="size-full wp-image-1577" src="http://www.flourish.org/wordpress/wp-content/uploads/2015/11/622px-Backup_Backup_Backup_-_And_Test_Restores.jpg" alt="Why you might want to decentralize your files" width="622" height="600" /></a><figcaption class="wp-caption-text">Why you might want to decentralize your files</figcaption></figure>
-
- <h2>OS file browser + standard protocols (1 vote)</h2>
-
- <p>At the end I asked the room, “who is happy with their solution?”. Only one person put their hand up. She had tried every nerdy backup tool imaginable, and abandoned them all.</p>
-
- <p>Instead, she keeps files on her computer and her relative’s computer. If she’s making a document she cares about, she transfers it by USB stick between the computers, to make sure there are multiple copies in different places. And that’s it.</p>
-
- <p>Unsophisticated? Not at all. Way easier than backing up paper. Understandable by anyone. Full control. Cheap.</p>
-
- <h1>Conclusions</h1>
-
- <p>Thanks to everyone who came to the workshop. I was disappointed that there wasn’t a solution to my problem. However, I learnt several valuable things, including one to improve what I do in the short term.</p>
-
- <p><strong>I need my own (virtual) server (again)</strong> – there were several folk from <a href="https://www.bytemark.co.uk/">Bytemark</a> at Redecentralize. They made me realise that I had been trying for a while to not need my own server. Alas, the fully distributed solutions just aren’t good enough yet. You need something you can make web requests to and SSH to if you want to use OwnCloud, git, ssh or rsync. It’s a relief to accept this.</p>
-
- <p><strong>Simple is better, sometimes</strong> – the happiest person was doing manual file copying like you would have done before “the cloud” in the 1990s. It’s obvious to non geeks, don’t be afraid of doing this. Of course, you accept downsides, but you gain upsides of simplicity and peace of mind.</p>
-
- <p><strong>Someone will win with an inspiring UI on top of Git</strong> – merging of text files, robust history, fast and reliable. There are fundamental technical reasons why git is good for some of this stuff. Just as Dropbox used rsync technology and brought it to hundreds of millions, one day somebody will bring these benefits of git to the world.</p>
-
- <p><strong>We need low level distributed storage / naming</strong> – personal servers running Dropbox clones will keep us going for a while, but at the end of the day this worrying about servers, about named computers, is part of the problem. At some point, a distributed file storage will take off. <a href="http://maidsafe.net/">IPFS</a> is exciting, although it has no charging mechanic so can never be “fire and forget”. My best hope right now is <a href="http://maidsafe.net/">MaidSafe</a>. When they ship!</p>
-
- <p><strong>There is a market for a geeky command line sync/backup tool</strong> – despite all the open alternatives, nothing works well enough that it has dominated the market. I’m confident that technical people haven’t solved this problem for themselves, and want it solved. Powerful interfaces can then be built on that stable base.</p>
-
- <p>I’d love to hear your thoughts and ideas in the comments below!</p>
- </article>
- </section>
-
-
- <nav id="jumpto">
- <p>
- <a href="/david/blog/">Accueil du blog</a> |
- <a href="http://www.flourish.org/2015/11/syncbackup-workshop-at-redecentralize-conference/">Source originale</a> |
- <a href="/david/stream/2019/">Accueil du flux</a>
- </p>
- </nav>
-
- <footer>
- <div>
- <img src="/static/david/david-larlet-avatar.jpg" loading="lazy" class="avatar" width="200" height="200">
- <p>
- Bonjour/Hi!
- Je suis <a href="/david/" title="Profil public">David Larlet</a>, je vis actuellement à Montréal et j’alimente cet espace depuis 15 ans. <br>
- Si tu as apprécié cette lecture, n’hésite pas à poursuivre ton exploration. Par exemple via les <a href="/david/blog/" title="Expériences bienveillantes">réflexions bimestrielles</a>, la <a href="/david/stream/2019/" title="Pensées (dés)articulées">veille hebdomadaire</a> ou en t’abonnant au <a href="/david/log/" title="S’abonner aux publications via RSS">flux RSS</a> (<a href="/david/blog/2019/flux-rss/" title="Tiens c’est quoi un flux RSS ?">so 2005</a>).
- </p>
- <p>
- Je m’intéresse à la place que je peux avoir dans ce monde. En tant qu’humain, en tant que membre d’une famille et en tant qu’associé d’une coopérative. De temps en temps, je fais aussi des <a href="https://github.com/davidbgk" title="Principalement sur Github mais aussi ailleurs">trucs techniques</a>. Et encore plus rarement, <a href="/david/talks/" title="En ce moment je laisse plutôt la place aux autres">j’en parle</a>.
- </p>
-
- <p>
- Voici quelques articles choisis :
- <a href="/david/blog/2019/faire-equipe/" title="Accéder à l’article complet">Faire équipe</a>,
- <a href="/david/blog/2018/bivouac-automnal/" title="Accéder à l’article complet">Bivouac automnal</a>,
- <a href="/david/blog/2018/commodite-effondrement/" title="Accéder à l’article complet">Commodité et effondrement</a>,
- <a href="/david/blog/2017/donnees-communs/" title="Accéder à l’article complet">Des données aux communs</a>,
- <a href="/david/blog/2016/accompagner-enfant/" title="Accéder à l’article complet">Accompagner un enfant</a>,
- <a href="/david/blog/2016/senior-developer/" title="Accéder à l’article complet">Senior developer</a>,
- <a href="/david/blog/2016/illusion-sociale/" title="Accéder à l’article complet">L’illusion sociale</a>,
- <a href="/david/blog/2016/instantane-scopyleft/" title="Accéder à l’article complet">Instantané Scopyleft</a>,
- <a href="/david/blog/2016/enseigner-web/" title="Accéder à l’article complet">Enseigner le Web</a>,
- <a href="/david/blog/2016/simplicite-defaut/" title="Accéder à l’article complet">Simplicité par défaut</a>,
- <a href="/david/blog/2016/minimalisme-esthetique/" title="Accéder à l’article complet">Minimalisme et esthétique</a>,
- <a href="/david/blog/2014/un-web-omni-present/" title="Accéder à l’article complet">Un web omni-présent</a>,
- <a href="/david/blog/2014/manifeste-developpeur/" title="Accéder à l’article complet">Manifeste de développeur</a>,
- <a href="/david/blog/2013/confort-convivialite/" title="Accéder à l’article complet">Confort et convivialité</a>,
- <a href="/david/blog/2013/testament-numerique/" title="Accéder à l’article complet">Testament numérique</a>,
- et <a href="/david/blog/" title="Accéder aux archives">bien d’autres…</a>
- </p>
- <p>
- On peut <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">échanger par courriel</a>. Si éventuellement tu souhaites que l’on travaille ensemble, tu devrais commencer par consulter le <a href="http://larlet.com">profil dédié à mon activité professionnelle</a> et/ou contacter directement <a href="http://scopyleft.fr/">scopyleft</a>, la <abbr title="Société coopérative et participative">SCOP</abbr> dont je fais partie depuis six ans. Je recommande au préalable de lire <a href="/david/blog/2018/cout-site/" title="Attention ce qui va suivre peut vous choquer">combien coûte un site</a> et pourquoi je suis plutôt favorable à une <a href="/david/pro/devis/" title="Discutons-en !">non-demande de devis</a>.
- </p>
- <p>
- Je ne traque pas ta navigation mais mon
- <abbr title="Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33.184162340">hébergeur</abbr>
- conserve des logs d’accès.
- </p>
- </div>
- </footer>
- <script type="text/javascript">
- ;(_ => {
- const jumper = document.getElementById('jumper')
- jumper.addEventListener('click', e => {
- e.preventDefault()
- const anchor = e.target.getAttribute('href')
- const targetEl = document.getElementById(anchor.substring(1))
- targetEl.scrollIntoView({behavior: 'smooth'})
- })
- })()
- </script>
|