The git repo behind my blog.

thoughts-on-blogging-engine.html 14KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8" />
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  6. <meta name="HandheldFriendly" content="True" />
  7. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  8. <meta name="robots" content="index, follow" />
  9. <link href='https://phyks.me/theme/stylesheet/fonts.css' rel='stylesheet' type='text/css'>
  10. <link rel="stylesheet" type="text/css" href="https://phyks.me/theme/stylesheet/style.min.css">
  11. <link rel="stylesheet" type="text/css" href="https://phyks.me/theme/pygments/monokai.min.css">
  12. <link rel="stylesheet" type="text/css" href="https://phyks.me/theme/font-awesome/css/font-awesome.min.css">
  13. <link href="https://phyks.me/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="Phyks' blog Atom">
  14. <link rel="shortcut icon" href="/images/favicon.ico" type="image/x-icon">
  15. <link rel="icon" href="/images/favicon.ico" type="image/x-icon">
  16. <!-- Chrome, Firefox OS and Opera -->
  17. <meta name="theme-color" content="#333">
  18. <!-- Windows Phone -->
  19. <meta name="msapplication-navbutton-color" content="#333">
  20. <!-- iOS Safari -->
  21. <meta name="apple-mobile-web-app-capable" content="yes">
  22. <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
  23. <!-- Microsoft EDGE -->
  24. <meta name="msapplication-TileColor" content="#333">
  25. <meta name="author" content="Phyks" />
  26. <meta name="description" content="For now, I am using my own custom made Python script to handle my static blog with a Git backend, Blogit. It is becoming heavy and difficult to maintain, and I would better do a good refactor. However, many scripts of this kind exists around here, like Jekyll in Ruby …" />
  27. <meta name="keywords" content="">
  28. <meta property="og:site_name" content="Phyks' blog"/>
  29. <meta property="og:title" content="Thoughts on blogging engine"/>
  30. <meta property="og:description" content="For now, I am using my own custom made Python script to handle my static blog with a Git backend, Blogit. It is becoming heavy and difficult to maintain, and I would better do a good refactor. However, many scripts of this kind exists around here, like Jekyll in Ruby …"/>
  31. <meta property="og:locale" content="en_US.UTF-8"/>
  32. <meta property="og:url" content="https://phyks.me/2015/01/thoughts-on-blogging-engine.html"/>
  33. <meta property="og:type" content="article"/>
  34. <meta property="article:published_time" content="2015-01-05 17:35:00+01:00"/>
  35. <meta property="article:modified_time" content=""/>
  36. <meta property="article:author" content="https://phyks.me/author/phyks.html">
  37. <meta property="article:section" content="Phyks"/>
  38. <meta property="og:image" content="/images/profile.png">
  39. <title>Phyks' blog &ndash; Thoughts on blogging engine</title>
  40. </head>
  41. <body>
  42. <aside>
  43. <div>
  44. <a href="https://phyks.me">
  45. <img src="/images/profile.png" alt="Phyks" title="Phyks">
  46. </a>
  47. <h1><a href="https://phyks.me">Phyks</a></h1>
  48. <p>I write about dev, FOSS, DIY and more, in French and English.</p>
  49. <ul class="social">
  50. <li><a class="sc-rss" href="feeds/all.atom.xml" target="_blank"><i class="fa fa-rss"></i></a></li>
  51. <li><a class="sc-envelope-o" href="mailto:phyks+blog@phyks.me" target="_blank"><i class="fa fa-envelope-o"></i></a></li>
  52. <li><a class="sc-github" href="http://github.com/phyks/" target="_blank"><i class="fa fa-github"></i></a></li>
  53. <li><a class="sc-gitlab" href="https://git.phyks.me/phyks" target="_blank"><i class="fa fa-gitlab"></i></a></li>
  54. </ul>
  55. </div>
  56. </aside>
  57. <main>
  58. <nav>
  59. <a href="https://phyks.me">Home</a>
  60. <a href="https://links.phyks.me">Bookmarks</a>
  61. <a href="/pages/hosted-tools.html">Tools</a>
  62. <a href="/archives.html">Archives</a>
  63. <a href="/pages/memo-autohebergement.html">Autohébergement</a>
  64. <a href="https://phyks.me/feeds/all.atom.xml">Atom</a>
  65. </nav>
  66. <article class="single">
  67. <header>
  68. <h1 id="thoughts-on-blogging-engine">Thoughts on blogging&nbsp;engine</h1>
  69. <p>
  70. Posted on January 05, 2015 in <a href="https://phyks.me/category/phyks.html">Phyks</a>
  71. &#8226; 6 min read
  72. </p>
  73. </header>
  74. <div>
  75. <p>For now, I am using my own custom made Python script to handle my static blog with a Git backend, <a href="https://github.com/Phyks/Blogit">Blogit</a>. It is becoming heavy and difficult to maintain, and I would better do a good refactor. However, many scripts of this kind exists around here, like <a href="http://jekyllrb.com/">Jekyll</a> in Ruby, or <a href="http://blog.getpelican.com/">Pelican</a> in Python. As I do not aim at developping a fully-featured alternative to these scripts, I am considering moving to one of these, and let others with better goals handle it. It is not always useful to reinvent the wheel and especially in this case, as I have very basic&nbsp;needs.</p>
  76. <p>I played a bit with Pelican and Jekyll. First, I played much more with Pelican than with Jekyll. That is because I know Python and feel more comfortable with Pelican. Also, it seems more robust, extensible and well designed than Jekyll. At least, that&#8217;s the overall impression I have, that Pelican is a bit cold, but very powerful, whereas Jekyll is warmer, but more on the blingbling side also. Pelican supports ReStructuredText besides Markdown and <span class="caps">HTML</span>, and it was very straightforward to convert my articles to the Pelican file format (especially for metadata) and keep the same URLs. There is a bunch of plugins and themes for many things (git backend, specific parsers, search engine etc) but some of them are outdated. It&#8217;s relatively easy to get something working quickly and I think this is a really good static blog engine, very efficient. For more info about it, you can check out <a href="http://a3nm.net/blog/pelican.html">this blog post</a> about a recent migration from <a href="https://gitorious.org/fugitive">fugitive</a>, shell scripts to statically build a blog on top of a git repo, to&nbsp;Pelican.</p>
  77. <p>Then, I was about to migrate to Pelican when I heard about <a href="https://withknown.com/">Known</a> at a <a href="http://www.meetup.com/Paris-Meetup-pour-la-decentralisation-dInternet/events/218943348/">Decentralization Meetup</a> at Mozilla Paris. I had already heard about the <a href="https://indiewebcamp.com/">IndieWebCamp</a> but never had time to look in depth at their wiki and the stuff they were&nbsp;building.</p>
  78. <p>I started to think again about blogging, microblogging and social networking, and I think their approach may fix some of the core problems I experience with Diaspora. For now, I am using my static blog to publish articles, and I am (finally not so much) using <a href="https://github.com/diaspora/diaspora/">Diaspora</a> as a social&nbsp;network.</p>
  79. <ol>
  80. <li>First, Diaspora is yet another thing to monitor. I like to have my <span class="caps">RSS</span> reader running in the background, I periodically check the news. I have my emails also. Diaspora means yet another thing to watch for, something not standard (it is not emails, it is not <span class="caps">IRC</span> / <span class="caps">XMPP</span> and it is not <span class="caps">RSS</span> or equivalent feeds) and the community on Diaspora is quite small compared to the one on the other medium. Equivalently, I do not know enough people on Diaspora to want to have it running and check it&nbsp;regularly.</li>
  81. <li>Diaspora has a big flaw in its implementation, as <a href="http://blog.exppad.com/article/really-social-syndication">other already wrote</a> (article in French). It is oriented toward and promoting decentralization, and encourage each one to run its pod. But running its pod is not very interesting as the federation is not complete in Diaspora. For now, we have &#8220;silos&#8221;, fully centralized, such as Twitter and Facebook ; self-hostable &#8220;silos&#8221; such as <a href="http://elgg.org/">elgg</a> (centrally decentralized networks) and fully decentralized networks like Diaspora. But, as soon as you and your contacts are on different pods, you won&#8217;t be able to see their own contact lists, to find new people to follow. Similarly, you won&#8217;t be able to follow hashtags, as they are not federated. I&#8217;m alone on my pod, and if I follow <code>#firefoxos</code>, I will only follow <em>my</em> articles tagged with this hashtag. Not very interesting, eh&nbsp;?</li>
  82. </ol>
  83. <p>The core idea behind IndieWebCamp is not to build a social network but to own <em>your</em> data (see <a href="https://aaronparecki.com/articles/2015/01/04/1/owning-my-data-in-2014">this article</a> for example). So, why talking about Diaspora ? Because they are thinking that you should be able to communicate with others in both a user-readable and machine-readable way. But, you might already have friends on Twitter / Facebook / Instagram etc. Rather than quitting them and moving to a new platform, the goal is to be able to still talk to them, in the meantime before their migration, but to have a dump of every content you post on <em>your</em> server. As it focuses on the protocols rather than the implementation, each user may have its own baked implementation, and many of them are not (yet ?) open-sourced (such as <a href="https://aaronparecki.com/">aaronparecki&#8217;s website</a>). For now, one of the more developped and supported one seems to be Known, which was presented during the Meetup. It lets you handle microblogging, blogging, photo sharing and many more out of the box, and fully implements the protocols to communicate with other instances and is extensible through plugins. To see it in action, you can have a look at <a href="http://werd.io/">the instance of the co-founder</a>.</p>
  84. <p>Then, rather than having multiple sites and services, each one with a partial dump of your content, everything is centralized at one place, and your Known instance gets a dump copy of every content you put&nbsp;online.</p>
  85. <p>The basic idea is to use the served <span class="caps">HTML</span> and put some extra content to parse it easily with a machine. This means that both the user and the machine see the same page and can handle the same content. This is done through the use of specific classes on elements to tag them according to their type, to say that this is a post, this is an image and this is a contact card. This way, it becomes really easy to extract content from your website, using XPath for instance. And they are working on implementing favorites, reply-to, reposts and so&nbsp;on.</p>
  86. <p>Thanks to <a href="https://indiewebcamp.com/Bridgy">Bridgy</a> you can have bridges with existing silos, and many apps let you get more bridges, such as <a href="https://ownyourgram.com/">OwnYourGram</a>. Using <a href="https://indiewebcamp.com/Webmention">webmentions</a>, you can post on <em>your</em> website to comment a post on someon&#8217;s else. See <a href="http://werd.io/2014/being-a-human-on-the-internet-and-discovering-my-non-throttleable#comments">this post</a> for example. Comments are actually hosted on the instance of any user, and a copy is made on this specific instance. Comments can come from Facebook and Twitter also, and virtually any website implementing the open protocol or having a&nbsp;bridge.</p>
  87. <p>I thought again about my static blog. It is dead simple, and enough for my needs. But this is not always very practical as I need to have a computer with a text editor and git to commit and publish, which I do not have always with me. But having a dynamically generated blog is something really heavy and overkill for my need. Known seems to be a good compromise, it is written in <span class="caps">PHP</span> (and then easily hackable), it seems to be lightweight, and offers functionalities which are worth the overhead. Plus every route can be used as an <span class="caps">URL</span> as well, which means that I can continue to publish writing with my favorite text editor, and I am not at all forced to use the live html editor. This is a great point, and it works very well (article on this is coming). I was not interested in comments on my blog as I do not want to host other&#8217;s comments on my personal website. But this way of using webmention incite others to have their own blog and publish on this, to reply, and I totally agree with this philosophy. This is no longer &#8220;a comment on someone&#8217;s wall that you don&#8217;t care about&#8221; but &#8220;a comment on your website which is sent to the other&#8217;s&#8221;. I think this change of commenting strategy might improve the quality of comments (but I may be wrong) by feeling more attached to your content. My demo Known instance is available <a href="http://known.phyks.me/">here</a>. It is currently to be considered as Work In Progress, and I am not sure of what it will become in the future. But there are chances I move to a full Known approach, instead of duplicating my articles on this blog and on Known. Bad news is I might have some URLs that will change in the process (old articles, photos, feeds, etc). To be&nbsp;continued…</p>
  88. </div>
  89. <div class="tag-cloud">
  90. <p>
  91. </p>
  92. </div>
  93. </article>
  94. <footer>
  95. <p>
  96. &copy; 2017 - This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>
  97. </p>
  98. <p>Powered by <a href="http://getpelican.com" target="_blank">Pelican</a> - <a href="https://github.com/alexandrevicenzi/flex" target="_blank">Flex</a> theme by <a href="http://alexandrevicenzi.com" target="_blank">Alexandre Vicenzi</a></p><p>
  99. <a rel="license"
  100. href="http://creativecommons.org/licenses/by-nc-sa/4.0/"
  101. target="_blank">
  102. <img alt="Creative Commons License"
  103. title="Creative Commons License"
  104. style="border-width:0"
  105. src="https://phyks.me/theme/img/cc/by-nc-sa.png"
  106. width="80"
  107. height="15"/>
  108. </a>
  109. </p> </footer>
  110. </main>
  111. <script type="application/ld+json">
  112. {
  113. "@context" : "http://schema.org",
  114. "@type" : "Blog",
  115. "name": " Phyks' blog ",
  116. "url" : "https://phyks.me",
  117. "image": "/images/profile.png",
  118. "description": "I write about dev, FOSS, DIY and more, in French and English."
  119. }
  120. </script>
  121. </body>
  122. </html>