32 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894
  1. <!DOCTYPE html>
  2. <html>
  3. <head data-suburl="">
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
  6. <meta name="author" content="diogo" />
  7. <meta name="description" content="gnu-social - GNU social is a social communication software used in federated social networks. It is widely supported and has a large userbase. It is already used by the Free Software Foundation." />
  8. <meta name="keywords" content="go, git, self-hosted, gogs">
  9. <meta name="referrer" content="no-referrer" />
  10. <meta name="_csrf" content="Db2D5fl2PkW0vwzWYm8aw_fx4rA6MTYwNDc5MjExODI3NjA5OTA5OA==" />
  11. <meta name="_suburl" content="" />
  12. <meta property="og:url" content="https://notabug.org/diogo/gnu-social" />
  13. <meta property="og:type" content="object" />
  14. <meta property="og:title" content="diogo/gnu-social">
  15. <meta property="og:description" content="GNU social is a social communication software used in federated social networks. It is widely supported and has a large userbase. It is already used by the Free Software Foundation.">
  16. <meta property="og:image" content="https://notabug.org/avatars/12290" />
  17. <link rel="shortcut icon" href="/img/favicon.png" />
  18. <script src="/js/jquery-1.11.3.min.js"></script>
  19. <script src="/js/libs/jquery.are-you-sure.js"></script>
  20. <link href="/img/icon-48.ico" rel="icon" type="image/x-icon" />
  21. <link href="/img/icon-60.png" rel="apple-touch-icon">
  22. <link href="/img/icon-76.png" rel="apple-touch-icon" sizes="76x76">
  23. <link href="/img/icon-120.png" rel="apple-touch-icon" sizes="120x120">
  24. <link href="/img/icon-152.png" rel="apple-touch-icon" sizes="152x152">
  25. <link href="/img/icon-240.png" rel="apple-touch-icon" sizes="240x240">
  26. <link rel="stylesheet" href="/assets/font-awesome-4.6.3/css/font-awesome.min.css">
  27. <link rel="stylesheet" href="/assets/octicons-4.3.0/octicons.min.css">
  28. <link rel="stylesheet" href="/css/semantic-2.2.13.min.css">
  29. <link rel="stylesheet" href="/css/gogs.css?v=6fc9e85aa88133794d3434ea74aa557a">
  30. <link rel="stylesheet" href="/css/notabug.css">
  31. <script src="/js/semantic-2.2.13.min.js"></script>
  32. <script src="/js/gogs.js?v=6fc9e85aa88133794d3434ea74aa557a"></script>
  33. <title>[RFC] Core Plugins - NotABug.org: Free code hosting</title>
  34. <meta name="theme-color" content="#428bca">
  35. <noscript><style>.nojs-popup:hover > .menu { display: block ; }</style></noscript>
  36. </head>
  37. <body>
  38. <div class="full height">
  39. <noscript>Please enable JavaScript in your browser!</noscript>
  40. <div id="header-div" class="following bar light">
  41. <div class="ui container">
  42. <div class="ui grid">
  43. <div class="column">
  44. <div class="ui top secondary menu">
  45. <a class="item brand" href="/">
  46. <img class="ui mini image" src="/img/favicon.png">
  47. </a>
  48. <a class="item" href="/">Home</a>
  49. <a class="item" href="/explore/repos">Explore</a>
  50. <a class="notabug-item item" href="/help" rel="noreferrer">Help</a>
  51. <div class="right menu">
  52. <a class="item" href="/user/sign_up">
  53. <i class="octicon octicon-person"></i> Register
  54. </a>
  55. <a class="item" href="/user/login?redirect_to=%2fdiogo%2fgnu-social%2fissues%2f32">
  56. <i class="octicon octicon-sign-in"></i> Sign In
  57. </a>
  58. </div>
  59. </div>
  60. </div>
  61. </div>
  62. </div>
  63. </div>
  64. <div class="repository view issue pull">
  65. <div class="header-wrapper">
  66. <div class="ui container">
  67. <div class="ui vertically padded grid head">
  68. <div class="column">
  69. <div class="ui header">
  70. <div class="ui huge breadcrumb">
  71. <i class="mega-octicon octicon-repo"></i>
  72. <a href="/diogo">diogo</a>
  73. <div class="divider"> / </div>
  74. <a href="/diogo/gnu-social">gnu-social</a>
  75. </div>
  76. <div class="ui right">
  77. <div class="ui labeled button" tabindex="0">
  78. <a class="ui basic button" href="/diogo/gnu-social/action/watch?redirect_to=%2fdiogo%2fgnu-social%2fissues%2f32">
  79. <i class="icon fa-eye-slash"></i>Watch
  80. </a>
  81. <a class="ui basic label" href="/diogo/gnu-social/watchers">
  82. 9
  83. </a>
  84. </div>
  85. <div class="ui labeled button" tabindex="0">
  86. <a class="ui basic button" href="/diogo/gnu-social/action/star?redirect_to=%2fdiogo%2fgnu-social%2fissues%2f32">
  87. <i class="icon fa-star-o"></i>Star
  88. </a>
  89. <a class="ui basic label" href="/diogo/gnu-social/stars">
  90. 22
  91. </a>
  92. </div>
  93. <div class="ui labeled button" tabindex="0">
  94. <a class="ui basic button " href="/repo/fork/25974">
  95. <i class="octicon octicon-repo-forked"></i>Fork
  96. </a>
  97. <a class="ui basic label" href="/diogo/gnu-social/forks">
  98. 21
  99. </a>
  100. </div>
  101. </div>
  102. </div>
  103. </div>
  104. </div>
  105. </div>
  106. <div class="ui tabs container">
  107. <div class="ui tabular menu navbar">
  108. <a class=" item" href="/diogo/gnu-social">
  109. <i class="octicon octicon-file-text"></i> Files
  110. </a>
  111. <a class="active item" href="/diogo/gnu-social/issues">
  112. <i class="octicon octicon-issue-opened"></i> Issues <span class="ui blue small label">73</span>
  113. </a>
  114. <a class=" item" href="/diogo/gnu-social/pulls">
  115. <i class="octicon octicon-git-pull-request"></i> Pull Requests <span class="ui blue small label">3</span>
  116. </a>
  117. <a class=" item" href="/diogo/gnu-social/wiki">
  118. <i class="octicon octicon-book"></i> Wiki
  119. </a>
  120. </div>
  121. </div>
  122. <div class="ui tabs divider"></div>
  123. </div>
  124. <div class="ui container">
  125. <div class="navbar">
  126. <div class="ui compact small menu">
  127. <a class=" item" href="/diogo/gnu-social/labels">Labels</a>
  128. <a class=" item" href="/diogo/gnu-social/milestones">Milestones</a>
  129. </div>
  130. <div class="ui right">
  131. <a class="ui green button" href="/diogo/gnu-social/issues/new">New Issue</a>
  132. </div>
  133. </div>
  134. <div class="ui divider"></div>
  135. <div>
  136. <div class="ui grid">
  137. <div class="sixteen wide column title">
  138. <div class="ui grid">
  139. <h1 class="twelve wide column">
  140. <span class="index">#32</span> <span id="issue-title" class="has-emoji">[RFC] Core Plugins</span>
  141. <div id="edit-title-input" class="ui input" style="display: none">
  142. <input value="[RFC] Core Plugins">
  143. </div>
  144. </h1>
  145. </div>
  146. <div class="ui red large label"><i class="octicon octicon-issue-closed"></i> Closed</div>
  147. <span class="time-desc">
  148. opened <span class="time-since" title="Mon, 22 Jul 2019 20:08:46 UTC">1 year ago</span> by <a href="/diogo">diogo</a>
  149. ·
  150. 3 comments
  151. </span>
  152. <div class="ui divider"></div>
  153. </div>
  154. <div class="twelve wide column comment-list">
  155. <ui class="ui comments">
  156. <div class="comment">
  157. <a class="avatar" href="/diogo">
  158. <img src="/avatars/12290">
  159. </a>
  160. <div class="content">
  161. <div class="ui top attached header">
  162. <span class="text grey"><a href="/diogo">Diogo Cordeiro</a> commented <a href="#issue-63612"><span class="time-since" title="Mon, 22 Jul 2019 20:08:46 UTC">1 year ago</span></a></span>
  163. <div class="ui right actions">
  164. </div>
  165. </div>
  166. <div class="ui attached segment">
  167. <div class="render-content markdown has-emoji">
  168. <p>Maybe we should refactor core plugins to stay in a different directory, to better give the idea that they aren&#39;t mere plugins.</p>
  169. <p>For the effects of this RFC, and until a better name is proposed, I&#39;ll name such core-plugins of modules (to reflect specialized functionality).</p>
  170. <p>The heart of this issue is that I can&#39;t understand why the core plugins have been created... Why has this functionality been extracted from core to separate plugins? (<a href="/MMN-o" rel="nofollow">@MMN-o</a>)</p>
  171. <p>Another thing that confuses me is:</p>
  172. <ul>
  173. <li>The core plugin list has been created in 19 Oct 2013: <a href="https://git.gnu.io/gnu/gnu-social/commit/2a5ba1f74bb428fc74f181f806aa786b04b48d0a" rel="nofollow">https://git.gnu.io/gnu/gnu-social/commit/2a5ba1f74bb428fc74f181f806aa786b04b48d0a</a> stating that they cannot been disabled.</li>
  174. <li>The Favorite plugin was created in 24 Jun 2014: <a href="https://git.gnu.io/gnu/gnu-social/commit/db7cc7fa7553e0be302d518360648940756f131c" rel="nofollow">https://git.gnu.io/gnu/gnu-social/commit/db7cc7fa7553e0be302d518360648940756f131c</a> suggesting that it is optional.</li>
  175. </ul>
  176. <p>I think that we now have four options:</p>
  177. <ol>
  178. <li>Move everything to actual plugins (hard-work, requires making everything actually dynamic)</li>
  179. <li>Re-integrated all the core plugins into core (hard-work, means reverting everything)</li>
  180. <li>Refactor core plugins to &#34;modules&#34; and fix issues with the ActivityModeration plugin (reasonable, but it doesn&#39;t make sense to accept this change if there was no reason to extract core code to plugins) (other than avoiding the hard work)</li>
  181. <li>Let&#39;s forget all this and do nothing</li>
  182. </ol>
  183. <p>About ActivityModeration: This one is listed as core but all the core-code related to notice elimination was not ported to the plugin, contrary to what was done with the Favorite plugin.</p>
  184. </div>
  185. <div class="raw-content hide">Maybe we should refactor core plugins to stay in a different directory, to better give the idea that they aren&#39;t mere plugins.
  186. For the effects of this RFC, and until a better name is proposed, I&#39;ll name such core-plugins of modules (to reflect specialized functionality).
  187. The heart of this issue is that I can&#39;t understand why the core plugins have been created... Why has this functionality been extracted from core to separate plugins? (@MMN-o)
  188. Another thing that confuses me is:
  189. * The core plugin list has been created in 19 Oct 2013: https://git.gnu.io/gnu/gnu-social/commit/2a5ba1f74bb428fc74f181f806aa786b04b48d0a stating that they cannot been disabled.
  190. * The Favorite plugin was created in 24 Jun 2014: https://git.gnu.io/gnu/gnu-social/commit/db7cc7fa7553e0be302d518360648940756f131c suggesting that it is optional.
  191. I think that we now have four options:
  192. 1. Move everything to actual plugins (hard-work, requires making everything actually dynamic)
  193. 2. Re-integrated all the core plugins into core (hard-work, means reverting everything)
  194. 3. Refactor core plugins to &#34;modules&#34; and fix issues with the ActivityModeration plugin (reasonable, but it doesn&#39;t make sense to accept this change if there was no reason to extract core code to plugins) (other than avoiding the hard work)
  195. 4. Let&#39;s forget all this and do nothing
  196. About ActivityModeration: This one is listed as core but all the core-code related to notice elimination was not ported to the plugin, contrary to what was done with the Favorite plugin.
  197. </div>
  198. <div class="edit-content-zone hide" data-write="issue-63612-write" data-preview="issue-63612-preview" data-update-url="/diogo/gnu-social/issues/32/content" data-context="/diogo/gnu-social"></div>
  199. </div>
  200. </div>
  201. </div>
  202. <div class="comment" id="issuecomment-15250">
  203. <a class="avatar" href="/diogo">
  204. <img src="/avatars/12290">
  205. </a>
  206. <div class="content">
  207. <div class="ui top attached header">
  208. <span class="text grey"><a href="/diogo">Diogo Cordeiro</a> commented <a href="#issuecomment-15250"><span class="time-since" title="Mon, 22 Jul 2019 21:00:44 UTC">1 year ago</span></a></span>
  209. <div class="ui right actions">
  210. <div class="item tag">
  211. Owner
  212. </div>
  213. </div>
  214. </div>
  215. <div class="ui attached segment">
  216. <div class="render-content markdown has-emoji">
  217. <p>For reference (raised by rozzin):</p>
  218. <ul>
  219. <li><a href="http://foldoc.org/module" rel="nofollow">http://foldoc.org/module</a></li>
  220. <li><a href="http://foldoc.org/library" rel="nofollow">http://foldoc.org/library</a></li>
  221. <li><a href="http://foldoc.org/plugin" rel="nofollow">http://foldoc.org/plugin</a></li>
  222. </ul>
  223. <blockquote>
  224. <p>Why has this functionality been extracted from core to separate plugins?</p>
  225. </blockquote>
  226. <p>rozzin: If you look at changes when FavoritePlugin became a thing, for example... a lot of stuff got aggregated together more logically--the answer to &#34;where is the code implementing favorites?&#34; changed from &#34;oh, all over the place...&#34; to &#34;in plugins/Favorite&#34;.</p>
  227. <p>rozzin:</p>
  228. <pre><code>I think I&#39;d strongly suggest &#34;module&#34; over &#34;library&#34; for an application-level
  229. mechanism like this.
  230. But it might make sense to just move the &#34;core modules&#34; into subdirectories of lib.
  231. e.g. lib/Favorite.
  232. I just don&#39;t want to have to figure out linguistic constructs like &#34;these modules
  233. in the modules directory are the non-modular modules and the plugins are
  234. the modular modules&#34; :)
  235. &#34;library&#34; has a lower-level connotation;
  236. </code></pre>
  237. <p>XRevan86:</p>
  238. <pre><code>I think &#34;module&#34; is good.
  239. modules are not necessarily non-essential.
  240. </code></pre>
  241. <p>Given that both directories (plugins and modules) would be in GNU social root, and &#34;modules are not necessarily
  242. non-essential&#34;, it&#39;s maybe better to go with modules, as core-plugins might not be &#34;as lower-level&#34; as the other lib/ resources.</p>
  243. </div>
  244. <div class="raw-content hide">For reference (raised by rozzin):
  245. * http://foldoc.org/module
  246. * http://foldoc.org/library
  247. * http://foldoc.org/plugin
  248. &gt; Why has this functionality been extracted from core to separate plugins?
  249. rozzin: If you look at changes when FavoritePlugin became a thing, for example... a lot of stuff got aggregated together more logically--the answer to &#34;where is the code implementing favorites?&#34; changed from &#34;oh, all over the place...&#34; to &#34;in plugins/Favorite&#34;.
  250. rozzin:
  251. I think I&#39;d strongly suggest &#34;module&#34; over &#34;library&#34; for an application-level
  252. mechanism like this.
  253. But it might make sense to just move the &#34;core modules&#34; into subdirectories of lib.
  254. e.g. lib/Favorite.
  255. I just don&#39;t want to have to figure out linguistic constructs like &#34;these modules
  256. in the modules directory are the non-modular modules and the plugins are
  257. the modular modules&#34; :)
  258. &#34;library&#34; has a lower-level connotation;
  259. XRevan86:
  260. I think &#34;module&#34; is good.
  261. modules are not necessarily non-essential.
  262. Given that both directories (plugins and modules) would be in GNU social root, and &#34;modules are not necessarily
  263. non-essential&#34;, it&#39;s maybe better to go with modules, as core-plugins might not be &#34;as lower-level&#34; as the other lib/ resources.
  264. </div>
  265. <div class="edit-content-zone hide" data-write="issuecomment-15250-write" data-preview="issuecomment-15250-preview" data-update-url="/diogo/gnu-social/comments/15250" data-context="/diogo/gnu-social"></div>
  266. </div>
  267. </div>
  268. </div>
  269. <div class="comment" id="issuecomment-15269">
  270. <a class="avatar" href="/diogo">
  271. <img src="/avatars/12290">
  272. </a>
  273. <div class="content">
  274. <div class="ui top attached header">
  275. <span class="text grey"><a href="/diogo">Diogo Cordeiro</a> commented <a href="#issuecomment-15269"><span class="time-since" title="Tue, 23 Jul 2019 22:24:51 UTC">1 year ago</span></a></span>
  276. <div class="ui right actions">
  277. <div class="item tag">
  278. Owner
  279. </div>
  280. </div>
  281. </div>
  282. <div class="ui attached segment">
  283. <div class="render-content markdown has-emoji">
  284. <pre><code>includeals&gt; &gt; [rozzin] I&#39;m kind of liking the &#34;just put the core modules into lib along with all of the other `library&#39; code&#34;.
  285. &lt;includeals&gt; As said eariler, I don&#39;t dislike that path either. But at an implementation level, not everything in a module is library code, in fact, modules haver their own lib/ as well as action/, etc.
  286. &lt;includeals&gt; `modules` are more generic, which is good also, with v2 structured divided in includes and public, modules makes it easier to respect that structure.
  287. &lt;includeals&gt; &gt; &lt;lnxw37d4&gt; So how about /plugins for 3rd party optional modules; /modules/optional for optional modules included with GS &amp; maintained by the project; /modules/core for required modules? Abandoned or unmaintained modules could go in a separate repo, so admins would know that they may not work or may be insecure.
  288. &lt;includeals&gt; We already have local/ for 3rd party optional modules, if we can keep backwards compatible without seriously bad consequences, we should
  289. &lt;includeals&gt; &gt; &lt;dansup&gt; IMO plugins should become their own packages/git repos, that way, they can be maintained without having to require core updates
  290. &lt;includeals&gt; I confess I have mixed feelings about this... But lets leave that for another discussion.
  291. &lt;includeals&gt; rozzin: Also, modules still make use of the plugins system, the real twist is that they cannot be turned off
  292. &lt;xmpp-gnu&gt; [rozzin] more like &#34;plugins make use of the module system&#34;
  293. &lt;xmpp-gnu&gt; [rozzin] the awkwardness in GNU social WRT `some weird things that are &#34;plugins&#34; are things that are strange to be &#34;plugins&#34;&#39; seems to be that the codebase from StatusNet generally had a lot of spaghetti to it, and the only place where was initially any attempt at providing any sort of clean organization was for plugins
  294. &lt;xmpp-gnu&gt; [rozzin] because you can&#39;t really even do actual plugins (i.e. drop-in/addon-on modules that might be developed/maintained outside of your project) if you don&#39;t have any sort of module system
  295. &lt;xmpp-gnu&gt; [rozzin] but aside from plugins, I don&#39;t think StatusNet really cared about modularity / separation of concerns (or really `design&#39; in general, I guess...)
  296. &lt;xmpp-gnu&gt; [rozzin] so they called their modules &#34;plugins&#34; and they called the API the &#34;plugin&#34; API..., because that&#39;s the only kind of modules they had.
  297. &lt;xmpp-gnu&gt; [rozzin] And I think mmn just didn&#39;t bother trying to fight/convert the terminology when he started refactoring everything to have better boundaries.
  298. &lt;xmpp-gnu&gt; [rozzin] &#34;whether they&#39;re called Plugins or Modules&#34; was kind of the least of the concerns around that time--
  299. &lt;xmpp-gnu&gt; [rozzin] there was a lot of stuff that just didn&#39;t even work right, IIRC.
  300. &lt;xmpp-gnu&gt; [rozzin] and then we&#39;d start trying to fix that stuff, and run into that `wait where is the code for that even located?&#39; issue.
  301. &lt;xmpp-gnu&gt; [rozzin] I can&#39;t really say what was going on in mmn&#39;s head at the time, but I&#39;d say something like &#34;OMG. It&#39;s spread out all over the place? Again? I&#39;m just going to separate this stuff out now, because I can&#39;t maintain this otherwise&#34; is probably a good guess.
  302. </code></pre>
  303. </div>
  304. <div class="raw-content hide"> includeals&gt; &gt; [rozzin] I&#39;m kind of liking the &#34;just put the core modules into lib along with all of the other `library&#39; code&#34;.
  305. &lt;includeals&gt; As said eariler, I don&#39;t dislike that path either. But at an implementation level, not everything in a module is library code, in fact, modules haver their own lib/ as well as action/, etc.
  306. &lt;includeals&gt; `modules` are more generic, which is good also, with v2 structured divided in includes and public, modules makes it easier to respect that structure.
  307. &lt;includeals&gt; &gt; &lt;lnxw37d4&gt; So how about /plugins for 3rd party optional modules; /modules/optional for optional modules included with GS &amp; maintained by the project; /modules/core for required modules? Abandoned or unmaintained modules could go in a separate repo, so admins would know that they may not work or may be insecure.
  308. &lt;includeals&gt; We already have local/ for 3rd party optional modules, if we can keep backwards compatible without seriously bad consequences, we should
  309. &lt;includeals&gt; &gt; &lt;dansup&gt; IMO plugins should become their own packages/git repos, that way, they can be maintained without having to require core updates
  310. &lt;includeals&gt; I confess I have mixed feelings about this... But lets leave that for another discussion.
  311. &lt;includeals&gt; rozzin: Also, modules still make use of the plugins system, the real twist is that they cannot be turned off
  312. &lt;xmpp-gnu&gt; [rozzin] more like &#34;plugins make use of the module system&#34;
  313. &lt;xmpp-gnu&gt; [rozzin] the awkwardness in GNU social WRT `some weird things that are &#34;plugins&#34; are things that are strange to be &#34;plugins&#34;&#39; seems to be that the codebase from StatusNet generally had a lot of spaghetti to it, and the only place where was initially any attempt at providing any sort of clean organization was for plugins
  314. &lt;xmpp-gnu&gt; [rozzin] because you can&#39;t really even do actual plugins (i.e. drop-in/addon-on modules that might be developed/maintained outside of your project) if you don&#39;t have any sort of module system
  315. &lt;xmpp-gnu&gt; [rozzin] but aside from plugins, I don&#39;t think StatusNet really cared about modularity / separation of concerns (or really `design&#39; in general, I guess...)
  316. &lt;xmpp-gnu&gt; [rozzin] so they called their modules &#34;plugins&#34; and they called the API the &#34;plugin&#34; API..., because that&#39;s the only kind of modules they had.
  317. &lt;xmpp-gnu&gt; [rozzin] And I think mmn just didn&#39;t bother trying to fight/convert the terminology when he started refactoring everything to have better boundaries.
  318. &lt;xmpp-gnu&gt; [rozzin] &#34;whether they&#39;re called Plugins or Modules&#34; was kind of the least of the concerns around that time--
  319. &lt;xmpp-gnu&gt; [rozzin] there was a lot of stuff that just didn&#39;t even work right, IIRC.
  320. &lt;xmpp-gnu&gt; [rozzin] and then we&#39;d start trying to fix that stuff, and run into that `wait where is the code for that even located?&#39; issue.
  321. &lt;xmpp-gnu&gt; [rozzin] I can&#39;t really say what was going on in mmn&#39;s head at the time, but I&#39;d say something like &#34;OMG. It&#39;s spread out all over the place? Again? I&#39;m just going to separate this stuff out now, because I can&#39;t maintain this otherwise&#34; is probably a good guess.
  322. </div>
  323. <div class="edit-content-zone hide" data-write="issuecomment-15269-write" data-preview="issuecomment-15269-preview" data-update-url="/diogo/gnu-social/comments/15269" data-context="/diogo/gnu-social"></div>
  324. </div>
  325. </div>
  326. </div>
  327. <div class="comment" id="issuecomment-15270">
  328. <a class="avatar" href="/diogo">
  329. <img src="/avatars/12290">
  330. </a>
  331. <div class="content">
  332. <div class="ui top attached header">
  333. <span class="text grey"><a href="/diogo">Diogo Cordeiro</a> commented <a href="#issuecomment-15270"><span class="time-since" title="Tue, 23 Jul 2019 22:27:22 UTC">1 year ago</span></a></span>
  334. <div class="ui right actions">
  335. <div class="item tag">
  336. Owner
  337. </div>
  338. </div>
  339. </div>
  340. <div class="ui attached segment">
  341. <div class="render-content markdown has-emoji">
  342. <p>Relevant commits:</p>
  343. <ol>
  344. <li> <code><a href="https://notabug.org/diogo/gnu-social/commit/4cee29ab5c1317f1794ae45dc85591670ad15d06" rel="nofollow">4cee29ab5c</a></code></li>
  345. <li> <code><a href="https://notabug.org/diogo/gnu-social/commit/af31848400531406a18cacc66b1f4b8753254568" rel="nofollow">af31848400</a></code></li>
  346. </ol>
  347. <p>1.</p>
  348. <blockquote>
  349. <p>[CORE] Move core plugins to a new modules directory</p>
  350. <p>For reference (raised by rozzin in IRC):</p>
  351. <ul>
  352. <li><a href="http://foldoc.org/module" rel="nofollow">http://foldoc.org/module</a></li>
  353. <li><a href="http://foldoc.org/library" rel="nofollow">http://foldoc.org/library</a></li>
  354. <li><a href="http://foldoc.org/plugin" rel="nofollow">http://foldoc.org/plugin</a></li>
  355. </ul>
  356. <p>As noted by XRevan86, modules are not necessarily non-essential.
  357. As we will keep the modules directory in GS root [therefore, near to
  358. plugins/], it is evidenced the difference between both.</p>
  359. <p>This is a simple yet fundamental structural change. It doesn&#39;t change
  360. functionality but makes clearer the way we understand GNU social&#39;s
  361. internals.</p>
  362. </blockquote>
  363. <p>2.</p>
  364. <blockquote>
  365. <p>[CORE] Refactor Plugin API to Module API</p>
  366. </blockquote>
  367. </div>
  368. <div class="raw-content hide">Relevant commits:
  369. 1. https://notabug.org/diogo/gnu-social/commit/4cee29ab5c1317f1794ae45dc85591670ad15d06
  370. 2. https://notabug.org/diogo/gnu-social/commit/af31848400531406a18cacc66b1f4b8753254568
  371. 1.
  372. &gt; [CORE] Move core plugins to a new modules directory
  373. &gt;
  374. &gt; For reference (raised by rozzin in IRC):
  375. &gt;
  376. &gt; * http://foldoc.org/module
  377. &gt; * http://foldoc.org/library
  378. &gt; * http://foldoc.org/plugin
  379. &gt;
  380. &gt; As noted by XRevan86, modules are not necessarily non-essential.
  381. &gt; As we will keep the modules directory in GS root [therefore, near to
  382. &gt; plugins/], it is evidenced the difference between both.
  383. &gt;
  384. &gt; This is a simple yet fundamental structural change. It doesn&#39;t change
  385. &gt; functionality but makes clearer the way we understand GNU social&#39;s
  386. &gt; internals.
  387. 2.
  388. &gt; [CORE] Refactor Plugin API to Module API
  389. </div>
  390. <div class="edit-content-zone hide" data-write="issuecomment-15270-write" data-preview="issuecomment-15270-preview" data-update-url="/diogo/gnu-social/comments/15270" data-context="/diogo/gnu-social"></div>
  391. </div>
  392. </div>
  393. </div>
  394. <div class="event">
  395. <span class="octicon octicon-circle-slash"></span>
  396. <a class="ui avatar image" href="/diogo">
  397. <img src="/avatars/12290">
  398. </a>
  399. <span class="text grey"><a href="/diogo">diogo</a> closed <a id="event-15271" href="#event-15271"><span class="time-since" title="Tue, 23 Jul 2019 22:27:22 UTC">1 year ago</span></a></span>
  400. </div>
  401. <div class="ui warning message">
  402. <a href="/user/login?redirect_to=/diogo/gnu-social/issues/32">Sign in</a> to join this conversation.
  403. </div>
  404. </ui>
  405. </div>
  406. <div class="four wide column">
  407. <div class="ui segment metas">
  408. <div class="ui disabled floating jump select-label dropdown">
  409. <span class="text">
  410. <strong>Labels</strong>
  411. <span class="octicon octicon-gear"></span>
  412. </span>
  413. <div class="filter menu" data-action="update" data-update-url="/diogo/gnu-social/issues/32/label">
  414. <div class="no-select item">Clear labels</div>
  415. <a class=" item" href="#" data-id="1564" data-id-selector="#label_1564"><span class="octicon "></span><span class="label color" style="background-color: #fbca04"></span> bounty</a>
  416. <a class=" item" href="#" data-id="1483" data-id-selector="#label_1483"><span class="octicon "></span><span class="label color" style="background-color: #ee0701"></span> bug</a>
  417. <a class=" item" href="#" data-id="1484" data-id-selector="#label_1484"><span class="octicon "></span><span class="label color" style="background-color: #cccccc"></span> duplicate</a>
  418. <a class=" item" href="#" data-id="1485" data-id-selector="#label_1485"><span class="octicon "></span><span class="label color" style="background-color: #84b6eb"></span> enhancement</a>
  419. <a class=" item" href="#" data-id="1486" data-id-selector="#label_1486"><span class="octicon "></span><span class="label color" style="background-color: #128a0c"></span> help wanted</a>
  420. <a class=" item" href="#" data-id="1487" data-id-selector="#label_1487"><span class="octicon "></span><span class="label color" style="background-color: #e6e6e6"></span> invalid</a>
  421. <a class=" item" href="#" data-id="1488" data-id-selector="#label_1488"><span class="octicon "></span><span class="label color" style="background-color: #cc317c"></span> question</a>
  422. <a class="checked item" href="#" data-id="1565" data-id-selector="#label_1565"><span class="octicon octicon-check"></span><span class="label color" style="background-color: #d4c5f9"></span> RFC</a>
  423. <a class=" item" href="#" data-id="1841" data-id-selector="#label_1841"><span class="octicon "></span><span class="label color" style="background-color: #0052cc"></span> v3</a>
  424. <a class=" item" href="#" data-id="1489" data-id-selector="#label_1489"><span class="octicon "></span><span class="label color" style="background-color: #ffffff"></span> wontfix</a>
  425. </div>
  426. </div>
  427. <div class="ui labels list">
  428. <span class="no-select item hide">No Label</span>
  429. <div class="item">
  430. <a class="ui label hide" id="label_1564" href="/diogo/gnu-social/issues?labels=1564" style="color: #000; background-color: #fbca04">bounty</a>
  431. </div>
  432. <div class="item">
  433. <a class="ui label hide" id="label_1483" href="/diogo/gnu-social/issues?labels=1483" style="color: #fff; background-color: #ee0701">bug</a>
  434. </div>
  435. <div class="item">
  436. <a class="ui label hide" id="label_1484" href="/diogo/gnu-social/issues?labels=1484" style="color: #000; background-color: #cccccc">duplicate</a>
  437. </div>
  438. <div class="item">
  439. <a class="ui label hide" id="label_1485" href="/diogo/gnu-social/issues?labels=1485" style="color: #000; background-color: #84b6eb">enhancement</a>
  440. </div>
  441. <div class="item">
  442. <a class="ui label hide" id="label_1486" href="/diogo/gnu-social/issues?labels=1486" style="color: #fff; background-color: #128a0c">help wanted</a>
  443. </div>
  444. <div class="item">
  445. <a class="ui label hide" id="label_1487" href="/diogo/gnu-social/issues?labels=1487" style="color: #000; background-color: #e6e6e6">invalid</a>
  446. </div>
  447. <div class="item">
  448. <a class="ui label hide" id="label_1488" href="/diogo/gnu-social/issues?labels=1488" style="color: #fff; background-color: #cc317c">question</a>
  449. </div>
  450. <div class="item">
  451. <a class="ui label " id="label_1565" href="/diogo/gnu-social/issues?labels=1565" style="color: #000; background-color: #d4c5f9">RFC</a>
  452. </div>
  453. <div class="item">
  454. <a class="ui label hide" id="label_1841" href="/diogo/gnu-social/issues?labels=1841" style="color: #fff; background-color: #0052cc">v3</a>
  455. </div>
  456. <div class="item">
  457. <a class="ui label hide" id="label_1489" href="/diogo/gnu-social/issues?labels=1489" style="color: #000; background-color: #ffffff">wontfix</a>
  458. </div>
  459. </div>
  460. <div class="ui divider"></div>
  461. <div class="ui disabled floating jump select-milestone dropdown">
  462. <span class="text">
  463. <strong>Milestone</strong>
  464. <span class="octicon octicon-gear"></span>
  465. </span>
  466. <div class="menu" data-action="update" data-update-url="/diogo/gnu-social/issues/32/milestone">
  467. <div class="no-select item">Clear milestone</div>
  468. </div>
  469. </div>
  470. <div class="ui select-milestone list">
  471. <span class="no-select item ">No Milestone</span>
  472. <div class="selected">
  473. </div>
  474. </div>
  475. <div class="ui divider"></div>
  476. <input id="assignee_id" name="assignee_id" type="hidden" value="">
  477. <div class="ui disabled floating jump select-assignee dropdown">
  478. <span class="text">
  479. <strong>Assignee</strong>
  480. <span class="octicon octicon-gear"></span>
  481. </span>
  482. <div class="menu" data-action="update" data-update-url="/diogo/gnu-social/issues/32/assignee">
  483. <div class="no-select item">Clear assignee</div>
  484. </div>
  485. </div>
  486. <div class="ui select-assignee list">
  487. <span class="no-select item ">No assignee</span>
  488. <div class="selected">
  489. </div>
  490. </div>
  491. <div class="ui divider"></div>
  492. <div class="ui participants">
  493. <span class="text"><strong>1 Participants</strong></span>
  494. <div>
  495. <a href="/diogo">
  496. <img class="ui avatar image poping up" src="/avatars/12290" data-content="Diogo Cordeiro" data-position="top center" data-variation="small inverted">
  497. </a>
  498. </div>
  499. </div>
  500. </div>
  501. </div>
  502. </div>
  503. <div class="hide" id="edit-content-form">
  504. <div class="ui comment form">
  505. <div class="ui top attached tabular menu">
  506. <a class="active write item">Write</a>
  507. <a class="preview item" data-url="/api/v1/markdown" data-context="/diogo/gnu-social">Preview</a>
  508. </div>
  509. <div class="ui bottom attached active write tab segment">
  510. <textarea tabindex="1" id="content" name="content"></textarea>
  511. </div>
  512. <div class="ui bottom attached tab preview segment markdown">
  513. Loading...
  514. </div>
  515. <div class="text right edit buttons">
  516. <div class="ui basic blue cancel button" tabindex="3">Cancel</div>
  517. <div class="ui green save button" tabindex="2">Save</div>
  518. </div>
  519. </div>
  520. </div>
  521. <div class="hide" id="no-content">
  522. <span class="no-content">There is no content yet.</span>
  523. </div>
  524. </div>
  525. </div>
  526. </div>
  527. </div>
  528. <footer>
  529. <div class="ui container">
  530. <div class="ui left">
  531. <a href="/tos">Terms of Service</a>
  532. &bull;
  533. <a href="/about">About us</a>
  534. &bull;
  535. <a href="/outages">Outages</a>
  536. &bull;
  537. <a href="/hp/gogs/issues">Report a problem</a>
  538. &bull;
  539. <a href="/assets/librejs/librejs.html" data-jslicense="1">Javascript licenses</a>
  540. &bull;
  541. <a href="/fingerprints">SSH Fingerprints</a>
  542. </div>
  543. <div class="ui right links">
  544. <div class="ui language bottom floating slide up dropdown link item">
  545. <i class="world icon"></i>
  546. <div class="text">English</div>
  547. <div class="menu">
  548. <a class="item active selected" href="#">English</a>
  549. <a class="item " href="/diogo/gnu-social/issues/32?lang=zh-CN">简体中文</a>
  550. <a class="item " href="/diogo/gnu-social/issues/32?lang=zh-HK">繁體中文(香港)</a>
  551. <a class="item " href="/diogo/gnu-social/issues/32?lang=zh-TW">繁體中文(臺灣)</a>
  552. <a class="item " href="/diogo/gnu-social/issues/32?lang=de-DE">Deutsch</a>
  553. <a class="item " href="/diogo/gnu-social/issues/32?lang=fr-FR">français</a>
  554. <a class="item " href="/diogo/gnu-social/issues/32?lang=nl-NL">Nederlands</a>
  555. <a class="item " href="/diogo/gnu-social/issues/32?lang=lv-LV">latviešu</a>
  556. <a class="item " href="/diogo/gnu-social/issues/32?lang=ru-RU">русский</a>
  557. <a class="item " href="/diogo/gnu-social/issues/32?lang=ja-JP">日本語</a>
  558. <a class="item " href="/diogo/gnu-social/issues/32?lang=es-ES">español</a>
  559. <a class="item " href="/diogo/gnu-social/issues/32?lang=pt-BR">português do Brasil</a>
  560. <a class="item " href="/diogo/gnu-social/issues/32?lang=pl-PL">polski</a>
  561. <a class="item " href="/diogo/gnu-social/issues/32?lang=bg-BG">български</a>
  562. <a class="item " href="/diogo/gnu-social/issues/32?lang=it-IT">italiano</a>
  563. <a class="item " href="/diogo/gnu-social/issues/32?lang=fi-FI">suomi</a>
  564. <a class="item " href="/diogo/gnu-social/issues/32?lang=tr-TR">Türkçe</a>
  565. <a class="item " href="/diogo/gnu-social/issues/32?lang=cs-CZ">čeština</a>
  566. <a class="item " href="/diogo/gnu-social/issues/32?lang=sr-SP">српски</a>
  567. <a class="item " href="/diogo/gnu-social/issues/32?lang=sv-SE">svenska</a>
  568. <a class="item " href="/diogo/gnu-social/issues/32?lang=ko-KR">한국어</a>
  569. <a class="item " href="/diogo/gnu-social/issues/32?lang=gl-ES">galego</a>
  570. <a class="item " href="/diogo/gnu-social/issues/32?lang=uk-UA">українська</a>
  571. <a class="item " href="/diogo/gnu-social/issues/32?lang=en-GB">English (United Kingdom)</a>
  572. <a class="item " href="/diogo/gnu-social/issues/32?lang=hu-HU">Magyar</a>
  573. <a class="item " href="/diogo/gnu-social/issues/32?lang=sk-SK">Slovenčina</a>
  574. <a class="item " href="/diogo/gnu-social/issues/32?lang=id-ID">Indonesian</a>
  575. <a class="item " href="/diogo/gnu-social/issues/32?lang=fa-IR">Persian</a>
  576. </div>
  577. </div>
  578. </div>
  579. </div>
  580. </footer>
  581. </body>
  582. <link rel="stylesheet" href="/plugins/highlight-9.6.0/github.css">
  583. <script src="/plugins/highlight-9.6.0/highlight.pack.js"></script>
  584. <link rel="stylesheet" href="/plugins/dropzone-4.2.0/dropzone.css">
  585. <script src="/plugins/dropzone-4.2.0/dropzone.js"></script>
  586. <script src="/js/libs/emojify-1.1.0.min.js"></script>
  587. <script src="/js/libs/clipboard-1.5.9.min.js"></script>
  588. </html>