planet.communia https://planet.communia.org/ca ca Git wiki documentation in native drupal help pages https://planet.communia.org/ca/content/git-wiki-documentation-native-drupal-help-pages <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--title--blog--rss.html.twig * field--node--title--blog.html.twig x field--node--title.html.twig * field--node--blog.html.twig * field--title.html.twig * field--string.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/field--node--title.html.twig' --> <span>Git wiki documentation in native drupal help pages</span> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/field--node--title.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--uid--blog--rss.html.twig * field--node--uid--blog.html.twig x field--node--uid.html.twig * field--node--blog.html.twig * field--uid.html.twig * field--entity-reference.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/field--node--uid.html.twig' --> <span> <!-- THEME DEBUG --> <!-- THEME HOOK: 'username' --> <!-- BEGIN OUTPUT from 'themes/custom/planet_foundated/templates/username.html.twig' --> <a href="/user/1" class="visually-hidden p-author h-card" rel="author" title="kinta">kinta <img src="" alt="kinta" /> </a> <a title="View user profile." href="/ca/users/kinta">kinta</a> <!-- END OUTPUT from 'themes/custom/planet_foundated/templates/username.html.twig' --> </span> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/field--node--uid.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--created--blog--rss.html.twig * field--node--created--blog.html.twig x field--node--created.html.twig * field--node--blog.html.twig * field--created.html.twig * field--created.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/field--node--created.html.twig' --> <span> <!-- THEME DEBUG --> <!-- THEME HOOK: 'time' --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/time.html.twig' --> <time datetime="2024-02-27T18:03:27+01:00" title="Tuesday, February 27, 2024 - 18:03">Tue, 02/27/2024 - 18:03</time> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/time.html.twig' --> </span> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/field--node--created.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--body--blog--rss.html.twig * field--node--body--blog.html.twig * field--node--body.html.twig * field--node--blog.html.twig * field--body.html.twig * field--text-with-summary.html.twig x field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <div class="body field field--node-body field--name-body field--type-text-with-summary field--label-hidden field__item"><p>In last projects, here in communia we are using more and more the gitlab suite tools that are offering many free software projects. Calling projects for their own name: kde with its <a href="https://invent.kde.org">https://invent.kde.org</a> , freedesktop with its <a href="https://gitlab.freedesktop.org">https://gitlab.freedesktop.org</a> , and where we are more active; <a href="https://gitlab.com">https://gitlab.com</a>  and drupalcode.org <a href="https://git.drupalcode.org">https://git.drupalcode.org</a> .</p><p>The schema that we are using is a broader group that includes the drupal recommended project and also where we are including the custom modules, themes, issues, and the wiki documentation. This way we can attach project references to each page, and also the wiki is part of the whole project system.</p><p>We found that when we are providing the project to the group(being a customer, and association or a social project), the content editor or the collaborator is a different person than the one who is reporting issues and has access to gitlab. So this person hasn't access to the forged wiki documentation. Of course that the wiki could be exported to pdf, hosted as mark-down with nextcloud, or served using ruby with gollum. But it will be detached of your final shiny drupal product.</p><p>So here comes this simple module: <a href="https://www.drupal.org/project/git_wiki_help">https://www.drupal.org/project/git_wiki_help</a> . With it, you could add the exported or cloned git wiki to a directory in (private) files path. And then it will be accessible in native drupal administrator help pages, giving the person who administrates the web the general project documentation. </p><p>Take note that wiki is not updated in real-time as if there's an update in git wiki it needs to manually pulled (or If using git you could hang to git hooks to update automatically).</p></div> <!-- END OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--field-tags--blog--rss.html.twig * field--node--field-tags--blog.html.twig * field--node--field-tags.html.twig * field--node--blog.html.twig * field--field-tags.html.twig * field--entity-reference.html.twig x field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <div class="field field--node-field-tags field--name-field-tags field--type-entity-reference field--label-inline clearfix"> <div class="field-label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/ca/etiquetes/drupal" hreflang="ca">Drupal</a></div> <div class="field__item"><a href="/ca/etiquetes/documentacio" hreflang="ca">documentació</a></div> </div> </div> <!-- END OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'links__node' --> <!-- FILE NAME SUGGESTIONS: * links--node.html.twig * links--node.html.twig x links.html.twig --> <!-- BEGIN OUTPUT from 'themes/custom/planet_foundated/templates/links.html.twig' --> <!-- END OUTPUT from 'themes/custom/planet_foundated/templates/links.html.twig' --> Tue, 27 Feb 2024 17:03:27 +0000 kinta 6570 at https://planet.communia.org https://planet.communia.org/ca/content/git-wiki-documentation-native-drupal-help-pages#comments Nextcloud DAM, Nextcloud as digital asset manager integrated with Drupal https://planet.communia.org/ca/content/nextcloud-dam-nextcloud-digital-asset-manager-integrated-drupal <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--title--blog--rss.html.twig * field--node--title--blog.html.twig x field--node--title.html.twig * field--node--blog.html.twig * field--title.html.twig * field--string.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/field--node--title.html.twig' --> <span>Nextcloud DAM, Nextcloud as digital asset manager integrated with Drupal</span> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/field--node--title.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--uid--blog--rss.html.twig * field--node--uid--blog.html.twig x field--node--uid.html.twig * field--node--blog.html.twig * field--uid.html.twig * field--entity-reference.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/field--node--uid.html.twig' --> <span> <!-- THEME DEBUG --> <!-- THEME HOOK: 'username' --> <!-- BEGIN OUTPUT from 'themes/custom/planet_foundated/templates/username.html.twig' --> <a href="/user/1" class="visually-hidden p-author h-card" rel="author" title="kinta">kinta <img src="" alt="kinta" /> </a> <a title="View user profile." href="/ca/users/kinta">kinta</a> <!-- END OUTPUT from 'themes/custom/planet_foundated/templates/username.html.twig' --> </span> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/field--node--uid.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--created--blog--rss.html.twig * field--node--created--blog.html.twig x field--node--created.html.twig * field--node--blog.html.twig * field--created.html.twig * field--created.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/field--node--created.html.twig' --> <span> <!-- THEME DEBUG --> <!-- THEME HOOK: 'time' --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/time.html.twig' --> <time datetime="2023-07-02T17:20:46+02:00" title="Sunday, July 2, 2023 - 17:20">Sun, 07/02/2023 - 17:20</time> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/time.html.twig' --> </span> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/field--node--created.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--body--blog--rss.html.twig * field--node--body--blog.html.twig * field--node--body.html.twig * field--node--blog.html.twig * field--body.html.twig * field--text-with-summary.html.twig x field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <div class="body field field--node-body field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Many teams are using digital asset manager to power up their workflow. The split of teams being they commercial, marketing, graphical design, or editors and publishers, if not a requirement, may be recommended. So a paper writer, a graphical designer or a video maker, can find a common place where interchange and sharing happens.</p><p><span lang="en-US" xml:lang="en-US" xml:lang="en-US">The place where the work happens, often called a cloud, needs to be deeply connected to desktop or simply considered as a virtual office. It depends on the way of working, the tasks realized, the device used... Anyway, it's a fact that a split of the digital publishing from the digital asset store may be an improvement of the workflow. Something like a drive, a box or a cloud connected to a place where it is deployed, published, and shared. </span><a href="https://www.acquia.com/products/acquia-dam"><span lang="en-US" xml:lang="en-US" xml:lang="en-US">Acquia is doing with Widen</span></a><span lang="en-US" xml:lang="en-US" xml:lang="en-US">, </span><a href="https://www.bynder.com/es/"><span lang="en-US" xml:lang="en-US" xml:lang="en-US">bynder</span></a><span lang="en-US" xml:lang="en-US" xml:lang="en-US"> offers it, </span><a href="https://developers.google.com/drive/picker/guides/overview"><span lang="en-US" xml:lang="en-US" xml:lang="en-US">Google</span></a><span lang="en-US" xml:lang="en-US" xml:lang="en-US"> does it in his sile, as microsoft or amazon. But for privacy, legal compliance, self-defense, or some good reasons found in </span><a href="https://www.drupal.org/open-web-manifesto"><span lang="en-US" xml:lang="en-US" xml:lang="en-US">drupal open web manifesto</span></a><span lang="en-US" xml:lang="en-US" xml:lang="en-US">, and </span><a href="https://nextcloud.com/about/"><span lang="en-US" xml:lang="en-US" xml:lang="en-US">Nextcloud</span></a><span lang="en-US" xml:lang="en-US" xml:lang="en-US"> sites, we need that our work, data and connections are being made in safe places, </span><a href="https://indieweb.org/silo"><span lang="en-US" xml:lang="en-US" xml:lang="en-US">outside of the silos</span></a><span lang="en-US" xml:lang="en-US" xml:lang="en-US">. The self-hosting projects, the diy'ers, the communers, or the people who believe in common sharing can enjoy of this workflow power up out of the market. Let's make it work.</span></p><p><span lang="en-US" xml:lang="en-US" xml:lang="en-US">Talking about the technologies that are used by now, there are good, bad and ugly options. Among them, we have reasons to choose </span><a href="https://nextcloud.com/industries/agencies/"><span lang="en-US" xml:lang="en-US" xml:lang="en-US">nextcloud</span></a><span lang="en-US" xml:lang="en-US" xml:lang="en-US"> as digital asset manager, and </span><a href="https://www.drupal.org/about"><span lang="en-US" xml:lang="en-US" xml:lang="en-US">drupal</span></a><span lang="en-US" xml:lang="en-US" xml:lang="en-US"> as publishing and content manager. We trust these in projects because of their work, how they consider privacy, how they define ethical tech, and how they power up projects through free software. That's why we love to fill the gap between drupal and nextcloud. We are using both every time and everywhere, and we think that communities will enjoy the collaboration and integration between them.</span></p><p><span lang="en-US" xml:lang="en-US" xml:lang="en-US">Here at communia.org we make first steps, bringing easy authentication for nextcloud users to log in to drupal sites, with </span><a href="https://www.drupal.org/project/social_auth_nextcloud"><span lang="en-US" xml:lang="en-US" xml:lang="en-US">social auth nextcloud</span></a><span lang="en-US" xml:lang="en-US" xml:lang="en-US">, and allowing use of nextcloud media source from drupal with </span><a href="https://www.drupal.org/project/nextcloud_dam"><span lang="en-US" xml:lang="en-US" xml:lang="en-US">nextcloud dam</span></a><span lang="en-US" xml:lang="en-US" xml:lang="en-US">.</span></p><p>Despite is a work in progress, a minimal viable work is done, so let's discuss on how we can make it better right now. There's a list on my mind: a better filepicker with search capabilities, licenses manager in nextcloud, group sharing and sync them between drupal/nextcloud... We'll like to read how do you think that it could grow, and work together. Doors are open so you are welcome to contribute.</p><p><br /> </p></div> <!-- END OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'links__node' --> <!-- FILE NAME SUGGESTIONS: * links--node.html.twig * links--node.html.twig x links.html.twig --> <!-- BEGIN OUTPUT from 'themes/custom/planet_foundated/templates/links.html.twig' --> <!-- END OUTPUT from 'themes/custom/planet_foundated/templates/links.html.twig' --> Sun, 02 Jul 2023 15:20:46 +0000 kinta 6568 at https://planet.communia.org https://planet.communia.org/ca/content/nextcloud-dam-nextcloud-digital-asset-manager-integrated-drupal#comments Anartist i com les comunitats d'artistes poden fer front als encerclaments culturals https://planet.communia.org/ca/content/anartist-i-com-les-comunitats-dartistes-poden-fer-front-als-encerclaments-culturals <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--title--blog--rss.html.twig * field--node--title--blog.html.twig x field--node--title.html.twig * field--node--blog.html.twig * field--title.html.twig * field--string.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/field--node--title.html.twig' --> <span>Anartist i com les comunitats d&#039;artistes poden fer front als encerclaments culturals</span> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/field--node--title.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--field-image--blog--rss.html.twig * field--node--field-image--blog.html.twig * field--node--field-image.html.twig * field--node--blog.html.twig * field--field-image.html.twig * field--image.html.twig x field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <div class="image field field--node-field-image field--name-field-image field--type-image field--label-hidden field__items"> <div class="field__item"> <!-- THEME DEBUG --> <!-- THEME HOOK: 'responsive_image_formatter' --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/responsive-image-formatter.html.twig' --> <a href="/sites/default/files/1edebe31bd737ae8.png"> <!-- THEME DEBUG --> <!-- THEME HOOK: 'responsive_image' --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/responsive-image.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'image' --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/image.html.twig' --> <img loading="eager" srcset="/sites/default/files/styles/max_325x325/public/1edebe31bd737ae8.png?itok=8kqQ8Lzz 325w, /sites/default/files/styles/max_650x650/public/1edebe31bd737ae8.png?itok=HnPof5YC 650w, /sites/default/files/styles/max_1300x1300/public/1edebe31bd737ae8.png?itok=MB1s0dak 1285w" sizes="(min-width: 1290px) 325px, (min-width: 851px) 25vw, (min-width: 560px) 50vw, 100vw" width="325" height="199" src="/sites/default/files/styles/max_325x325/public/1edebe31bd737ae8.png?itok=8kqQ8Lzz" alt="" title="Anartist" /> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/image.html.twig' --> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/responsive-image.html.twig' --> </a> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/responsive-image-formatter.html.twig' --> </div> </div> <!-- END OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--uid--blog--rss.html.twig * field--node--uid--blog.html.twig x field--node--uid.html.twig * field--node--blog.html.twig * field--uid.html.twig * field--entity-reference.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/field--node--uid.html.twig' --> <span> <!-- THEME DEBUG --> <!-- THEME HOOK: 'username' --> <!-- BEGIN OUTPUT from 'themes/custom/planet_foundated/templates/username.html.twig' --> <a href="/user/1" class="visually-hidden p-author h-card" rel="author" title="kinta">kinta <img src="" alt="kinta" /> </a> <a title="View user profile." href="/ca/users/kinta">kinta</a> <!-- END OUTPUT from 'themes/custom/planet_foundated/templates/username.html.twig' --> </span> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/field--node--uid.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--created--blog--rss.html.twig * field--node--created--blog.html.twig x field--node--created.html.twig * field--node--blog.html.twig * field--created.html.twig * field--created.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/field--node--created.html.twig' --> <span> <!-- THEME DEBUG --> <!-- THEME HOOK: 'time' --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/time.html.twig' --> <time datetime="2023-05-12T18:36:36+02:00" title="Friday, May 12, 2023 - 18:36">Fri, 05/12/2023 - 18:36</time> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/time.html.twig' --> </span> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/field--node--created.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--body--blog--rss.html.twig * field--node--body--blog.html.twig * field--node--body.html.twig * field--node--blog.html.twig * field--body.html.twig * field--text-with-summary.html.twig x field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <div class="body field field--node-body field--name-body field--type-text-with-summary field--label-hidden field__item"><p style="-qt-block-indent:0;margin-bottom:12px;margin-left:0px;margin-right:0px;margin-top:12px;text-indent:0px;">(este contenido tambien está en castellano en: <a href="https://planet.communia.org/es/content/anartist-i-com-les-comunitats-dartistes-poden-fer-front-als-encerclaments-culturals">https://planet.communia.org/es/content/anartist-i-com-les-comunitats-dartistes-poden-fer-front-als-encerclaments-culturals</a> )</p> <p style="-qt-block-indent:0;margin-bottom:12px;margin-left:0px;margin-right:0px;margin-top:12px;text-indent:0px;">Ahir vam trobar-nos amb <a href="https://anartist.org/es">Anartist.org</a> i ens van poder explicar el projecte. Aqui l'enllaç a la presentació: </p> <p style="-qt-block-indent:0;margin-bottom:12px;margin-left:0px;margin-right:0px;margin-top:12px;text-indent:0px;"><a href="https://tube.communia.org/w/cm89SACBY1mzpFWyXQyUkY" target="_blank">https://tube.communia.org/w/cm89SACBY1mzpFWyXQyUkY</a> </p> <p style="-qt-block-indent:0;margin-bottom:12px;margin-left:0px;margin-right:0px;margin-top:12px;text-indent:0px;">Va ser molt interessant conèixer que aquesta comunitat creativa ha decidit emprar programari lliure per part de la seva activitat, també veure com han reconegut la filosofia, han entès problemàtiques compartides i han buscat solucions emancipadores. L'exercici de responsabilitat i la satisfacció en l'aportació, referma el poder que es té quan es mutualitzen els recursos, mitjans, serveis i béns. Per qualsevol agrupació, entendre que l'assumpció conscient i mesurada de les responsabilitats pel que fa a la gestió és la via per poder solucionar els problemes col·lectivament. Més enllà de les capacitats tècniques que cal assolir i que requereixen els serveis que ofereix Anartist, l'important és que és un primer pas per enfortir una comunitat, sens dubte superar les barreres tècniques dóna poder comunitari, ja que tenir habilitats tecnològiques per poder oferir serveis i béns pels teus iguals eleva no sols les lluites, també el benestar dins de les comunitats. En la creació, difusió, comunicació, i producció, no dependre de tercers de dubtosa confiança esdevé crucial.</p> <p style="-qt-block-indent:0;margin-bottom:12px;margin-left:0px;margin-right:0px;margin-top:12px;text-indent:0px;">Aquests tercers ens poden fer dèbils. Com es va dir, els diners els fan amb les teves dades, però de manera especulada, dubtosa i m'atreviria a dir que molt al marge de l'efectivitat. Bàsicament, són acumuladors d'audiències per tal de poder col·locar de manera segura explotacions de capital futures. Aquests horitzons incerts que el capital intenta establir condicionen el present marcant l'agenda i determinant el futurible, uns horitzons que arrasen, que cremen i encadenen. El producte ets tu, però sobretot és una especulació del que hauria de passar en el futur del món. Així es fan diners especulant, i per això n'hauríem de sortir, per guanyar un present sense cadenes en predeterminacions del poder per elevar el guany en la inversió.</p> <p style="-qt-block-indent:0;margin-bottom:12px;margin-left:0px;margin-right:0px;margin-top:12px;text-indent:0px;">Al marge de la capacitat gestora pel que fa a tecnologies que permeten comunicació, difusió i producció. La comunitat artista, entesa com a humans que volen tenir temps per poder desenvolupar les capacitats creatives, es veu dèbil quan es veu obligada a delegar responsabilitats la gestió de certs drets <a href="https://www.boe.es/buscar/act.php?id=BOE-A-1996-8930">per Llei</a> (segons LPI els drets de gestió col·lectiva obligatòria) o <a href="https://legardon.net/058-intentando-entender-el-nuevo-contrato-de-sgae/">per contracte amb entitat gestora intermediària</a> (sigui SGAE o una altra). </p> <p style="-qt-block-indent:0;margin-bottom:12px;margin-left:0px;margin-right:0px;margin-top:12px;text-indent:0px;">Sense voler entrar massa específicament en quins són els drets que s'haurien de garantir a qualsevol ésser humà que vulgui produir cultura, tractant els redactats en contracte de la SGAE en la seva última revisió, hi ha un buit crític quan perseguim el comunal creatiu. Quan un artista decideix activament l'autogestió dels drets, i decideix que el que creï alimenti el domini públic se li posen impediments. Per poder gaudir de la part pertinent en la recaptació que fa per nosaltres la gestora col·lectiva s'ha de pertànyer a una d'aquestes gestores, si no no hi haurà retribució malgrat que l'entitat recapti per nosaltres. Això implica la inscripció de molts artistes, és el típic, <em>perquè s'ho quedin els artistes més famosos m'inscric i m'ho quedo jo</em>. Convé entendre el contracte, nosaltres no som especialistes, ni de bon tros, som una petita cooperativa orientada a la creació de comunals, sigui programari, documentació, i a vegades gràfica, audiovisual o musical. Hi ha d'altres que ho explicaran molt millor, la <a href="https://xnet-x.net/es/eje/cultura-libre/">exgae</a> al seu dia, <a href="https://davidbravo.es/">david bravo</a>, <a href="https://creativecommons.org/">creative commons</a>, o a <a href="https://legardon.net/">le gardon</a> per exemple es poden trobar molts bons recursos sobre l'anomenada "propietat intel·lectual", tenen un podcast que tracten problemes habituals de manera concisa i documentada. Però com dèiem si decidim obtenir els beneficis obtinguts per la gestió col·lectiva que fan gestores convé llegir el contracte i entendre com a partir del 2021 es poden autogestionar certs drets tot i estar a l'SGAE.</p> <h5 style="-qt-block-indent:0;margin-bottom:12px;margin-left:0px;margin-right:0px;margin-top:12px;text-indent:0px;">En el camí de la firma hi ha decisions crucials, és quan has de decidir com planteges la gestió dels teus drets.</h5> <p style="-qt-block-indent:0;margin-bottom:12px;margin-left:0px;margin-right:0px;margin-top:12px;text-indent:0px;">Malgrat això pel que entenem no es pot produir pel domini públic de forma immediata si estàs a l'SGAE. Això significa que no hi ha cohabitació entre cultura lliure i la gestora majoritària. Llavors convé preguntar-se ¿Què passa quan hi ha la voluntat conscient d'alimentar comunals lliures i de domini públic? Com es pot renunciar activament als drets sobre l'obra per permetre la lliure circulació de la cultura generada? Un cop soc integrant de la gestora, ¿Tinc possibilitat de llicenciar <a href="https://creativecommons.org/licenses/by-sa/3.0/es/">BY SA</a>, o en <a href="https://creativecommons.org/publicdomain/zero/1.0/deed.es">CC0</a> domini públic directament? ¿ Hi ha possibilitat de col·laborar amb altres autors que publiquin en BY-SA o CC0?</p> <p style="-qt-block-indent:0;margin-bottom:12px;margin-left:0px;margin-right:0px;margin-top:12px;text-indent:0px;">S'ha de tenir en compte que <strong>tot el repertori passat i futur de l'artista es tractarà igual, sotmesa a la delegació dels drets determinada en el contracte amb l'SGAE, a menys que es notifiqui a l'SGAE de la revocació de gestió per la seva part (</strong><ins class="diffmod"><span lang="es-es" xml:lang="es-es">possible gràcies a sentencia judicial de </span></ins><a href="https://www.poderjudicial.es/search/AN/openDocument/8dfc10d596236aaea0a8778d75e36f0d/20221004"><ins class="diffmod">https://www.poderjudicial.es/search/AN/openDocument/8dfc10d596236aaea0a8778d75e36f0d/20221004</ins></a><ins class="diffmod"> ) <span lang="es-es" xml:lang="es-es">.</span></ins></p> <p style="-qt-block-indent:0;margin-bottom:12px;margin-left:0px;margin-right:0px;margin-top:12px;text-indent:0px;"> </p> <p><span xml:lang="es-ES" lang="es-ES" xml:lang="es-ES">Després de demanar a Ainara Legardon, que revisés el text, m'ha aclarit que ara</span><font face="Helvetica, Arial, sans-serif"> és posible decidir la gestió per cada obra a SGAE degut a l'aplicació de mesures cautelars i imposades per un jutjat de Barcelona. Més informació a </font><a href="https://legardon.net/072-unison-y-sgae-se-ven-en-los-juzgados/"><font face="Helvetica, Arial, sans-serif">https://legardon.net/072-unison-y-sgae-se-ven-en-los-juzgados/</font></a><font face="Helvetica, Arial, sans-serif"> i a </font><a href="https://www.poderjudicial.es/search/documento/AN/9349209/Competencia%20desleal/20201216"><font face="Helvetica, Arial, sans-serif">https://www.poderjudicial.es/search/documento/AN/9349209/Competencia%20desleal/20201216</font></a><font face="Helvetica, Arial, sans-serif">  i a </font><a href="https://www.poderjudicial.es/search/AN/openDocument/8dfc10d596236aaea0a8778d75e36f0d/20221004"><font face="Helvetica, Arial, sans-serif">https://www.poderjudicial.es/search/AN/openDocument/8dfc10d596236aaea0a8778d75e36f0d/20221004</font></a><font face="Helvetica, Arial, sans-serif"> . Per la qual els representats: </font></p> <blockquote><p><font face="Helvetica, Arial, sans-serif">tienen la posibilidad de que el titular de los derechos gestionados pueda revocar, total o parcialmente, su contrato de gestión con retirada de los derechos , categoría de derechos o tipos de obras o prestaciones de su elección</font><br /><font face="Helvetica, Arial, sans-serif">en los territorios de su elección. </font></p> </blockquote> <p style="-qt-block-indent:0;margin-bottom:12px;margin-left:0px;margin-right:0px;margin-top:12px;text-indent:0px;">Llavors si en el servei de <a href="https://audio.anartist.org/">audio</a> o <a href="https://video.anartist.org/">video</a> d'Anartist es publiquen continguts llicenciats en un CC sense haver notificat a l'SGAE de la revocació de gestió de drets sobre l'obra , segons contracte, entenem que podria reclamar. Potser ara mira cap a un altre cantó, però entenem que l'empara legal és poca i la indefensió és molta. En l'esperat cas que aflorin moltes més comunitats com Anartist, és imaginable un canvi d'estratègia de l'entitat gestora? Què passaria si es decideix perseguir activament, o si els agents reben primes per resultats i veuen els repositoris com a nínxols de beneficis. A tenir en compte que en l'execució de contractes la picaresca és habitual, el que firmes pot executar-se i el domini públic sol estar indefens per falta de comunitats actives que el preservin. </p> <p style="-qt-block-indent:0;margin-bottom:12px;margin-left:0px;margin-right:0px;margin-top:12px;text-indent:0px;">El mateix passaria quan fem servir continguts del servei d' <a href="https://audio.anartist.org/">audio</a> d'Anartist quan reproduïm música d'artistes inscrits a l'SGAE(i no els notifiquem de la revocació de drets), en una perruqueria de barri. Si diem que és cultura lliure i es fa servir com a tal de fet no estaríem dient del tot la veritat, la perruqueria hauria de pagar les llicències pertinents, anartist com a plataforma també. Per això <strong>animem a que Anartist segueixi enfortint-se assumint les lluites de la cultura lliure</strong> com a tal, que siguin capaces d'establir mecanismes d'autodefensa de la cultura per tothom, perquè és la cultura que creen aquestes comunitats les que enriqueixen la humanitat. Calen comunitats conscients, fortes i resilients per construir la via lenta per ser capaços de prendre el control quan calgui posar la directa.</p> <p style="-qt-block-indent:0;margin-bottom:12px;margin-left:0px;margin-right:0px;margin-top:12px;text-indent:0px;">No cal dir que la redacció del text anterior es fa des de la humilitat de <a href="https://communia.org">communia.org</a>, com a petita cooperativa que s'autogestiona els drets sobre el codi que produïm, i quan ho fem veiem el procomú i el domini públic com el que hauria de ser natural, com a via d'assumir la defensa i la promoció del que enriqueix la comunitat i la societat en general. </p> <p style="-qt-block-indent:0;margin-bottom:12px;margin-left:0px;margin-right:0px;margin-top:12px;text-indent:0px;">Malauradament, s'ha situat a la negació la possibilitat de generar comuns, i l'orientació a l'encerclament constant dels comunals asfixia el coneixement i la cultura. És per això que espais conscients com Anartist tenen valor pel debat que generen ara i per la comunitat que generen, i posarem les mans i dedicarem esforços a col·laborar i aportar amb tot el que puguem a aquestes comunitats. </p> </div> <!-- END OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--field-tags--blog--rss.html.twig * field--node--field-tags--blog.html.twig * field--node--field-tags.html.twig * field--node--blog.html.twig * field--field-tags.html.twig * field--entity-reference.html.twig x field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <div class="field field--node-field-tags field--name-field-tags field--type-entity-reference field--label-inline clearfix"> <div class="field-label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/en/etiquetes/cultura-hacker" hreflang="en">Cultura Hacker</a></div> <div class="field__item"><a href="/en/etiquetes/comunitat" hreflang="en">Comunitat</a></div> <div class="field__item"><a href="/en/etiquetes/procom%C3%BA" hreflang="en">Procomú</a></div> </div> </div> <!-- END OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'links__node' --> <!-- FILE NAME SUGGESTIONS: * links--node.html.twig * links--node.html.twig x links.html.twig --> <!-- BEGIN OUTPUT from 'themes/custom/planet_foundated/templates/links.html.twig' --> <!-- END OUTPUT from 'themes/custom/planet_foundated/templates/links.html.twig' --> Fri, 12 May 2023 16:36:36 +0000 kinta 6566 at https://planet.communia.org https://planet.communia.org/ca/content/anartist-i-com-les-comunitats-dartistes-poden-fer-front-als-encerclaments-culturals#comments Anartist i com les comunitats d'artistes poden fer front als encerclaments culturals https://planet.communia.org/ca/content/anartist-i-com-les-comunitats-dartistes-poden-fer-front-als-encerclaments-culturals <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--title--blog--rss.html.twig * field--node--title--blog.html.twig x field--node--title.html.twig * field--node--blog.html.twig * field--title.html.twig * field--string.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/field--node--title.html.twig' --> <span>Anartist i com les comunitats d&#039;artistes poden fer front als encerclaments culturals</span> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/field--node--title.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--field-image--blog--rss.html.twig * field--node--field-image--blog.html.twig * field--node--field-image.html.twig * field--node--blog.html.twig * field--field-image.html.twig * field--image.html.twig x field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <div class="image field field--node-field-image field--name-field-image field--type-image field--label-hidden field__items"> <div class="field__item"> <!-- THEME DEBUG --> <!-- THEME HOOK: 'responsive_image_formatter' --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/responsive-image-formatter.html.twig' --> <a href="/sites/default/files/1edebe31bd737ae8.png"> <!-- THEME DEBUG --> <!-- THEME HOOK: 'responsive_image' --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/responsive-image.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'image' --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/image.html.twig' --> <img loading="eager" srcset="/sites/default/files/styles/max_325x325/public/1edebe31bd737ae8.png?itok=8kqQ8Lzz 325w, /sites/default/files/styles/max_650x650/public/1edebe31bd737ae8.png?itok=HnPof5YC 650w, /sites/default/files/styles/max_1300x1300/public/1edebe31bd737ae8.png?itok=MB1s0dak 1285w" sizes="(min-width: 1290px) 325px, (min-width: 851px) 25vw, (min-width: 560px) 50vw, 100vw" width="325" height="199" src="/sites/default/files/styles/max_325x325/public/1edebe31bd737ae8.png?itok=8kqQ8Lzz" alt="" title="Anartist" /> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/image.html.twig' --> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/responsive-image.html.twig' --> </a> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/responsive-image-formatter.html.twig' --> </div> </div> <!-- END OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--uid--blog--rss.html.twig * field--node--uid--blog.html.twig x field--node--uid.html.twig * field--node--blog.html.twig * field--uid.html.twig * field--entity-reference.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/field--node--uid.html.twig' --> <span> <!-- THEME DEBUG --> <!-- THEME HOOK: 'username' --> <!-- BEGIN OUTPUT from 'themes/custom/planet_foundated/templates/username.html.twig' --> <a href="/user/1" class="visually-hidden p-author h-card" rel="author" title="kinta">kinta <img src="" alt="kinta" /> </a> <a title="View user profile." href="/ca/users/kinta">kinta</a> <!-- END OUTPUT from 'themes/custom/planet_foundated/templates/username.html.twig' --> </span> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/field--node--uid.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--created--blog--rss.html.twig * field--node--created--blog.html.twig x field--node--created.html.twig * field--node--blog.html.twig * field--created.html.twig * field--created.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/field--node--created.html.twig' --> <span> <!-- THEME DEBUG --> <!-- THEME HOOK: 'time' --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/time.html.twig' --> <time datetime="2023-05-12T18:36:36+02:00" title="Friday, May 12, 2023 - 18:36">Fri, 05/12/2023 - 18:36</time> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/time.html.twig' --> </span> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/field--node--created.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--body--blog--rss.html.twig * field--node--body--blog.html.twig * field--node--body.html.twig * field--node--blog.html.twig * field--body.html.twig * field--text-with-summary.html.twig x field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <div class="body field field--node-body field--name-body field--type-text-with-summary field--label-hidden field__item"><p style="-qt-block-indent:0;margin-bottom:12px;margin-left:0px;margin-right:0px;margin-top:12px;text-indent:0px;">(este contenido tambien está en castellano en: <a href="https://planet.communia.org/es/content/anartist-i-com-les-comunitats-dartistes-poden-fer-front-als-encerclaments-culturals">https://planet.communia.org/es/content/anartist-i-com-les-comunitats-dartistes-poden-fer-front-als-encerclaments-culturals</a> )</p> <p style="-qt-block-indent:0;margin-bottom:12px;margin-left:0px;margin-right:0px;margin-top:12px;text-indent:0px;">Ahir vam trobar-nos amb <a href="https://anartist.org/es">Anartist.org</a> i ens van poder explicar el projecte. Aqui l'enllaç a la presentació: </p> <p style="-qt-block-indent:0;margin-bottom:12px;margin-left:0px;margin-right:0px;margin-top:12px;text-indent:0px;"><a href="https://tube.communia.org/w/cm89SACBY1mzpFWyXQyUkY" target="_blank">https://tube.communia.org/w/cm89SACBY1mzpFWyXQyUkY</a> </p> <p style="-qt-block-indent:0;margin-bottom:12px;margin-left:0px;margin-right:0px;margin-top:12px;text-indent:0px;">Va ser molt interessant conèixer que aquesta comunitat creativa ha decidit emprar programari lliure per part de la seva activitat, també veure com han reconegut la filosofia, han entès problemàtiques compartides i han buscat solucions emancipadores. L'exercici de responsabilitat i la satisfacció en l'aportació, referma el poder que es té quan es mutualitzen els recursos, mitjans, serveis i béns. Per qualsevol agrupació, entendre que l'assumpció conscient i mesurada de les responsabilitats pel que fa a la gestió és la via per poder solucionar els problemes col·lectivament. Més enllà de les capacitats tècniques que cal assolir i que requereixen els serveis que ofereix Anartist, l'important és que és un primer pas per enfortir una comunitat, sens dubte superar les barreres tècniques dóna poder comunitari, ja que tenir habilitats tecnològiques per poder oferir serveis i béns pels teus iguals eleva no sols les lluites, també el benestar dins de les comunitats. En la creació, difusió, comunicació, i producció, no dependre de tercers de dubtosa confiança esdevé crucial.</p> <p style="-qt-block-indent:0;margin-bottom:12px;margin-left:0px;margin-right:0px;margin-top:12px;text-indent:0px;">Aquests tercers ens poden fer dèbils. Com es va dir, els diners els fan amb les teves dades, però de manera especulada, dubtosa i m'atreviria a dir que molt al marge de l'efectivitat. Bàsicament, són acumuladors d'audiències per tal de poder col·locar de manera segura explotacions de capital futures. Aquests horitzons incerts que el capital intenta establir condicionen el present marcant l'agenda i determinant el futurible, uns horitzons que arrasen, que cremen i encadenen. El producte ets tu, però sobretot és una especulació del que hauria de passar en el futur del món. Així es fan diners especulant, i per això n'hauríem de sortir, per guanyar un present sense cadenes en predeterminacions del poder per elevar el guany en la inversió.</p> <p style="-qt-block-indent:0;margin-bottom:12px;margin-left:0px;margin-right:0px;margin-top:12px;text-indent:0px;">Al marge de la capacitat gestora pel que fa a tecnologies que permeten comunicació, difusió i producció. La comunitat artista, entesa com a humans que volen tenir temps per poder desenvolupar les capacitats creatives, es veu dèbil quan es veu obligada a delegar responsabilitats la gestió de certs drets <a href="https://www.boe.es/buscar/act.php?id=BOE-A-1996-8930">per Llei</a> (segons LPI els drets de gestió col·lectiva obligatòria) o <a href="https://legardon.net/058-intentando-entender-el-nuevo-contrato-de-sgae/">per contracte amb entitat gestora intermediària</a> (sigui SGAE o una altra). </p> <p style="-qt-block-indent:0;margin-bottom:12px;margin-left:0px;margin-right:0px;margin-top:12px;text-indent:0px;">Sense voler entrar massa específicament en quins són els drets que s'haurien de garantir a qualsevol ésser humà que vulgui produir cultura, tractant els redactats en contracte de la SGAE en la seva última revisió, hi ha un buit crític quan perseguim el comunal creatiu. Quan un artista decideix activament l'autogestió dels drets, i decideix que el que creï alimenti el domini públic se li posen impediments. Per poder gaudir de la part pertinent en la recaptació que fa per nosaltres la gestora col·lectiva s'ha de pertànyer a una d'aquestes gestores, si no no hi haurà retribució malgrat que l'entitat recapti per nosaltres. Això implica la inscripció de molts artistes, és el típic, <em>perquè s'ho quedin els artistes més famosos m'inscric i m'ho quedo jo</em>. Convé entendre el contracte, nosaltres no som especialistes, ni de bon tros, som una petita cooperativa orientada a la creació de comunals, sigui programari, documentació, i a vegades gràfica, audiovisual o musical. Hi ha d'altres que ho explicaran molt millor, la <a href="https://xnet-x.net/es/eje/cultura-libre/">exgae</a> al seu dia, <a href="https://davidbravo.es/">david bravo</a>, <a href="https://creativecommons.org/">creative commons</a>, o a <a href="https://legardon.net/">le gardon</a> per exemple es poden trobar molts bons recursos sobre l'anomenada "propietat intel·lectual", tenen un podcast que tracten problemes habituals de manera concisa i documentada. Però com dèiem si decidim obtenir els beneficis obtinguts per la gestió col·lectiva que fan gestores convé llegir el contracte i entendre com a partir del 2021 es poden autogestionar certs drets tot i estar a l'SGAE.</p> <h5 style="-qt-block-indent:0;margin-bottom:12px;margin-left:0px;margin-right:0px;margin-top:12px;text-indent:0px;">En el camí de la firma hi ha decisions crucials, és quan has de decidir com planteges la gestió dels teus drets.</h5> <p style="-qt-block-indent:0;margin-bottom:12px;margin-left:0px;margin-right:0px;margin-top:12px;text-indent:0px;">Malgrat això pel que entenem no es pot produir pel domini públic de forma immediata si estàs a l'SGAE. Això significa que no hi ha cohabitació entre cultura lliure i la gestora majoritària. Llavors convé preguntar-se ¿Què passa quan hi ha la voluntat conscient d'alimentar comunals lliures i de domini públic? Com es pot renunciar activament als drets sobre l'obra per permetre la lliure circulació de la cultura generada? Un cop soc integrant de la gestora, ¿Tinc possibilitat de llicenciar <a href="https://creativecommons.org/licenses/by-sa/3.0/es/">BY SA</a>, o en <a href="https://creativecommons.org/publicdomain/zero/1.0/deed.es">CC0</a> domini públic directament? ¿ Hi ha possibilitat de col·laborar amb altres autors que publiquin en BY-SA o CC0?</p> <p style="-qt-block-indent:0;margin-bottom:12px;margin-left:0px;margin-right:0px;margin-top:12px;text-indent:0px;">S'ha de tenir en compte que <strong>tot el repertori passat i futur de l'artista es tractarà igual, sotmesa a la delegació dels drets determinada en el contracte amb l'SGAE, a menys que es notifiqui a l'SGAE de la revocació de gestió per la seva part (</strong><ins class="diffmod"><span lang="es-es" xml:lang="es-es">possible gràcies a sentencia judicial de </span></ins><a href="https://www.poderjudicial.es/search/AN/openDocument/8dfc10d596236aaea0a8778d75e36f0d/20221004"><ins class="diffmod">https://www.poderjudicial.es/search/AN/openDocument/8dfc10d596236aaea0a8778d75e36f0d/20221004</ins></a><ins class="diffmod"> ) <span lang="es-es" xml:lang="es-es">.</span></ins></p> <p style="-qt-block-indent:0;margin-bottom:12px;margin-left:0px;margin-right:0px;margin-top:12px;text-indent:0px;"> </p> <p><span xml:lang="es-ES" lang="es-ES" xml:lang="es-ES">Després de demanar a Ainara Legardon, que revisés el text, m'ha aclarit que ara</span><font face="Helvetica, Arial, sans-serif"> és posible decidir la gestió per cada obra a SGAE degut a l'aplicació de mesures cautelars i imposades per un jutjat de Barcelona. Més informació a </font><a href="https://legardon.net/072-unison-y-sgae-se-ven-en-los-juzgados/"><font face="Helvetica, Arial, sans-serif">https://legardon.net/072-unison-y-sgae-se-ven-en-los-juzgados/</font></a><font face="Helvetica, Arial, sans-serif"> i a </font><a href="https://www.poderjudicial.es/search/documento/AN/9349209/Competencia%20desleal/20201216"><font face="Helvetica, Arial, sans-serif">https://www.poderjudicial.es/search/documento/AN/9349209/Competencia%20desleal/20201216</font></a><font face="Helvetica, Arial, sans-serif">  i a </font><a href="https://www.poderjudicial.es/search/AN/openDocument/8dfc10d596236aaea0a8778d75e36f0d/20221004"><font face="Helvetica, Arial, sans-serif">https://www.poderjudicial.es/search/AN/openDocument/8dfc10d596236aaea0a8778d75e36f0d/20221004</font></a><font face="Helvetica, Arial, sans-serif"> . Per la qual els representats: </font></p> <blockquote><p><font face="Helvetica, Arial, sans-serif">tienen la posibilidad de que el titular de los derechos gestionados pueda revocar, total o parcialmente, su contrato de gestión con retirada de los derechos , categoría de derechos o tipos de obras o prestaciones de su elección</font><br /><font face="Helvetica, Arial, sans-serif">en los territorios de su elección. </font></p> </blockquote> <p style="-qt-block-indent:0;margin-bottom:12px;margin-left:0px;margin-right:0px;margin-top:12px;text-indent:0px;">Llavors si en el servei de <a href="https://audio.anartist.org/">audio</a> o <a href="https://video.anartist.org/">video</a> d'Anartist es publiquen continguts llicenciats en un CC sense haver notificat a l'SGAE de la revocació de gestió de drets sobre l'obra , segons contracte, entenem que podria reclamar. Potser ara mira cap a un altre cantó, però entenem que l'empara legal és poca i la indefensió és molta. En l'esperat cas que aflorin moltes més comunitats com Anartist, és imaginable un canvi d'estratègia de l'entitat gestora? Què passaria si es decideix perseguir activament, o si els agents reben primes per resultats i veuen els repositoris com a nínxols de beneficis. A tenir en compte que en l'execució de contractes la picaresca és habitual, el que firmes pot executar-se i el domini públic sol estar indefens per falta de comunitats actives que el preservin. </p> <p style="-qt-block-indent:0;margin-bottom:12px;margin-left:0px;margin-right:0px;margin-top:12px;text-indent:0px;">El mateix passaria quan fem servir continguts del servei d' <a href="https://audio.anartist.org/">audio</a> d'Anartist quan reproduïm música d'artistes inscrits a l'SGAE(i no els notifiquem de la revocació de drets), en una perruqueria de barri. Si diem que és cultura lliure i es fa servir com a tal de fet no estaríem dient del tot la veritat, la perruqueria hauria de pagar les llicències pertinents, anartist com a plataforma també. Per això <strong>animem a que Anartist segueixi enfortint-se assumint les lluites de la cultura lliure</strong> com a tal, que siguin capaces d'establir mecanismes d'autodefensa de la cultura per tothom, perquè és la cultura que creen aquestes comunitats les que enriqueixen la humanitat. Calen comunitats conscients, fortes i resilients per construir la via lenta per ser capaços de prendre el control quan calgui posar la directa.</p> <p style="-qt-block-indent:0;margin-bottom:12px;margin-left:0px;margin-right:0px;margin-top:12px;text-indent:0px;">No cal dir que la redacció del text anterior es fa des de la humilitat de <a href="https://communia.org">communia.org</a>, com a petita cooperativa que s'autogestiona els drets sobre el codi que produïm, i quan ho fem veiem el procomú i el domini públic com el que hauria de ser natural, com a via d'assumir la defensa i la promoció del que enriqueix la comunitat i la societat en general. </p> <p style="-qt-block-indent:0;margin-bottom:12px;margin-left:0px;margin-right:0px;margin-top:12px;text-indent:0px;">Malauradament, s'ha situat a la negació la possibilitat de generar comuns, i l'orientació a l'encerclament constant dels comunals asfixia el coneixement i la cultura. És per això que espais conscients com Anartist tenen valor pel debat que generen ara i per la comunitat que generen, i posarem les mans i dedicarem esforços a col·laborar i aportar amb tot el que puguem a aquestes comunitats. </p> </div> <!-- END OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--field-tags--blog--rss.html.twig * field--node--field-tags--blog.html.twig * field--node--field-tags.html.twig * field--node--blog.html.twig * field--field-tags.html.twig * field--entity-reference.html.twig x field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <div class="field field--node-field-tags field--name-field-tags field--type-entity-reference field--label-inline clearfix"> <div class="field-label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/en/etiquetes/cultura-hacker" hreflang="en">Cultura Hacker</a></div> <div class="field__item"><a href="/en/etiquetes/comunitat" hreflang="en">Comunitat</a></div> <div class="field__item"><a href="/en/etiquetes/procom%C3%BA" hreflang="en">Procomú</a></div> </div> </div> <!-- END OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'links__node' --> <!-- FILE NAME SUGGESTIONS: * links--node.html.twig * links--node.html.twig x links.html.twig --> <!-- BEGIN OUTPUT from 'themes/custom/planet_foundated/templates/links.html.twig' --> <!-- END OUTPUT from 'themes/custom/planet_foundated/templates/links.html.twig' --> Fri, 12 May 2023 16:36:36 +0000 kinta 6566 at https://planet.communia.org https://planet.communia.org/ca/content/anartist-i-com-les-comunitats-dartistes-poden-fer-front-als-encerclaments-culturals#comments https://planet.communia.org/ca/content/anartist-i-com-les-comunitats-dartistes-poden-fer-front-als-encerclaments-culturals#comments Sobre sobirania tecnològica , sessió de l'Escola SomConnexió https://planet.communia.org/ca/content/sobre-sobirania-tecnologica-sessio-de-lescola-somconnexio <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--title--blog--rss.html.twig * field--node--title--blog.html.twig x field--node--title.html.twig * field--node--blog.html.twig * field--title.html.twig * field--string.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/field--node--title.html.twig' --> <span>Sobre sobirania tecnològica , sessió de l&#039;Escola SomConnexió</span> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/field--node--title.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--uid--blog--rss.html.twig * field--node--uid--blog.html.twig x field--node--uid.html.twig * field--node--blog.html.twig * field--uid.html.twig * field--entity-reference.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/field--node--uid.html.twig' --> <span> <!-- THEME DEBUG --> <!-- THEME HOOK: 'username' --> <!-- BEGIN OUTPUT from 'themes/custom/planet_foundated/templates/username.html.twig' --> <a href="/user/1" class="visually-hidden p-author h-card" rel="author" title="kinta">kinta <img src="" alt="kinta" /> </a> <a title="View user profile." href="/ca/users/kinta">kinta</a> <!-- END OUTPUT from 'themes/custom/planet_foundated/templates/username.html.twig' --> </span> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/field--node--uid.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--created--blog--rss.html.twig * field--node--created--blog.html.twig x field--node--created.html.twig * field--node--blog.html.twig * field--created.html.twig * field--created.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/field--node--created.html.twig' --> <span> <!-- THEME DEBUG --> <!-- THEME HOOK: 'time' --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/time.html.twig' --> <time datetime="2022-11-06T02:03:57+01:00" title="Sunday, November 6, 2022 - 02:03">Sun, 11/06/2022 - 02:03</time> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/time.html.twig' --> </span> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/field--node--created.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--body--blog--rss.html.twig * field--node--body--blog.html.twig * field--node--body.html.twig * field--node--blog.html.twig * field--body.html.twig * field--text-with-summary.html.twig x field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <div class="body field field--node-body field--name-body field--type-text-with-summary field--label-hidden field__item"><p><em><span>Vam estar a l'escola de <a href="https://somconnexio.coop/arriba-la-1a-edicio-de-lescola-de-som-connexio-inscriu-thi/">Som Connexió</a> parlant sobre sobirania tecnològica. Juntament amb Decidim, Coopdevs i SomNúvol. Un bon debat que comprenia moltes escales i moltes perspectives, però que va tenir prou afluència i va permetre tractar el tema enfocant alguns reptes. Incloem les notes sobre la nostra aportació, que des de la història de communia enfocava com </span>depenem que les eines ens pertanyin, que com a treballadors de les cooperatives del procomú socialitzem els mitjans productius i comunicatius. Aqui va: </em></p> <h2>Breu repàs històric de Communia</h2> <p><span>Communia va néixer el 2010 com a <strong>conseqüencia d’expressions i lluites polítiques concretes</strong>. Però la seva història es remunta als 2000. Venint en un primer moment del <strong>món de la comunicació lliure</strong> i comunitària, érem la típica «comissió tècnica», i ens ocupàvem de solucionar els problemes concrets. Un dels problemes va ser el passar de <strong>FM a Internet</strong>. Aquí va començar tot i ens vem veure cada cop més implicats en el desnvolupament de software, primer <strong>ho piratejavem tot</strong>, però al final et trobaves que havies d’adaptar el software i per molt pirateig que hi hagués <strong>només ho podien resoldre els desenvolupadors que tenien el codi font</strong>.</span></p> <p><span>Quan ens van fer fora del lloc on estava la ràdio ens vam <strong>creuar amb l’experiència de l’Ateneu Candela</strong> i vam combinar el món autònom de les ràdios lliures amb el moviment global, amb les manis contra el g9 i el banc mundial.</span></p> <p><span>A base de fer nous contactes arreu vam començar a intentar seguir una mínima coherència, els <strong>hackers</strong> de llavors ens van introduir a Debian, puredata, icecast, i <strong>vam començar a hackejar</strong> el idjc o el korganizer per tal que ens servís per la nostra ràdio.</span></p> <p><span>Les necessitats per tal de tenir incidència política<strong> passa</strong><strong>va molt més</strong><strong> pel domini de les tecnologies i el poder-se connectar i comunicar globalment</strong>.</span></p> <p><span>Al cap d’un temps de passar a formar part d’un espai comunitari i viuren les complexitats començavem a entreveure una mutació de la ràdio cap a <a href="https://communia.org/"><strong>communia</strong></a> com a <strong>mecanisme de subsistència</strong> i defensa dels nostres drets ja que érem expulsats del mercat laboral, <strong>alhora que manteníem activitat política</strong>.</span></p> <p><span>Com a col·lectiu «hacker» del centre social L’<a href="https://www.ateneucandela.info/">Ateneu candela</a> entén la necessitat d’un projecte com el nostre i ens ajuda a tirar endavant. Se’ns ajuda perquè érem els que oferien <strong>solucions tècniques a</strong><strong>l</strong><strong> centre social</strong>, i possibilitavem poder duur a terme <strong>lluites més potents i innovadores;</strong> gravar discos per ser distribuits en el top manta, donar infraestructura tècnica, crear xarxes i canals de comunicació pels grups de treball al 15M, oferir espais d’intercanvi a la xarxa entre comunitats... <strong>Però per poder situar i adaptar </strong><strong>aquestes</strong><strong> tecnologies </strong><strong>era imprescindible la</strong><strong> sobirania </strong><strong>tecnològica </strong><strong>per tenir capacitat d’</strong><strong>adaptació</strong><strong> i </strong><strong>alhora</strong><strong> tenir garanties de no córrer riscos legals </strong><strong>i fomentar els comuns gràcies a llicències com la GPL</strong><strong>.</strong></span></p> <p> </p> <h2>Potes de communia.</h2> <p><span>La base que ha permès communia sempre ha estat el del desenvolupament, l’estudi i la defensa del <strong>comuns de </strong><strong>domini públic</strong>, per això ens agrada entendre communia com una <strong>cooperativa</strong><strong> del procomú</strong> que faciliti la tendència cap a models p2p, això és facilitar que les perifèries no necessitin intermediaris, i on els <strong>mitjans productius i comunicatius siguin de sobirania pròpia</strong>.</span></p> <p><span>Per fer-ho communia té 3 activitats principals: la de formació, la de desenvolupament i manteniment, i la de sistemes.</span></p> <p> </p> <h3>En quan a Desenvolupament</h3> <p><span>La categoria de projectes que estem duent a terme són bàsicament implementació i desenvolupament de gestors de contingut avançats i molt escalables, basant-nos en drupal. Sempre tenim una actitud no extractiva del software lliure, això vol dir que <strong>intentem insertar-nos en projectes existents millorant-los i adaptant-los a necessitats específiques</strong> per després o durant, poder <span><strong>realitzar</strong></span><span><strong> un retorn al procomú</strong></span>. Ens agrada anar a espatlles de gegants i cuidar aquest gegant.</span></p> <p><span>Per posar un exemple les últimes aportacions que hem fet recentment són contribucions al mòdul Activitypub per drupal o al mòdul de gestió de grups de drupal.</span></p> <h3> </h3> <h3>Formació</h3> <p><span>A part de gestors de contingut web, també duem a terme activitat formativa. Amb la voluntat de <strong>portar a les perifèries la reapropiació tecnològica</strong> fem formació, a petits i a grans.</span></p> <p><span>Quan als petits creem continguts no restringits, i seguim aquests materials en formacions per alumnes de primària sobre robòtica i pensament computacional basada en hardware i software lliure. Com a debilitat clara, encara tenim pendent <strong>transmetre la consciència del que vol dir que una tecnologia et pertanyi i no que </strong><strong>es</strong><strong> «</strong><strong>llogui»</strong><strong> </strong><strong>c</strong><strong>ircumstancialment </strong><strong>a través de llicències</strong>.</span></p> <p><span>Quan als grans, alfabetització digital amb migrants i cursos sobre temàtiques al voltant d’estratègies p2p i del procomú.</span></p> <p> </p> <h3>Sistemes</h3> <p><span>Sobre sistemes a part de mantenit la infraestructura <strong>que ens permet poder oferir </strong><strong>els altres serveis de formació</strong> i <strong>desenvolupament</strong>, també oferim infraestructura a organitzacions i grups .</span></p> <p><span>Rescatem maquinari que el sistema expulsa i que malgrat ser vàlids per determinades tasques com l’escola o l’administració s’hi aplica l’etiqueta d’obsolet per falta de sistema operatiu.</span></p> <p><span>Un dels llocs on se’ns requereix més és en l’educació.</span></p> <p><span>En els centres educatius, hem viscut algunes <strong>ràfegues de provisió de dotacions, </strong><strong>i com són</strong><strong> </strong><strong>inversament proporcional a la capacitat de manteniment</strong>. I davant d’això requereixen ajuda per no ofegar-se entre màquines. I malgrat hi anem en certes ocasions ens trobem en situacions incòmodes perquè creiem que realment no hi hauríem de ser.</span></p> <p><span>A part allà el que veiem és que<strong> hi ha una excessiva dependència de sistemes privatius</strong>: gestió del centre, missatgeria, plataformes d’aprenentatge... Que és programari imprescindible que no s’ofereix des del departament o s’ofereix deficientment i que <strong>fa que hi hagi d’haver despesa pública permanent</strong> en llicències per part del departament, <strong>o increment de quotes</strong> i vulneració de la llei en quan a gratuïtat de l’educació.</span></p> <p> </p> <h2>Sobirania</h2> <p>En totes les branques de communia es percep que es parteix de la sobirania tecnològica i que la necessitat d’aquesta és elemental.</p> <p><span>Venint d’un moment expansiu del sector <strong>semblava que</strong> les grans empreses <strong>regalarien les seves infrastructures i continguts de franc i per sempre:</strong> que es podria fer servir il·limitadament youtube, que et podies comunicar infinitament amb altres actors a la xarxa amb twitter o que podies tenir gigues i gigues d’emmagatzematge. Però no. <strong>C</strong><strong>oincidint amb</strong> el desgast de la capacitat inversora amb les <strong>startups</strong>, Ara es comença a veure que no, que hi han uns inversors que demanen el creixement del que van invertir i exigeixen cobrar uns beneficis.</span></p> <p><span>Davant d’aquesta exigència cal replantejar la nostra actitud. O seguim la roda i comencem a pagar a les plataformes, o comencem a actuar en lògica de tenir sobirania tecnològica com a perjudicats del sistema.</span></p> <p><span>Convé analitzar 1) necessitats indegudes 2)com construir alternatives a sils de cultura o coneixement que es creuen imprescindibles.</span></p> <p><span>Davant les <strong>necessitats indegudes</strong>, cadascú que fagi un examen de consciència sobre si el foment d’alguna plataforma té un origen superfluu, per exemple ser capaços d’escapar a la posició còmode de gaudir de pols d’audiència a instagram, de gaudir de campanyes de marketing i publicitat a Google, de música il·limitada a spotify, o de de infinits realities a Netflix.</span></p> <p><span>Sobre <strong>l’alimentar els sils</strong>, primer entendre el concepte de sil que fa <a href="https://indieweb.org/silo">indieweb</a>:</span></p> <p><span>Una web centralitzada en la qual el propietari del lloc, li pertanyen d’alguna manera els continguts(tenen part dels drets) i on es restringeix l’accés des de fora. Instagram i els enllaços</span></p> <p><span>Aqui convé pensar bé en l’alternativa al sistema plataforma. En si som i serem capaços de crear i mantenir estructures gegantines que permetin desplaçar els existents. Tenint en compte que algunes plataformes acumulen més capital que alguns països, <strong>fins a quin punt podem pensar en plataformes macro</strong>. I en cas que fossim capaços, si la seva escala erosionaria la seva capacitat transformadora. Això és, si els llocs intermitjos i superiors en la piràmide serien els «<span>botxins</span> de la revolució».</span></p> <p><span>En el nostre entendre i tal com plantegem els projectes intentem seguir la lògica de <strong>disminuir l’escala i ampliar l’abast</strong>, situar experiències petites, fins i tot micro, que tinguin la força en els comunals. Això és concebre d’una manera conscient, centralitzada i coordinada mitjançant protocols i especificacions, els interessos comuns. Però situada i específica pel que fa a la infraestructura i les implementacions per poder-se adaptar a multitud de situacions.</span></p> <p><span>Cal permetre en última instància que des de projectes molt situats poder coordinar-se i entendre’s globalment per la defensa de necessitats humanes genèriques.</span></p></div> <!-- END OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--field-tags--blog--rss.html.twig * field--node--field-tags--blog.html.twig * field--node--field-tags.html.twig * field--node--blog.html.twig * field--field-tags.html.twig * field--entity-reference.html.twig x field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <div class="field field--node-field-tags field--name-field-tags field--type-entity-reference field--label-inline clearfix"> <div class="field-label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/en/etiquetes/societat-de-la-informaci%C3%B3" hreflang="en">Societat de la informació</a></div> <div class="field__item"><a href="/ca/etiquetes/cursos" hreflang="ca">Cursos</a></div> <div class="field__item"><a href="/ca/etiquetes/tecnologia" hreflang="ca">tecnologia</a></div> <div class="field__item"><a href="/en/etiquetes/procom%C3%BA" hreflang="en">Procomú</a></div> <div class="field__item"><a href="/en/etiquetes/communia" hreflang="en">communia</a></div> </div> </div> <!-- END OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'links__node' --> <!-- FILE NAME SUGGESTIONS: * links--node.html.twig * links--node.html.twig x links.html.twig --> <!-- BEGIN OUTPUT from 'themes/custom/planet_foundated/templates/links.html.twig' --> <!-- END OUTPUT from 'themes/custom/planet_foundated/templates/links.html.twig' --> Sun, 06 Nov 2022 01:03:57 +0000 kinta 6564 at https://planet.communia.org https://planet.communia.org/ca/content/sobre-sobirania-tecnologica-sessio-de-lescola-somconnexio#comments Recipe to migrate Drupal 7 Organic Groups to Drupal 9 Group https://planet.communia.org/ca/content/recipe-migrate-drupal-7-organic-groups-drupal-9-group <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--title--blog--rss.html.twig * field--node--title--blog.html.twig x field--node--title.html.twig * field--node--blog.html.twig * field--title.html.twig * field--string.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/field--node--title.html.twig' --> <span>Recipe to migrate Drupal 7 Organic Groups to Drupal 9 Group</span> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/field--node--title.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--uid--blog--rss.html.twig * field--node--uid--blog.html.twig x field--node--uid.html.twig * field--node--blog.html.twig * field--uid.html.twig * field--entity-reference.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/field--node--uid.html.twig' --> <span> <!-- THEME DEBUG --> <!-- THEME HOOK: 'username' --> <!-- BEGIN OUTPUT from 'themes/custom/planet_foundated/templates/username.html.twig' --> <a href="/user/1" class="visually-hidden p-author h-card" rel="author" title="kinta">kinta <img src="" alt="kinta" /> </a> <a title="View user profile." href="/ca/users/kinta">kinta</a> <!-- END OUTPUT from 'themes/custom/planet_foundated/templates/username.html.twig' --> </span> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/field--node--uid.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--created--blog--rss.html.twig * field--node--created--blog.html.twig x field--node--created.html.twig * field--node--blog.html.twig * field--created.html.twig * field--created.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/field--node--created.html.twig' --> <span> <!-- THEME DEBUG --> <!-- THEME HOOK: 'time' --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/time.html.twig' --> <time datetime="2021-10-03T22:43:19+02:00" title="Sunday, October 3, 2021 - 22:43">Sun, 10/03/2021 - 22:43</time> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/time.html.twig' --> </span> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/field--node--created.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--body--blog--rss.html.twig * field--node--body--blog.html.twig * field--node--body.html.twig * field--node--blog.html.twig * field--body.html.twig * field--text-with-summary.html.twig x field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <div class="body field field--node-body field--name-body field--type-text-with-summary field--label-hidden field__item"><p data-sourcepos="3:1-3:511" dir="auto">Despite there are some guides about migrating from OG to Group, as the well written <a href="https://thinktandem.io/blog/2018/03/30/migrating-drupal-7-organic-groups-to-drupal-8-group/" rel="nofollow noreferrer noopener" target="_blank">https://thinktandem.io/blog/2018/03/30/migrating-drupal-7-organic-groups-to-drupal-8-group/</a> , and other guidelines such as <a href="https://www.drupal.org/project/group/issues/2826544" rel="nofollow noreferrer noopener" target="_blank">https://www.drupal.org/project/group/issues/2826544</a> companion of <a href="https://gitlab.com/geeks4change/hubs4change/h4c/-/tree/608842e73cc02c45deede42556693a9db2a7fc37/modules_dev/h4c_migrate/config/install">https://gitlab.com/geeks4change/hubs4change/h4c/-/tree/608842e73cc02c45deede42556693a9db2a7fc37/modules_dev/h4c_migrate/config/install</a> or <a href="https://www.drupal.org/node/2797845" rel="nofollow noreferrer noopener" target="_blank">https://www.drupal.org/node/2797845</a> . It's really adapted to your environment how you gonna carry on.</p> <p data-sourcepos="5:1-5:295" dir="auto">This is a short and crash guide that we at communia have done to complete the migrations. When Carrying on this migration must be estimated if the effort of writing code, in a form of migrate plugin classes or yml's, is worth enough than cooking csv's using spreadsheet skills. We've done both.</p> <p data-sourcepos="7:1-8:334" dir="auto">After importing everything from a standard drupal migration from 7 to 8(with what core offers), the groups types must be created, also their group roles and their group content types in a manual way. The site to be recreated is a news portal that takes headlines from several sites, and each blog or external blog is administrated in group, so being a group can be useful to add dynamic members or authors. So in the example I need to create two group types ( for each node enabled as organic group in d7), bundles are (machine)named:</p> <ul data-sourcepos="10:1-13:0" dir="auto"><li data-sourcepos="10:1-11:148"><code>blog</code>(it was wrongly named previously bloc). I want also to add a role for each group type as admin to add granularity in permissions. So is needed to create the role admin for each type named:</li> <li data-sourcepos="12:1-13:0"><code>blog_group-admin</code> for <code>blog</code> group types.</li> </ul><p data-sourcepos="14:1-14:385" dir="auto">I also marked the automatic role assignment for creators as admin role. It carries on a little of complexity in membership migrations as we must take care that memberships aren't duplicated (hence the plugin created below), as one membership will be created when groups are created on groups migration step, and another one when we import the memberships on memberships migration step.</p> <p data-sourcepos="16:1-16:190" dir="auto">So we need a simple module to add the migration configurations in yml, and it will aid us to create some extra plugins and hang on some hooks as <code>hook_migrate_prepare_row</code>. The module tree:</p> <pre class="code highlight js-syntax-highlight language-plaintext white" data-sourcepos="18:1-41:3" lang="plaintext" v-pre="true" xml:lang="plaintext"> <code><span class="line" id="LC1" lang="plaintext" xml:lang="plaintext">.</span> <span class="line" id="LC2" lang="plaintext" xml:lang="plaintext">├── group-content-export.csv.template</span> <span class="line" id="LC3" lang="plaintext" xml:lang="plaintext">├── group-memberships.csv.template</span> <span class="line" id="LC4" lang="plaintext" xml:lang="plaintext">├── migrations</span> <span class="line" id="LC5" lang="plaintext" xml:lang="plaintext">│   ├── d7_node_complete_og_to_canal_blog_extern.yml</span> <span class="line" id="LC6" lang="plaintext" xml:lang="plaintext">│   ├── d7_node_complete_og_to_canal_proposta_externa.yml</span> <span class="line" id="LC7" lang="plaintext" xml:lang="plaintext">│   ├── rename_d7_node_complete_blog_post.yml</span> <span class="line" id="LC8" lang="plaintext" xml:lang="plaintext">│   ├── rename_d7_node_complete_podcast.yml</span> <span class="line" id="LC9" lang="plaintext" xml:lang="plaintext">│   ├── upgrade_d7_node_og_blog_content.yml</span> <span class="line" id="LC10" lang="plaintext" xml:lang="plaintext">│   ├── upgrade_d7_node_og_blog_translation.yml</span> <span class="line" id="LC11" lang="plaintext" xml:lang="plaintext">│   ├── upgrade_d7_node_og_blog.yml</span> <span class="line" id="LC12" lang="plaintext" xml:lang="plaintext">│   └── upgrade_d7_user_og_blog_memberships.yml</span> <span class="line" id="LC13" lang="plaintext" xml:lang="plaintext">├── og_migrate_group.info.yml</span> <span class="line" id="LC14" lang="plaintext" xml:lang="plaintext">├── og_migrate_group.module</span> <span class="line" id="LC15" lang="plaintext" xml:lang="plaintext">├── README.md</span> <span class="line" id="LC16" lang="plaintext" xml:lang="plaintext">└── src</span> <span class="line" id="LC17" lang="plaintext" xml:lang="plaintext"> └── Plugin</span> <span class="line" id="LC18" lang="plaintext" xml:lang="plaintext"> └── migrate</span> <span class="line" id="LC19" lang="plaintext" xml:lang="plaintext"> ├── process</span> <span class="line" id="LC20" lang="plaintext" xml:lang="plaintext">    ├── GroupCreator.php</span> <span class="line" id="LC21" lang="plaintext" xml:lang="plaintext">    ├── SkipCreator.php</span> <span class="line" id="LC22" lang="plaintext" xml:lang="plaintext">    └── SkipOnNotEmpty.php</span></code></pre><p data-sourcepos="43:1-43:54" dir="auto">Go to gitlab.com to get the actual code for each file: <a href="https://gitlab.com/communia/og_migrate_group">https://gitlab.com/communia/og_migrate_group</a></p> <p data-sourcepos="45:1-45:21" dir="auto">So now let's yamling.</p> <h2 data-sourcepos="47:1-47:9" dir="auto">Groups</h2> <p data-sourcepos="49:1-49:184" dir="auto">As Organic groups usually was assigned to nodes (if that's not the case cook it as you need), you 'll see it will be based in <code>d7_node</code> migration, so <code>d7_node</code> must be migrated before.</p> <p data-sourcepos="51:1-51:41" dir="auto"><code>migrations/upgrade_d7_node_og_blog.yml</code>:</p> <pre class="code highlight js-syntax-highlight language-plaintext white" data-sourcepos="53:1-109:3" lang="plaintext" v-pre="true" xml:lang="plaintext"> <code><span class="line" id="LC1" lang="plaintext" xml:lang="plaintext">langcode: en</span> <span class="line" id="LC2" lang="plaintext" xml:lang="plaintext">status: true</span> <span class="line" id="LC3" lang="plaintext" xml:lang="plaintext">dependencies: { }</span> <span class="line" id="LC4" lang="plaintext" xml:lang="plaintext">id: upgrade_d7_node_og_blog</span> <span class="line" id="LC5" lang="plaintext" xml:lang="plaintext">class: Drupal\migrate\Plugin\Migration</span> <span class="line" id="LC6" lang="plaintext" xml:lang="plaintext">field_plugin_method: null</span> <span class="line" id="LC7" lang="plaintext" xml:lang="plaintext">cck_plugin_method: null</span> <span class="line" id="LC8" lang="plaintext" xml:lang="plaintext">migration_tags:</span> <span class="line" id="LC9" lang="plaintext" xml:lang="plaintext"> - 'Drupal 7'</span> <span class="line" id="LC10" lang="plaintext" xml:lang="plaintext">migration_group: insert_group</span> <span class="line" id="LC11" lang="plaintext" xml:lang="plaintext">label: 'Insert OG Bloc group'</span> <span class="line" id="LC12" lang="plaintext" xml:lang="plaintext">source:</span> <span class="line" id="LC13" lang="plaintext" xml:lang="plaintext"> plugin: d7_node</span> <span class="line" id="LC14" lang="plaintext" xml:lang="plaintext"> # The node bundle that must be get from source</span> <span class="line" id="LC15" lang="plaintext" xml:lang="plaintext"> node_type: bloc</span> <span class="line" id="LC16" lang="plaintext" xml:lang="plaintext">process:</span> <span class="line" id="LC17" lang="plaintext" xml:lang="plaintext"> type:</span> <span class="line" id="LC18" lang="plaintext" xml:lang="plaintext"> plugin: default_value</span> <span class="line" id="LC19" lang="plaintext" xml:lang="plaintext"> # put blog as group type (it can be simple mapped here but this is to show how default values work)</span> <span class="line" id="LC20" lang="plaintext" xml:lang="plaintext"> default_value: blog</span> <span class="line" id="LC21" lang="plaintext" xml:lang="plaintext"> id: nid</span> <span class="line" id="LC22" lang="plaintext" xml:lang="plaintext"> # The next uid will be the creator, if default role is marked it will be assigned to this user in group realm</span> <span class="line" id="LC23" lang="plaintext" xml:lang="plaintext"> uid: node_uid</span> <span class="line" id="LC24" lang="plaintext" xml:lang="plaintext"> label: title</span> <span class="line" id="LC25" lang="plaintext" xml:lang="plaintext"> path: alias</span> <span class="line" id="LC26" lang="plaintext" xml:lang="plaintext"> field_description: body</span> <span class="line" id="LC27" lang="plaintext" xml:lang="plaintext"> # An illustration of how an image in a group could be used, images must be migrated before as usual (in this example it is not using media module).</span> <span class="line" id="LC28" lang="plaintext" xml:lang="plaintext"> field_imatge_blogextern:</span> <span class="line" id="LC29" lang="plaintext" xml:lang="plaintext"> plugin: sub_process</span> <span class="line" id="LC30" lang="plaintext" xml:lang="plaintext"> source: field_imatge_blogextern</span> <span class="line" id="LC31" lang="plaintext" xml:lang="plaintext"> process:</span> <span class="line" id="LC32" lang="plaintext" xml:lang="plaintext"> target_id: fid</span> <span class="line" id="LC33" lang="plaintext" xml:lang="plaintext"> alt: alt</span> <span class="line" id="LC34" lang="plaintext" xml:lang="plaintext"> title: title</span> <span class="line" id="LC35" lang="plaintext" xml:lang="plaintext"> width: width</span> <span class="line" id="LC36" lang="plaintext" xml:lang="plaintext"> height: height</span> <span class="line" id="LC37" lang="plaintext" xml:lang="plaintext"> # Here an illustration of how a term could be assigned, once again terms must exist before migrating this.</span> <span class="line" id="LC38" lang="plaintext" xml:lang="plaintext"> field_tipus_bloc:</span> <span class="line" id="LC39" lang="plaintext" xml:lang="plaintext"> plugin: sub_process</span> <span class="line" id="LC40" lang="plaintext" xml:lang="plaintext"> source: taxonomy_vocabulary_7</span> <span class="line" id="LC41" lang="plaintext" xml:lang="plaintext"> process:</span> <span class="line" id="LC42" lang="plaintext" xml:lang="plaintext"> target_id:</span> <span class="line" id="LC43" lang="plaintext" xml:lang="plaintext"> plugin: entity_lookup</span> <span class="line" id="LC44" lang="plaintext" xml:lang="plaintext"> source: tid</span> <span class="line" id="LC45" lang="plaintext" xml:lang="plaintext"> value_key: tid</span> <span class="line" id="LC46" lang="plaintext" xml:lang="plaintext"> bundle_key: vid</span> <span class="line" id="LC47" lang="plaintext" xml:lang="plaintext"> bundle: vocabulary_7</span> <span class="line" id="LC48" lang="plaintext" xml:lang="plaintext"> entity_type: taxonomy_term</span> <span class="line" id="LC49" lang="plaintext" xml:lang="plaintext"> revision_uid: revision_uid</span> <span class="line" id="LC50" lang="plaintext" xml:lang="plaintext"> revision_log: log</span> <span class="line" id="LC51" lang="plaintext" xml:lang="plaintext"> revision_timestamp: timestamp</span> <span class="line" id="LC52" lang="plaintext" xml:lang="plaintext">destination:</span> <span class="line" id="LC53" lang="plaintext" xml:lang="plaintext"> # It's a group</span> <span class="line" id="LC54" lang="plaintext" xml:lang="plaintext"> plugin: 'entity:group'</span> <span class="line" id="LC55" lang="plaintext" xml:lang="plaintext">migration_dependencies: null</span></code></pre><p data-sourcepos="111:1-111:61" dir="auto">Once module is installed this migration can be imported with:</p> <p data-sourcepos="113:1-113:54" dir="auto"><code>vendor/drush/drush/drush mim upgrade_d7_node_og_blog</code></p> <p data-sourcepos="115:1-115:21" dir="auto">and rolled back with:</p> <p data-sourcepos="117:1-117:67" dir="auto"><code>vendor/drush/drush/drush migrate:rollback upgrade_d7_node_og_blog</code></p> <p data-sourcepos="119:1-119:102" dir="auto">if error locks any migration state saying it's currently importing (when is not) it can be fixed with:</p> <p data-sourcepos="121:1-121:52" dir="auto"><code>drush migrate:reset-status upgrade_d7_node_og_blog</code></p> <p data-sourcepos="124:1-124:513" dir="auto">It's common that sometimes a crufty translation exists, in this example we found two extra fields that covered the translation, instead of using entity_translate or node_translate so <code>field_titolbloces</code> means <code>title</code> field in spanish and <code>field_descripciobloces</code> means <code>field_description</code> in spanish . This configuration will update existing groups translating it. Must be noted that group type must be marked as translatable editing the group type settings. <code>migrations/upgrade_d7_node_og_blog_translation.yml</code>:</p> <pre class="code highlight js-syntax-highlight language-plaintext white" data-sourcepos="126:1-166:3" lang="plaintext" v-pre="true" xml:lang="plaintext"> <code><span class="line" id="LC1" lang="plaintext" xml:lang="plaintext">langcode: en</span> <span class="line" id="LC2" lang="plaintext" xml:lang="plaintext">status: true</span> <span class="line" id="LC3" lang="plaintext" xml:lang="plaintext">dependencies: { }</span> <span class="line" id="LC4" lang="plaintext" xml:lang="plaintext">id: upgrade_d7_node_og_blog_translation</span> <span class="line" id="LC5" lang="plaintext" xml:lang="plaintext">class: Drupal\migrate\Plugin\Migration</span> <span class="line" id="LC6" lang="plaintext" xml:lang="plaintext">migration_tags:</span> <span class="line" id="LC7" lang="plaintext" xml:lang="plaintext"> - 'Drupal 7'</span> <span class="line" id="LC8" lang="plaintext" xml:lang="plaintext">migration_group: insert_group</span> <span class="line" id="LC9" lang="plaintext" xml:lang="plaintext">label: 'Insert OG blog group translation'</span> <span class="line" id="LC10" lang="plaintext" xml:lang="plaintext">migration_dependencies:</span> <span class="line" id="LC11" lang="plaintext" xml:lang="plaintext"> required:</span> <span class="line" id="LC12" lang="plaintext" xml:lang="plaintext"> - upgrade_d7_node_og_blog</span> <span class="line" id="LC13" lang="plaintext" xml:lang="plaintext">source:</span> <span class="line" id="LC14" lang="plaintext" xml:lang="plaintext"> plugin: d7_node</span> <span class="line" id="LC15" lang="plaintext" xml:lang="plaintext"> node_type: 'bloc'</span> <span class="line" id="LC16" lang="plaintext" xml:lang="plaintext">process:</span> <span class="line" id="LC17" lang="plaintext" xml:lang="plaintext"> # Will update the previously imported groups</span> <span class="line" id="LC18" lang="plaintext" xml:lang="plaintext"> id:</span> <span class="line" id="LC19" lang="plaintext" xml:lang="plaintext"> plugin: migration_lookup</span> <span class="line" id="LC20" lang="plaintext" xml:lang="plaintext"> source: nid</span> <span class="line" id="LC21" lang="plaintext" xml:lang="plaintext"> migration: upgrade_d7_node_og_blog</span> <span class="line" id="LC22" lang="plaintext" xml:lang="plaintext"> # Where can be found the label in spanish</span> <span class="line" id="LC23" lang="plaintext" xml:lang="plaintext"> label:</span> <span class="line" id="LC24" lang="plaintext" xml:lang="plaintext"> plugin: get</span> <span class="line" id="LC25" lang="plaintext" xml:lang="plaintext"> source: field_titolbloces</span> <span class="line" id="LC26" lang="plaintext" xml:lang="plaintext"> # Where can be found the description in spanish</span> <span class="line" id="LC27" lang="plaintext" xml:lang="plaintext"> field_description:</span> <span class="line" id="LC28" lang="plaintext" xml:lang="plaintext"> plugin: get</span> <span class="line" id="LC29" lang="plaintext" xml:lang="plaintext"> source: field_descripciobloces</span> <span class="line" id="LC30" lang="plaintext" xml:lang="plaintext"> # default value of langcode</span> <span class="line" id="LC31" lang="plaintext" xml:lang="plaintext"> langcode:</span> <span class="line" id="LC32" lang="plaintext" xml:lang="plaintext"> plugin: default_value</span> <span class="line" id="LC33" lang="plaintext" xml:lang="plaintext"> default_value: es</span> <span class="line" id="LC34" lang="plaintext" xml:lang="plaintext"> type:</span> <span class="line" id="LC35" lang="plaintext" xml:lang="plaintext"> plugin: default_value</span> <span class="line" id="LC36" lang="plaintext" xml:lang="plaintext"> default_value: blog</span> <span class="line" id="LC37" lang="plaintext" xml:lang="plaintext">destination:</span> <span class="line" id="LC38" lang="plaintext" xml:lang="plaintext"> plugin: 'entity:group'</span> <span class="line" id="LC39" lang="plaintext" xml:lang="plaintext"> translations: true</span></code></pre><p data-sourcepos="168:1-168:36" dir="auto">This migration can be imported with:</p> <p data-sourcepos="170:1-170:66" dir="auto"><code>vendor/drush/drush/drush mim upgrade_d7_node_og_blog_translation</code></p> <p data-sourcepos="172:1-172:21" dir="auto">and rolled back with:</p> <p data-sourcepos="174:1-174:79" dir="auto"><code>vendor/drush/drush/drush migrate:rollback upgrade_d7_node_og_blog_translation</code></p> <p data-sourcepos="176:1-176:102" dir="auto">if error locks any migration state saying it's currently importing (when is not) it can be fixed with:</p> <p data-sourcepos="178:1-178:64" dir="auto"><code>drush migrate:reset-status upgrade_d7_node_og_blog_translation</code></p> <h1 data-sourcepos="180:1-180:13" dir="auto">Memberships</h1> <p data-sourcepos="182:1-182:196" dir="auto">As Organic groups memberships usually was assigned to users (if that's not the case cook it as you need), you 'll see it will be based in <code>d7_user</code> migration, so <code>d7_user</code> must be migrated before.</p> <p data-sourcepos="184:1-184:192" dir="auto">I found that here is easier to use csv, than to carry on too much code to take from here and there, so I have created a view of og memberships with data export in source site. View fields are:</p> <ul data-sourcepos="186:1-190:0" dir="auto"><li data-sourcepos="186:1-186:38">OG membership: Og membership ID (id)</li> <li data-sourcepos="187:1-187:32">OG membership: Entity id (uid)</li> <li data-sourcepos="188:1-188:31">OG membership: Group ID (gid)</li> <li data-sourcepos="189:1-190:0">(Content entity referenced from og_user_node) Content: Identificator (UID) of the author (gid_uid)</li> </ul><p data-sourcepos="191:1-191:23" dir="auto">View relationships are:</p> <ul data-sourcepos="193:1-196:0" dir="auto"><li data-sourcepos="193:1-193:140">OG user node target id. (Content entity referenced from og_user_node) : A bridge to the Content entity that is referenced via og_user_node</li> <li data-sourcepos="194:1-196:0">OG membership: User from OG membership (REQUIRED)</li> </ul><p data-sourcepos="197:1-197:39" dir="auto">If you prefer the sql of that view was:</p> <pre class="code highlight js-syntax-highlight language-plaintext white" data-sourcepos="198:1-210:3" lang="plaintext" v-pre="true" xml:lang="plaintext"> <code><span class="line" id="LC1" lang="plaintext" xml:lang="plaintext">SELECT og_membership.id AS id, og_membership.etid AS og_membership_etid, og_membership.gid AS og_membership_gid, node_og_membership.uid AS node_og_membership_uid, 'membership_export:page' AS view_name</span> <span class="line" id="LC2" lang="plaintext" xml:lang="plaintext">FROM</span> <span class="line" id="LC3" lang="plaintext" xml:lang="plaintext">{og_membership} og_membership</span> <span class="line" id="LC4" lang="plaintext" xml:lang="plaintext">LEFT JOIN {node} node_og_membership ON og_membership.gid = node_og_membership.nid</span> <span class="line" id="LC5" lang="plaintext" xml:lang="plaintext">LEFT JOIN {field_data_og_user_node} node_og_membership__field_data_og_user_node ON node_og_membership.nid = node_og_membership__field_data_og_user_node.og_user_node_target_id AND (node_og_membership__field_data_og_user_node.entity_type = 'user' AND node_og_membership__field_data_og_user_node.deleted = '0')</span> <span class="line" id="LC6" lang="plaintext" xml:lang="plaintext">LEFT JOIN {users} og_user_node_node ON node_og_membership__field_data_og_user_node.entity_id = og_user_node_node.uid</span> <span class="line" id="LC7" lang="plaintext" xml:lang="plaintext">LEFT JOIN {field_data_og_group_ref} node_og_membership__field_data_og_group_ref ON node_og_membership.nid = node_og_membership__field_data_og_group_ref.og_group_ref_target_id AND (node_og_membership__field_data_og_group_ref.entity_type = 'user' AND node_og_membership__field_data_og_group_ref.deleted = '0')</span> <span class="line" id="LC8" lang="plaintext" xml:lang="plaintext">LEFT JOIN {users} og_group_ref_node ON node_og_membership__field_data_og_group_ref.entity_id = og_group_ref_node.uid</span> <span class="line" id="LC9" lang="plaintext" xml:lang="plaintext">INNER JOIN {users} users_og_membership ON og_membership.etid = users_og_membership.uid AND (og_membership.entity_type = 'user')</span> <span class="line" id="LC10" lang="plaintext" xml:lang="plaintext">LEFT JOIN {profile} profile_users ON users_og_membership.uid = profile_users.uid</span> </code></pre><p data-sourcepos="212:1-212:83" dir="auto">Anyway it must output what's in group-memberships.csv.template. Here the csv fields</p> <ul data-sourcepos="214:1-218:0" dir="auto"><li data-sourcepos="214:1-214:59"><code>id</code> The id of the membership(rarely used, but preserved)</li> <li data-sourcepos="215:1-215:55"><code>uid</code>, The user id of the membership (so the member).</li> <li data-sourcepos="216:1-216:49"><code>gid</code>, The id of the group that user is member.</li> <li data-sourcepos="217:1-218:0"><code>gid_uid</code>, The creator of the group (not used in migration as we take it with a dedicated migration plugin).</li> </ul><pre class="code highlight js-syntax-highlight language-plaintext white" data-sourcepos="219:1-224:3" lang="plaintext" v-pre="true" xml:lang="plaintext"> <code><span class="line" id="LC1" lang="plaintext" xml:lang="plaintext">"id","uid","gid","gid_uid"</span> <span class="line" id="LC2" lang="plaintext" xml:lang="plaintext">"46","1","14829","1"</span> <span class="line" id="LC3" lang="plaintext" xml:lang="plaintext">"50","4","14814","4"</span> <span class="line" id="LC4" lang="plaintext" xml:lang="plaintext">"52","12","14834","1"</span></code></pre><p data-sourcepos="226:1-226:39" dir="auto">And here the migration that carries on:</p> <pre class="code highlight js-syntax-highlight language-plaintext white" data-sourcepos="228:1-314:3" lang="plaintext" v-pre="true" xml:lang="plaintext"> <code><span class="line" id="LC1" lang="plaintext" xml:lang="plaintext">langcode: en</span> <span class="line" id="LC2" lang="plaintext" xml:lang="plaintext">status: true</span> <span class="line" id="LC3" lang="plaintext" xml:lang="plaintext">dependencies: { }</span> <span class="line" id="LC4" lang="plaintext" xml:lang="plaintext">id: upgrade_d7_user_og_blog_memberships</span> <span class="line" id="LC5" lang="plaintext" xml:lang="plaintext">class: Drupal\migrate\Plugin\Migration</span> <span class="line" id="LC6" lang="plaintext" xml:lang="plaintext">field_plugin_method: null</span> <span class="line" id="LC7" lang="plaintext" xml:lang="plaintext">cck_plugin_method: null</span> <span class="line" id="LC8" lang="plaintext" xml:lang="plaintext">migration_tags:</span> <span class="line" id="LC9" lang="plaintext" xml:lang="plaintext"> - 'Drupal 7 og'</span> <span class="line" id="LC10" lang="plaintext" xml:lang="plaintext">migration_group: insert_group</span> <span class="line" id="LC11" lang="plaintext" xml:lang="plaintext">label: 'Insert Group Membership'</span> <span class="line" id="LC12" lang="plaintext" xml:lang="plaintext">source:</span> <span class="line" id="LC13" lang="plaintext" xml:lang="plaintext"> plugin: csv</span> <span class="line" id="LC14" lang="plaintext" xml:lang="plaintext"> # Must be obtained from source with some exporter (e.g. views data export) and placed in this path</span> <span class="line" id="LC15" lang="plaintext" xml:lang="plaintext"> path: 'public://imports/group-export.csv'</span> <span class="line" id="LC16" lang="plaintext" xml:lang="plaintext"> header_row_count: 1</span> <span class="line" id="LC17" lang="plaintext" xml:lang="plaintext"> ids:</span> <span class="line" id="LC18" lang="plaintext" xml:lang="plaintext"> -</span> <span class="line" id="LC19" lang="plaintext" xml:lang="plaintext"> id</span> <span class="line" id="LC20" lang="plaintext" xml:lang="plaintext"> column_names:</span> <span class="line" id="LC21" lang="plaintext" xml:lang="plaintext"> -</span> <span class="line" id="LC22" lang="plaintext" xml:lang="plaintext"> id: Identifier</span> <span class="line" id="LC23" lang="plaintext" xml:lang="plaintext"> -</span> <span class="line" id="LC24" lang="plaintext" xml:lang="plaintext"> uid: UserID</span> <span class="line" id="LC25" lang="plaintext" xml:lang="plaintext"> -</span> <span class="line" id="LC26" lang="plaintext" xml:lang="plaintext"> gid: Group</span> <span class="line" id="LC27" lang="plaintext" xml:lang="plaintext"> delimiter: ','</span> <span class="line" id="LC28" lang="plaintext" xml:lang="plaintext"> enclosure: '"'</span> <span class="line" id="LC29" lang="plaintext" xml:lang="plaintext">process:</span> <span class="line" id="LC30" lang="plaintext" xml:lang="plaintext"> label: uid</span> <span class="line" id="LC31" lang="plaintext" xml:lang="plaintext"> group_creator:</span> <span class="line" id="LC32" lang="plaintext" xml:lang="plaintext"> # TO illustrate a plugin (not useful in the process), that transforms from a group id to the uid of the group author.</span> <span class="line" id="LC33" lang="plaintext" xml:lang="plaintext"> -</span> <span class="line" id="LC34" lang="plaintext" xml:lang="plaintext"> plugin: group_creator</span> <span class="line" id="LC35" lang="plaintext" xml:lang="plaintext"> source: gid</span> <span class="line" id="LC36" lang="plaintext" xml:lang="plaintext"># -</span> <span class="line" id="LC37" lang="plaintext" xml:lang="plaintext"># plugin: callback</span> <span class="line" id="LC38" lang="plaintext" xml:lang="plaintext"># callable: var_dump</span> <span class="line" id="LC39" lang="plaintext" xml:lang="plaintext"> # Now will check that group is there via previous migration lookup (the first one we did):</span> <span class="line" id="LC40" lang="plaintext" xml:lang="plaintext"> gid:</span> <span class="line" id="LC41" lang="plaintext" xml:lang="plaintext"> -</span> <span class="line" id="LC42" lang="plaintext" xml:lang="plaintext"> plugin: migration_lookup</span> <span class="line" id="LC43" lang="plaintext" xml:lang="plaintext"> migration: upgrade_d7_node_og_blog</span> <span class="line" id="LC44" lang="plaintext" xml:lang="plaintext"> no_stub: true</span> <span class="line" id="LC45" lang="plaintext" xml:lang="plaintext"> source: gid</span> <span class="line" id="LC46" lang="plaintext" xml:lang="plaintext"> -</span> <span class="line" id="LC47" lang="plaintext" xml:lang="plaintext"> plugin: skip_on_empty</span> <span class="line" id="LC48" lang="plaintext" xml:lang="plaintext"> method: row</span> <span class="line" id="LC49" lang="plaintext" xml:lang="plaintext"> message: 'gid is missing'</span> <span class="line" id="LC50" lang="plaintext" xml:lang="plaintext"> entity_id:</span> <span class="line" id="LC51" lang="plaintext" xml:lang="plaintext"> # To illustrate how the previous `group_creator` could be injected here( not useful):</span> <span class="line" id="LC52" lang="plaintext" xml:lang="plaintext"> #-</span> <span class="line" id="LC53" lang="plaintext" xml:lang="plaintext"> # plugin: callback</span> <span class="line" id="LC54" lang="plaintext" xml:lang="plaintext"> # callable: var_dump</span> <span class="line" id="LC55" lang="plaintext" xml:lang="plaintext"> # source: "@group_creator"</span> <span class="line" id="LC56" lang="plaintext" xml:lang="plaintext"> # The plugin created to stop creating membership if current row user uid is the same as the group creator, to prevent duplicated members:</span> <span class="line" id="LC57" lang="plaintext" xml:lang="plaintext"> -</span> <span class="line" id="LC58" lang="plaintext" xml:lang="plaintext"> plugin: skip_creator</span> <span class="line" id="LC59" lang="plaintext" xml:lang="plaintext"> user_key: uid</span> <span class="line" id="LC60" lang="plaintext" xml:lang="plaintext"> gid_key: gid</span> <span class="line" id="LC61" lang="plaintext" xml:lang="plaintext"> method: row</span> <span class="line" id="LC62" lang="plaintext" xml:lang="plaintext"> # Finally check if user uid exists (probably if we are in this process point):</span> <span class="line" id="LC63" lang="plaintext" xml:lang="plaintext"> -</span> <span class="line" id="LC64" lang="plaintext" xml:lang="plaintext"> plugin: migration_lookup</span> <span class="line" id="LC65" lang="plaintext" xml:lang="plaintext"> migration: upgrade_d7_user</span> <span class="line" id="LC66" lang="plaintext" xml:lang="plaintext"> no_stub: true</span> <span class="line" id="LC67" lang="plaintext" xml:lang="plaintext"> source: uid</span> <span class="line" id="LC68" lang="plaintext" xml:lang="plaintext"> -</span> <span class="line" id="LC69" lang="plaintext" xml:lang="plaintext"> plugin: skip_on_empty</span> <span class="line" id="LC70" lang="plaintext" xml:lang="plaintext"> method: row</span> <span class="line" id="LC71" lang="plaintext" xml:lang="plaintext"> message: 'uid is missing'</span> <span class="line" id="LC72" lang="plaintext" xml:lang="plaintext"> # We hard code the role for all the migrated members:</span> <span class="line" id="LC73" lang="plaintext" xml:lang="plaintext"> group_roles:</span> <span class="line" id="LC74" lang="plaintext" xml:lang="plaintext"> plugin: default_value</span> <span class="line" id="LC75" lang="plaintext" xml:lang="plaintext"> default_value: blog-group_admin</span> <span class="line" id="LC76" lang="plaintext" xml:lang="plaintext"> type:</span> <span class="line" id="LC77" lang="plaintext" xml:lang="plaintext"> plugin: default_value</span> <span class="line" id="LC78" lang="plaintext" xml:lang="plaintext"> default_value: blog-group_membership</span> <span class="line" id="LC79" lang="plaintext" xml:lang="plaintext">destination:</span> <span class="line" id="LC80" lang="plaintext" xml:lang="plaintext"> # Memberships are considerated group_content also.</span> <span class="line" id="LC81" lang="plaintext" xml:lang="plaintext"> plugin: 'entity:group_content'</span> <span class="line" id="LC82" lang="plaintext" xml:lang="plaintext">migration_dependencies:</span> <span class="line" id="LC83" lang="plaintext" xml:lang="plaintext"> optional:</span> <span class="line" id="LC84" lang="plaintext" xml:lang="plaintext"> - upgrade_d7_node_og_blog</span> <span class="line" id="LC85" lang="plaintext" xml:lang="plaintext"> - d7_user</span></code></pre><p data-sourcepos="316:1-316:215" dir="auto">Note the use of <code>skip_creator</code> plugin to stop creating membership if current row user uid is the same as the group creator, to prevent duplicated members. The code of <code>src/Plugin/migrate/process/SkipCreator.php</code> is:</p> <pre class="code highlight js-syntax-highlight language-plaintext white" data-sourcepos="318:1-417:3" lang="plaintext" v-pre="true" xml:lang="plaintext"> <code><span class="line" id="LC1" lang="plaintext" xml:lang="plaintext">&lt;?php</span> <span class="line" id="LC3" lang="plaintext" xml:lang="plaintext">namespace Drupal\og_migrate_group\Plugin\migrate\process;</span> <span class="line" id="LC5" lang="plaintext" xml:lang="plaintext">use Drupal\migrate\MigrateExecutableInterface;</span> <span class="line" id="LC6" lang="plaintext" xml:lang="plaintext">use Drupal\migrate\ProcessPluginBase;</span> <span class="line" id="LC7" lang="plaintext" xml:lang="plaintext">use Drupal\migrate\MigrateException;</span> <span class="line" id="LC8" lang="plaintext" xml:lang="plaintext">use Drupal\migrate\MigrateSkipRowException;</span> <span class="line" id="LC9" lang="plaintext" xml:lang="plaintext">use Drupal\migrate\MigrateSkipProcessException;</span> <span class="line" id="LC10" lang="plaintext" xml:lang="plaintext">use Drupal\migrate\Row;</span> <span class="line" id="LC12" lang="plaintext" xml:lang="plaintext">/**</span> <span class="line" id="LC13" lang="plaintext" xml:lang="plaintext"> * Skip if user_key as uid is the creator of group with gid as in gid_key.</span> <span class="line" id="LC14" lang="plaintext" xml:lang="plaintext"> *</span> <span class="line" id="LC15" lang="plaintext" xml:lang="plaintext"> * @MigrateProcessPlugin(</span> <span class="line" id="LC16" lang="plaintext" xml:lang="plaintext"> * id = "skip_creator"</span> <span class="line" id="LC17" lang="plaintext" xml:lang="plaintext"> * )</span> <span class="line" id="LC18" lang="plaintext" xml:lang="plaintext"> *</span> <span class="line" id="LC19" lang="plaintext" xml:lang="plaintext"> * To skip if creator use the following:</span> <span class="line" id="LC20" lang="plaintext" xml:lang="plaintext"> *</span> <span class="line" id="LC21" lang="plaintext" xml:lang="plaintext"> * @code</span> <span class="line" id="LC22" lang="plaintext" xml:lang="plaintext"> * field_creator:</span> <span class="line" id="LC23" lang="plaintext" xml:lang="plaintext"> * plugin: skip_creator</span> <span class="line" id="LC24" lang="plaintext" xml:lang="plaintext"> * user_key: uid</span> <span class="line" id="LC25" lang="plaintext" xml:lang="plaintext"> * gid_key: gid</span> <span class="line" id="LC26" lang="plaintext" xml:lang="plaintext"> * method: row</span> <span class="line" id="LC27" lang="plaintext" xml:lang="plaintext"> * @endcode</span> <span class="line" id="LC28" lang="plaintext" xml:lang="plaintext"> *</span> <span class="line" id="LC29" lang="plaintext" xml:lang="plaintext"> */</span> <span class="line" id="LC30" lang="plaintext" xml:lang="plaintext">class SkipCreator extends ProcessPluginBase {</span> <span class="line" id="LC32" lang="plaintext" xml:lang="plaintext"> /**</span> <span class="line" id="LC33" lang="plaintext" xml:lang="plaintext"> * Stops processing the current property when user_key as uid is the creator of group with gid as in gid_key.</span> <span class="line" id="LC34" lang="plaintext" xml:lang="plaintext"> *</span> <span class="line" id="LC35" lang="plaintext" xml:lang="plaintext"> * @param mixed $value</span> <span class="line" id="LC36" lang="plaintext" xml:lang="plaintext"> * The input value.</span> <span class="line" id="LC37" lang="plaintext" xml:lang="plaintext"> * @param \Drupal\migrate\MigrateExecutableInterface $migrate_executable</span> <span class="line" id="LC38" lang="plaintext" xml:lang="plaintext"> * The migration in which this process is being executed.</span> <span class="line" id="LC39" lang="plaintext" xml:lang="plaintext"> * @param \Drupal\migrate\Row $row</span> <span class="line" id="LC40" lang="plaintext" xml:lang="plaintext"> * The row from the source to process.</span> <span class="line" id="LC41" lang="plaintext" xml:lang="plaintext"> * @param string $destination_property</span> <span class="line" id="LC42" lang="plaintext" xml:lang="plaintext"> * The destination property currently worked on. This is only used together</span> <span class="line" id="LC43" lang="plaintext" xml:lang="plaintext"> * with the $row above.</span> <span class="line" id="LC44" lang="plaintext" xml:lang="plaintext"> *</span> <span class="line" id="LC45" lang="plaintext" xml:lang="plaintext"> * @return mixed</span> <span class="line" id="LC46" lang="plaintext" xml:lang="plaintext"> * The input value, $value, if it is not empty.</span> <span class="line" id="LC47" lang="plaintext" xml:lang="plaintext"> *</span> <span class="line" id="LC48" lang="plaintext" xml:lang="plaintext"> * @throws \Drupal\migrate\MigrateSkipProcessException</span> <span class="line" id="LC49" lang="plaintext" xml:lang="plaintext"> * Thrown if the source property is not set and rest of the process should</span> <span class="line" id="LC50" lang="plaintext" xml:lang="plaintext"> * be skipped.</span> <span class="line" id="LC51" lang="plaintext" xml:lang="plaintext"> */</span> <span class="line" id="LC52" lang="plaintext" xml:lang="plaintext"> public function process($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {</span> <span class="line" id="LC53" lang="plaintext" xml:lang="plaintext"> $group = \Drupal::entityTypeManager()</span> <span class="line" id="LC54" lang="plaintext" xml:lang="plaintext"> -&gt;getStorage('group')</span> <span class="line" id="LC55" lang="plaintext" xml:lang="plaintext"> -&gt;load($row-&gt;getSource()[$this-&gt;configuration["gid_key"]]);</span> <span class="line" id="LC56" lang="plaintext" xml:lang="plaintext"> if (!$group) {</span> <span class="line" id="LC57" lang="plaintext" xml:lang="plaintext"> throw new MigrateException('gid not found.');</span> <span class="line" id="LC58" lang="plaintext" xml:lang="plaintext"> }</span> <span class="line" id="LC59" lang="plaintext" xml:lang="plaintext"> if ($group-&gt;getOwner()-&gt;id() == $row-&gt;getSource()[$this-&gt;configuration["user_key"]]) {</span> <span class="line" id="LC60" lang="plaintext" xml:lang="plaintext"> throw new MigrateSkipRowException("Creator is the same uid, so it exists");</span> <span class="line" id="LC61" lang="plaintext" xml:lang="plaintext"> }</span> <span class="line" id="LC62" lang="plaintext" xml:lang="plaintext"> return $value;</span> <span class="line" id="LC63" lang="plaintext" xml:lang="plaintext"> }</span> <span class="line" id="LC65" lang="plaintext" xml:lang="plaintext"> /**</span> <span class="line" id="LC66" lang="plaintext" xml:lang="plaintext"> * Skips the current row when user_key as uid is the creator of group with gid as in gid_key.</span> <span class="line" id="LC67" lang="plaintext" xml:lang="plaintext"> *</span> <span class="line" id="LC68" lang="plaintext" xml:lang="plaintext"> * @param mixed $value</span> <span class="line" id="LC69" lang="plaintext" xml:lang="plaintext"> * The input value.</span> <span class="line" id="LC70" lang="plaintext" xml:lang="plaintext"> * @param \Drupal\migrate\MigrateExecutableInterface $migrate_executable</span> <span class="line" id="LC71" lang="plaintext" xml:lang="plaintext"> * The migration in which this process is being executed.</span> <span class="line" id="LC72" lang="plaintext" xml:lang="plaintext"> * @param \Drupal\migrate\Row $row</span> <span class="line" id="LC73" lang="plaintext" xml:lang="plaintext"> * The row from the source to process.</span> <span class="line" id="LC74" lang="plaintext" xml:lang="plaintext"> * @param string $destination_property</span> <span class="line" id="LC75" lang="plaintext" xml:lang="plaintext"> * The destination property currently worked on. This is only used together</span> <span class="line" id="LC76" lang="plaintext" xml:lang="plaintext"> * with the $row above.</span> <span class="line" id="LC77" lang="plaintext" xml:lang="plaintext"> *</span> <span class="line" id="LC78" lang="plaintext" xml:lang="plaintext"> * @return mixed</span> <span class="line" id="LC79" lang="plaintext" xml:lang="plaintext"> * The input value, $value, if it is not empty.</span> <span class="line" id="LC80" lang="plaintext" xml:lang="plaintext"> *</span> <span class="line" id="LC81" lang="plaintext" xml:lang="plaintext"> * @throws \Drupal\migrate\MigrateSkipRowException</span> <span class="line" id="LC82" lang="plaintext" xml:lang="plaintext"> * Thrown if the source property is not set and the row should be skipped,</span> <span class="line" id="LC83" lang="plaintext" xml:lang="plaintext"> * records with STATUS_IGNORED status in the map.</span> <span class="line" id="LC84" lang="plaintext" xml:lang="plaintext"> */</span> <span class="line" id="LC85" lang="plaintext" xml:lang="plaintext"> public function row($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {</span> <span class="line" id="LC86" lang="plaintext" xml:lang="plaintext"> $group = \Drupal::entityTypeManager()</span> <span class="line" id="LC87" lang="plaintext" xml:lang="plaintext"> -&gt;getStorage('group')</span> <span class="line" id="LC88" lang="plaintext" xml:lang="plaintext"> -&gt;load($row-&gt;getSource()[$this-&gt;configuration["gid_key"]]);</span> <span class="line" id="LC89" lang="plaintext" xml:lang="plaintext"> if (!$group) {</span> <span class="line" id="LC90" lang="plaintext" xml:lang="plaintext"> throw new MigrateException('gid not found.');</span> <span class="line" id="LC91" lang="plaintext" xml:lang="plaintext"> }</span> <span class="line" id="LC92" lang="plaintext" xml:lang="plaintext"> if ($group-&gt;getOwner()-&gt;id() == $row-&gt;getSource()[$this-&gt;configuration["user_key"]]) {</span> <span class="line" id="LC93" lang="plaintext" xml:lang="plaintext"> throw new MigrateSkipRowException("Creator is the same uid, so it exists");</span> <span class="line" id="LC94" lang="plaintext" xml:lang="plaintext"> }</span> <span class="line" id="LC95" lang="plaintext" xml:lang="plaintext"> return $value;</span> <span class="line" id="LC96" lang="plaintext" xml:lang="plaintext"> }</span> <span class="line" id="LC98" lang="plaintext" xml:lang="plaintext">}</span></code></pre><p data-sourcepos="420:1-420:85" dir="auto">So now we have groups and their members. Now we can start thinking about the content.</p> <h1 data-sourcepos="422:1-422:9" dir="auto">Content</h1> <p data-sourcepos="424:1-424:315" dir="auto">Here instead of doing everything at once (create nodes and add as content to groups) as in <a href="https://thinktandem.io/blog/2018/03/30/migrating-drupal-7-organic-groups-to-drupal-8-group/" rel="nofollow noreferrer noopener" target="_blank">https://thinktandem.io/blog/2018/03/30/migrating-drupal-7-organic-groups-to-drupal-8-group/</a> , it will be based in a previously migrated node set, as it was did in previous step where from users it created group memberships.</p> <p data-sourcepos="426:1-427:223" dir="auto">Let's create the group content first setting that content as available in <code>group type settings/content</code>, in this example <code>blog</code> group available content will be <code>proposta</code>, <code>blog_post</code>(as blog entry), <code>podcast_episode</code>(as audio entry).</p> <p data-sourcepos="429:1-429:211" dir="auto">The next step starting from commit <a class="gfm gfm-commit has-tooltip" data-commit="9b9c731e6192ef596b49228686b3114857cc4fb8" data-container="body" data-link="false" data-link-reference="true" data-original="https://gitlab.com/communia/og_migrate_group/-/commit/9b9c731e6192ef596b49228686b3114857cc4fb8" data-placement="top" data-project="30138286" data-reference-type="commit" href="https://gitlab.com/communia/og_migrate_group/-/commit/9b9c731e6192ef596b49228686b3114857cc4fb8" title="Add Plugins to process directly form sql instead of csv">9b9c731e</a> it's easier than csv import, so it can be used with the plugin <code>d7_og_content</code> .</p> <h2 data-sourcepos="431:1-431:23" dir="auto">Via direct sql query</h2> <p data-sourcepos="434:1-434:44" dir="auto">for group content imports (relation maker):</p> <p data-sourcepos="436:1-437:31" dir="auto"><code>drush mim rename_d7_node_complete_blog,rename_d7_node_complete_podcast</code> <code>drush mim d7_og_blog_content</code></p> <p data-sourcepos="439:1-439:94" dir="auto">It will do the same as it's done in next csv import but using sql to previous import as source</p> <h2 data-sourcepos="441:1-441:22" dir="auto">Via view csv import</h2> <p data-sourcepos="426:1-427:223" dir="auto">Despite we could create a new plugin which transforms from <code>nid</code> to <code>title</code> or <code>uid</code>, may be useful  to do it in source view group_content csv, so including these properties. Relevant view used to obtain source data will be:</p> <p data-sourcepos="429:1-429:10" dir="auto">Relations:</p> <ul data-sourcepos="431:1-433:0" dir="auto"><li data-sourcepos="431:1-431:83">OG membership: Content from OG membership: 'og_membership_related_node'; REQUIRED</li> <li data-sourcepos="432:1-433:0">Entity Reference : Referenced Entity: 'og_group_ref_target_id';</li> </ul><p data-sourcepos="434:1-434:7" dir="auto">Fields:</p> <ul data-sourcepos="436:1-443:0" dir="auto"><li data-sourcepos="436:1-436:31">id, label: 'og_membership_id'</li> <li data-sourcepos="437:1-437:71">(relationship: og_membership_related_node_1)-&gt;nid , label:content_nid</li> <li data-sourcepos="438:1-438:75">(relationship: og_membership_related_node_1)-&gt;type, label: content_bundle</li> <li data-sourcepos="439:1-439:71">(relationship: og_membership_related_node_1)-&gt;uid, label: content_uid</li> <li data-sourcepos="440:1-440:75">(relationship: og_membership_related_node_1)-&gt;title, label: content_title</li> <li data-sourcepos="441:1-441:19">gid, label: 'gid'</li> <li data-sourcepos="442:1-443:0">(relationship:og_group_ref_target_id)-&gt;type, label: group_type</li> </ul><p data-sourcepos="444:1-444:92" dir="auto">(With the filters and sorts adapted to your case, to prevent listing non-migratable content)</p> <p data-sourcepos="446:1-446:16" dir="auto">This will output</p> <pre class="code highlight js-syntax-highlight language-plaintext white" data-sourcepos="448:1-454:3" lang="plaintext" v-pre="true" xml:lang="plaintext"> <code><span class="line" id="LC1" lang="plaintext" xml:lang="plaintext">"og_membership_id","content_nid","content_bundle","content_uid","content_title","gid","group_type"</span> <span class="line" id="LC2" lang="plaintext" xml:lang="plaintext">"13397","59546","blog","438","Good news","22477","bloc"</span> <span class="line" id="LC3" lang="plaintext" xml:lang="plaintext">"13426","77","podcast","6","El sistema universitari","22447","bloc"</span> <span class="line" id="LC4" lang="plaintext" xml:lang="plaintext">"13427","86","proposta","16","Estrobaca","22455","bloc"</span> <span class="line" id="LC5" lang="plaintext" xml:lang="plaintext">"13428","87","blog","8","ssl","22449","bloc"</span></code></pre><p data-sourcepos="457:1-457:40" dir="auto">Here the yml that will process this csv:</p> <pre class="code highlight js-syntax-highlight language-plaintext white" data-sourcepos="459:1-535:3" lang="plaintext" v-pre="true" xml:lang="plaintext"> <code><span class="line" id="LC1" lang="plaintext" xml:lang="plaintext">langcode: en</span> <span class="line" id="LC2" lang="plaintext" xml:lang="plaintext">status: true</span> <span class="line" id="LC3" lang="plaintext" xml:lang="plaintext">dependencies: { }</span> <span class="line" id="LC4" lang="plaintext" xml:lang="plaintext">id: upgrade_d7_node_og_blog_content</span> <span class="line" id="LC5" lang="plaintext" xml:lang="plaintext">class: null</span> <span class="line" id="LC6" lang="plaintext" xml:lang="plaintext">field_plugin_method: null</span> <span class="line" id="LC7" lang="plaintext" xml:lang="plaintext">cck_plugin_method: null</span> <span class="line" id="LC8" lang="plaintext" xml:lang="plaintext">migration_tags:</span> <span class="line" id="LC9" lang="plaintext" xml:lang="plaintext"> - CSV</span> <span class="line" id="LC10" lang="plaintext" xml:lang="plaintext">migration_group: insert_group</span> <span class="line" id="LC11" lang="plaintext" xml:lang="plaintext">label: 'blog Group Content Migration from CSV'</span> <span class="line" id="LC12" lang="plaintext" xml:lang="plaintext">source:</span> <span class="line" id="LC13" lang="plaintext" xml:lang="plaintext"> plugin: csv</span> <span class="line" id="LC14" lang="plaintext" xml:lang="plaintext"> # Must be obtained from source with some exporter (e.g. views data export) and placed in this path</span> <span class="line" id="LC15" lang="plaintext" xml:lang="plaintext"> path: 'public://imports/group-content-export.csv'</span> <span class="line" id="LC16" lang="plaintext" xml:lang="plaintext"> header_row_count: 1</span> <span class="line" id="LC17" lang="plaintext" xml:lang="plaintext"> ids:</span> <span class="line" id="LC18" lang="plaintext" xml:lang="plaintext"> -</span> <span class="line" id="LC19" lang="plaintext" xml:lang="plaintext"> og_membership_id</span> <span class="line" id="LC20" lang="plaintext" xml:lang="plaintext"> column_names:</span> <span class="line" id="LC21" lang="plaintext" xml:lang="plaintext"> -</span> <span class="line" id="LC22" lang="plaintext" xml:lang="plaintext"> og_membership_id: Identifier</span> <span class="line" id="LC23" lang="plaintext" xml:lang="plaintext"> -</span> <span class="line" id="LC24" lang="plaintext" xml:lang="plaintext"> content_nid: NodeID</span> <span class="line" id="LC25" lang="plaintext" xml:lang="plaintext"> -</span> <span class="line" id="LC26" lang="plaintext" xml:lang="plaintext"> content_bundle: bundle</span> <span class="line" id="LC27" lang="plaintext" xml:lang="plaintext"> -</span> <span class="line" id="LC28" lang="plaintext" xml:lang="plaintext"> content_uid: uid</span> <span class="line" id="LC29" lang="plaintext" xml:lang="plaintext"> -</span> <span class="line" id="LC30" lang="plaintext" xml:lang="plaintext"> content_title: title</span> <span class="line" id="LC31" lang="plaintext" xml:lang="plaintext"> -</span> <span class="line" id="LC32" lang="plaintext" xml:lang="plaintext"> gid: group</span> <span class="line" id="LC33" lang="plaintext" xml:lang="plaintext"> -</span> <span class="line" id="LC34" lang="plaintext" xml:lang="plaintext"> group_type: GroupType</span> <span class="line" id="LC35" lang="plaintext" xml:lang="plaintext"> delimiter: ','</span> <span class="line" id="LC36" lang="plaintext" xml:lang="plaintext"> enclosure: '"'</span> <span class="line" id="LC37" lang="plaintext" xml:lang="plaintext">process:</span> <span class="line" id="LC38" lang="plaintext" xml:lang="plaintext"> label:</span> <span class="line" id="LC39" lang="plaintext" xml:lang="plaintext"> # TO show the current item to debug</span> <span class="line" id="LC40" lang="plaintext" xml:lang="plaintext"> #-</span> <span class="line" id="LC41" lang="plaintext" xml:lang="plaintext"> # plugin: callback</span> <span class="line" id="LC42" lang="plaintext" xml:lang="plaintext"> # callable: var_dump</span> <span class="line" id="LC43" lang="plaintext" xml:lang="plaintext"> # source: content_title</span> <span class="line" id="LC44" lang="plaintext" xml:lang="plaintext"> -</span> <span class="line" id="LC45" lang="plaintext" xml:lang="plaintext"> plugin: get</span> <span class="line" id="LC46" lang="plaintext" xml:lang="plaintext"> source: content_title</span> <span class="line" id="LC47" lang="plaintext" xml:lang="plaintext"> type:</span> <span class="line" id="LC48" lang="plaintext" xml:lang="plaintext"> plugin: static_map</span> <span class="line" id="LC49" lang="plaintext" xml:lang="plaintext"> source: content_bundle</span> <span class="line" id="LC50" lang="plaintext" xml:lang="plaintext"> bypass: false</span> <span class="line" id="LC51" lang="plaintext" xml:lang="plaintext"> # Customize this to match your values and group content plugins</span> <span class="line" id="LC52" lang="plaintext" xml:lang="plaintext"> map:</span> <span class="line" id="LC53" lang="plaintext" xml:lang="plaintext"> proposta: blog-group_node-proposta</span> <span class="line" id="LC54" lang="plaintext" xml:lang="plaintext"> blog: blog-group_node-blog_post</span> <span class="line" id="LC55" lang="plaintext" xml:lang="plaintext"> podcast: blog-group_node-podcast_episode</span> <span class="line" id="LC56" lang="plaintext" xml:lang="plaintext"> default_value: blog-group_node-blog_post</span> <span class="line" id="LC57" lang="plaintext" xml:lang="plaintext"> gid: gid</span> <span class="line" id="LC58" lang="plaintext" xml:lang="plaintext"> entity_id:</span> <span class="line" id="LC59" lang="plaintext" xml:lang="plaintext"> # To skip if element is not found (may be merged during translation</span> <span class="line" id="LC60" lang="plaintext" xml:lang="plaintext"> # nodes migration fixes)</span> <span class="line" id="LC61" lang="plaintext" xml:lang="plaintext"> -</span> <span class="line" id="LC62" lang="plaintext" xml:lang="plaintext"> plugin: get</span> <span class="line" id="LC63" lang="plaintext" xml:lang="plaintext"> source: content_nid</span> <span class="line" id="LC64" lang="plaintext" xml:lang="plaintext"> -</span> <span class="line" id="LC65" lang="plaintext" xml:lang="plaintext"> plugin: entity_lookup</span> <span class="line" id="LC66" lang="plaintext" xml:lang="plaintext"> entity_type: node</span> <span class="line" id="LC67" lang="plaintext" xml:lang="plaintext"> value_key: nid</span> <span class="line" id="LC68" lang="plaintext" xml:lang="plaintext"> -</span> <span class="line" id="LC69" lang="plaintext" xml:lang="plaintext"> plugin: skip_on_empty</span> <span class="line" id="LC70" lang="plaintext" xml:lang="plaintext"> method: row</span> <span class="line" id="LC71" lang="plaintext" xml:lang="plaintext"> uid: content_uid</span> <span class="line" id="LC72" lang="plaintext" xml:lang="plaintext">destination:</span> <span class="line" id="LC73" lang="plaintext" xml:lang="plaintext"> plugin: 'entity:group_content'</span> <span class="line" id="LC74" lang="plaintext" xml:lang="plaintext">migration_dependencies: null</span> </code></pre><p data-sourcepos="537:1-537:76" dir="auto">And that's all, after that Groups, Memberships and Content will be migrated.</p> <h1 data-sourcepos="541:1-541:89" dir="auto">Bonus track - rename machine name of a bundle when migration has been already executed.</h1> <p data-sourcepos="543:1-545:249" dir="auto">First of all we create the bundle giving the desired name, and with the module field_tools we can make the clone of view_modes first and after that the fields clones. Once it is identical, we must rollback the migration of the content a given bundle: <code>drush migrate:rollback d7_node_complete:podcast</code> and then copy from <code>web/sites/default/files/config__secret_directory_that _must_be_uniquely_and_obscured_from_public_found_at_settings/sync/migrate_plus.migration.upgrade_d7_node_complete_podcast.yml</code> to a dedicated custom module in its <code>migrations</code> directory, then modify file setting the destination to desired bundle machine_name, also must be changed the id and filename according to what you are doing(in this case we set to <code>rename_d7_node_complete_podcast</code>), then run <code>drush migrate:rollback d7_node_complete:podcast --verbose &amp;&amp; drush mim rename_d7_node_complete_podcast --verbose</code> to import again the content that we want. Any configuration over it must be executed once again, for example url_redirects migrations.</p> <p data-sourcepos="543:1-545:249" dir="auto"> </p> <p data-sourcepos="543:1-545:249" dir="auto"> </p> <h1 data-sourcepos="548:1-548:61" dir="auto">Bonus track 2 - node feeds in D7 to feeds_feed entity in D8</h1> <p data-sourcepos="550:1-550:195" dir="auto">First create the feed types and add the fields as it was defined in source nodes that were acting as importers, then edit add the migration configuration, two working samples are in <code>migrations</code>:</p> <ul data-sourcepos="552:1-554:0" dir="auto"><li data-sourcepos="552:1-552:46">d7_node_complete_og_to_canal_blog_extern.yml</li> <li data-sourcepos="553:1-554:0">d7_node_complete_og_to_canal_proposta_externa.yml</li> </ul><p data-sourcepos="555:1-557:164" dir="auto">Both are based on the stock migration configurations that migrateplus has created and exported in config sync directory: <code>upgrade_d7_node_complete_[bundle_of_source]</code> . You can edit to create the feed entity instead of a node. Be careful to rollback previous imported bundle nodes migrations that match (in example it was <code>feed</code> and <code>proposta_feed</code> bundles). Flush plugins cache, and after that <code>drush mim d7_node_complete_node_to_[bundle_of_source]</code> will do the magic. This is the first step, Now you have two options because  feed source url is not easily picked.</p> <p data-sourcepos="555:1-557:164" dir="auto">One way and recommended as it can be automatizated, is using a new source plugin to fix the feed urls, look at <a href="https://gitlab.com/communia/og_migrate_group/-/commit/d50f73a86a8418d5702f89eeb812263f6b8fb165">commit  </a>this is a new plugin that will lookup the feed in source d7 feed table and "magically" will provide the url using some config as this:</p> <p data-sourcepos="555:1-557:164" dir="auto"> </p> <pre> <code class="language-yaml">langcode: en status: true dependencies: { } id: d7_feed_sources class: Drupal\migrate\Plugin\Migration field_plugin_method: null cck_plugin_method: null migration_tags: - 'Drupal 7 feeds' - 'resync' migration_group: resync label: 'Drupal 7 Feeds sources' source: plugin: d7_feed process: fid: - plugin: entity_lookup source: title value_key: title entity_type: feeds_feed # - # plugin: callback # callable: var_dump source: source destination: plugin: 'entity:feeds_feed' migration_dependencies: optional: - d7_node_complete_og_to_canal_blog_extern - d7_node_complete_og_to_canal_proposta_externa </code></pre><p data-sourcepos="555:1-557:164" dir="auto"> </p> <p data-sourcepos="555:1-557:164" dir="auto">The other way is using csv in a manual way,  first instead of struggling too much I end up creating a view in source that outputs to csv these fields:</p> <ul data-sourcepos="559:1-563:0" dir="auto"><li data-sourcepos="559:1-559:24">Content: title (title)</li> <li data-sourcepos="560:1-560:31">Feeds source: Source (source)</li> <li data-sourcepos="561:1-561:24">Content: type (bundle)</li> <li data-sourcepos="562:1-563:0">Content: Nid (nid)</li> </ul><p data-sourcepos="564:1-565:69" dir="auto">Which csv I copied to <code>public://imports/export-feeds.csv</code> And created the auxiliary migration configuration to import from csv:</p> <pre class="code highlight js-syntax-highlight language-plaintext white" data-sourcepos="567:1-614:3" lang="plaintext" v-pre="true" xml:lang="plaintext"> <code><span class="line" id="LC1" lang="plaintext" xml:lang="plaintext">langcode: en</span> <span class="line" id="LC2" lang="plaintext" xml:lang="plaintext">status: true</span> <span class="line" id="LC3" lang="plaintext" xml:lang="plaintext">dependencies: { }</span> <span class="line" id="LC4" lang="plaintext" xml:lang="plaintext">id: fix_feeds_sources</span> <span class="line" id="LC5" lang="plaintext" xml:lang="plaintext">class: Drupal\migrate\Plugin\Migration</span> <span class="line" id="LC6" lang="plaintext" xml:lang="plaintext">field_plugin_method: null</span> <span class="line" id="LC7" lang="plaintext" xml:lang="plaintext">cck_plugin_method: null</span> <span class="line" id="LC8" lang="plaintext" xml:lang="plaintext">migration_tags:</span> <span class="line" id="LC9" lang="plaintext" xml:lang="plaintext"> - 'Drupal 7 feeds'</span> <span class="line" id="LC10" lang="plaintext" xml:lang="plaintext">migration_group: fix_feeds</span> <span class="line" id="LC11" lang="plaintext" xml:lang="plaintext">label: 'Fix Feeds sources'</span> <span class="line" id="LC12" lang="plaintext" xml:lang="plaintext">source:</span> <span class="line" id="LC13" lang="plaintext" xml:lang="plaintext"> plugin: csv</span> <span class="line" id="LC14" lang="plaintext" xml:lang="plaintext"> path: 'public://imports/export-feeds.csv'</span> <span class="line" id="LC15" lang="plaintext" xml:lang="plaintext"> header_row_count: 1</span> <span class="line" id="LC16" lang="plaintext" xml:lang="plaintext"> ids:</span> <span class="line" id="LC17" lang="plaintext" xml:lang="plaintext"> -</span> <span class="line" id="LC18" lang="plaintext" xml:lang="plaintext"> nid</span> <span class="line" id="LC19" lang="plaintext" xml:lang="plaintext"> column_names:</span> <span class="line" id="LC20" lang="plaintext" xml:lang="plaintext"> -</span> <span class="line" id="LC21" lang="plaintext" xml:lang="plaintext"> title: title</span> <span class="line" id="LC22" lang="plaintext" xml:lang="plaintext"> -</span> <span class="line" id="LC23" lang="plaintext" xml:lang="plaintext"> source: Source</span> <span class="line" id="LC24" lang="plaintext" xml:lang="plaintext"> -</span> <span class="line" id="LC25" lang="plaintext" xml:lang="plaintext"> bundle: bundle</span> <span class="line" id="LC26" lang="plaintext" xml:lang="plaintext"> -</span> <span class="line" id="LC27" lang="plaintext" xml:lang="plaintext"> nid: Identifier</span> <span class="line" id="LC28" lang="plaintext" xml:lang="plaintext"> delimiter: ','</span> <span class="line" id="LC29" lang="plaintext" xml:lang="plaintext"> enclosure: '"'</span> <span class="line" id="LC30" lang="plaintext" xml:lang="plaintext">process:</span> <span class="line" id="LC31" lang="plaintext" xml:lang="plaintext"> fid:</span> <span class="line" id="LC32" lang="plaintext" xml:lang="plaintext"> -</span> <span class="line" id="LC33" lang="plaintext" xml:lang="plaintext"> plugin: entity_lookup</span> <span class="line" id="LC34" lang="plaintext" xml:lang="plaintext"> source: title</span> <span class="line" id="LC35" lang="plaintext" xml:lang="plaintext"> value_key: title</span> <span class="line" id="LC36" lang="plaintext" xml:lang="plaintext"> entity_type: feeds_feed</span> <span class="line" id="LC37" lang="plaintext" xml:lang="plaintext"># -</span> <span class="line" id="LC38" lang="plaintext" xml:lang="plaintext"># plugin: callback</span> <span class="line" id="LC39" lang="plaintext" xml:lang="plaintext"># callable: var_dump</span> <span class="line" id="LC40" lang="plaintext" xml:lang="plaintext"> source: source</span> <span class="line" id="LC41" lang="plaintext" xml:lang="plaintext">destination:</span> <span class="line" id="LC42" lang="plaintext" xml:lang="plaintext"> plugin: 'entity:feeds_feed'</span> <span class="line" id="LC43" lang="plaintext" xml:lang="plaintext">migration_dependencies:</span> <span class="line" id="LC44" lang="plaintext" xml:lang="plaintext"> optional:</span> <span class="line" id="LC45" lang="plaintext" xml:lang="plaintext"> - d7_node_complete_og_to_canal_blog_extern</span> <span class="line" id="LC46" lang="plaintext" xml:lang="plaintext"> - d7_node_complete_og_to_canal_proposta_externa</span></code></pre><p data-sourcepos="616:1-617:98" dir="auto">then <code>drush mim fix_feeds_sources</code> again. Then create the feed mappings as it was done in source(or modify as you want). And start importing</p> </div> <!-- END OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--field-tags--blog--rss.html.twig * field--node--field-tags--blog.html.twig * field--node--field-tags.html.twig * field--node--blog.html.twig * field--field-tags.html.twig * field--entity-reference.html.twig x field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <div class="field field--node-field-tags field--name-field-tags field--type-entity-reference field--label-inline clearfix"> <div class="field-label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/ca/etiquetes/drupal" hreflang="ca">Drupal</a></div> <div class="field__item"><a href="/ca/etiquetes/migrations" hreflang="ca">migrations</a></div> <div class="field__item"><a href="/ca/etiquetes/develop" hreflang="ca">develop</a></div> </div> </div> <!-- END OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'links__node' --> <!-- FILE NAME SUGGESTIONS: * links--node.html.twig * links--node.html.twig x links.html.twig --> <!-- BEGIN OUTPUT from 'themes/custom/planet_foundated/templates/links.html.twig' --> <!-- END OUTPUT from 'themes/custom/planet_foundated/templates/links.html.twig' --> Sun, 03 Oct 2021 20:43:19 +0000 kinta 6495 at https://planet.communia.org https://planet.communia.org/ca/content/recipe-migrate-drupal-7-organic-groups-drupal-9-group#comments Launching Tiny news (ttrss aggregator client) https://planet.communia.org/ca/content/launching-tiny-news-ttrss-aggregator-client <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--title--blog--rss.html.twig * field--node--title--blog.html.twig x field--node--title.html.twig * field--node--blog.html.twig * field--title.html.twig * field--string.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/field--node--title.html.twig' --> <span>Launching Tiny news (ttrss aggregator client)</span> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/field--node--title.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--field-image--blog--rss.html.twig * field--node--field-image--blog.html.twig * field--node--field-image.html.twig * field--node--blog.html.twig * field--field-image.html.twig * field--image.html.twig x field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <div class="image field field--node-field-image field--name-field-image field--type-image field--label-hidden field__items"> <div class="field__item"> <!-- THEME DEBUG --> <!-- THEME HOOK: 'responsive_image_formatter' --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/responsive-image-formatter.html.twig' --> <a href="/sites/default/files/Screenshot_20210918_014119.png"> <!-- THEME DEBUG --> <!-- THEME HOOK: 'responsive_image' --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/responsive-image.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'image' --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/image.html.twig' --> <img loading="eager" srcset="/sites/default/files/styles/max_325x325/public/Screenshot_20210918_014119.png?itok=NWYIEDCL 325w, /sites/default/files/styles/max_650x650/public/Screenshot_20210918_014119.png?itok=cWEYsrZN 650w, /sites/default/files/styles/max_1300x1300/public/Screenshot_20210918_014119.png?itok=z0y43T2c 1300w" sizes="(min-width: 1290px) 325px, (min-width: 851px) 25vw, (min-width: 560px) 50vw, 100vw" width="325" height="202" src="/sites/default/files/styles/max_325x325/public/Screenshot_20210918_014119.png?itok=NWYIEDCL" alt="" title="Screenshot of tiny news" /> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/image.html.twig' --> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/responsive-image.html.twig' --> </a> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/responsive-image-formatter.html.twig' --> </div> </div> <!-- END OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--uid--blog--rss.html.twig * field--node--uid--blog.html.twig x field--node--uid.html.twig * field--node--blog.html.twig * field--uid.html.twig * field--entity-reference.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/field--node--uid.html.twig' --> <span> <!-- THEME DEBUG --> <!-- THEME HOOK: 'username' --> <!-- BEGIN OUTPUT from 'themes/custom/planet_foundated/templates/username.html.twig' --> <a href="/user/1" class="visually-hidden p-author h-card" rel="author" title="kinta">kinta <img src="" alt="kinta" /> </a> <a title="View user profile." href="/ca/users/kinta">kinta</a> <!-- END OUTPUT from 'themes/custom/planet_foundated/templates/username.html.twig' --> </span> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/field--node--uid.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--created--blog--rss.html.twig * field--node--created--blog.html.twig x field--node--created.html.twig * field--node--blog.html.twig * field--created.html.twig * field--created.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/field--node--created.html.twig' --> <span> <!-- THEME DEBUG --> <!-- THEME HOOK: 'time' --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/time.html.twig' --> <time datetime="2021-09-17T19:44:18+02:00" title="Friday, September 17, 2021 - 19:44">Fri, 09/17/2021 - 19:44</time> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/time.html.twig' --> </span> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/field--node--created.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--body--blog--rss.html.twig * field--node--body--blog.html.twig * field--node--body.html.twig * field--node--blog.html.twig * field--body.html.twig * field--text-with-summary.html.twig x field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <div class="body field field--node-body field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Despite industry tends to bury rss or atom, feeds as blogs are not dead. Something similar can be found with podcasts; when industry and its inertia force centralization and provide dedicated and proprietary protocols. But is difficult to kill the free federation of media content. So now they step back and industry is providing a lot of (cloud based) podcast clients, to make catalogues grow and start another round of attacks.</p> <p>But blogs everywhere providing their own feeds enriches the minds, opinions and conversations. So you can create your own newspaper everyday. My motivations are well explained in <a href="https://planet.communia.org/en/content/launching-tiny-tiny-rss-and-pocket-client-plasma-5">original launching post</a>.</p> <blockquote><p><span><span><span><span>Managing the sources you are informed of will determine the "press" you are going to read in your daily life, which sections and topics, which authors, columnists ... will ultimately shape you as editor of yourself. To maintain autonomy, and not depend on third parties and the economic viability of news providers, often linked to advertising, there is some software that can help us.</span></span></span></span></p> </blockquote> <p>In 2017 I wrote this teaser about the motivation to create a "news" app: It has its origins back in 2014 using a <a href="https://userbase.kde.org/Plasma/Plasmoids">plasma plasmoid</a>, a rudimentary but complex (mockup) of ttrss and pocket client using the power of qml and plasma... everything was so recent and since then everything changed a lot. Nowadays <a href="https://develop.kde.org/frameworks/kirigami//">kirigami</a> and so <a href="https://www.qt.io/">qt</a>'s <a href="https://doc.qt.io/qt-5/qtqml-index.html">QML</a> has changed how convergent apps could be in free desktops: look at <a href="https://pointieststick.com/2021/03/12/this-week-in-kde-elisa-grows-up/">elisa</a>, <a href="https://apps.kde.org/kasts/">kasts</a> or <a href="https://www.plasma-mobile.org/">plasma mobile</a></p> <p>Now, with the acquisition of a new laptop that have a strong accent in its convergence ( thinkpad x13 yoga g2), I am revisiting the idea of using the laptop to read in a comfortable way the headlines, but I still cannot find a synchronized way of reading news. Despite there are a lot of applications ready to be touch friendly in gnu/linux, and more and more coming with the contribution of <a href="https://kde.org/">kde developers</a> among others. There is no <strong>cloud</strong> feed aggregator client there, you can use <a href="https://apps.kde.org/alligator/">alligator</a> or <a href="https://apps.kde.org/akregator/">akregator</a> but they don't satisfy my needs as they lack the sync among devices. </p> <p>Talking about the backend,  I am still feeling confident with <a href="https://tt-rss.org/">Tiny Tiny RSS (TTRSS)</a>, despite there is the shiny nextcloud <a href="https://apps.nextcloud.com/apps/news">news</a>, and maybe will be adopted in tiny news sooner or later. TTRSS is solid and is running for years providing thousands of headlines in our servers here at <a href="https://communia.org/">communia.org</a>, so why change it by now.</p> <p>Mozilla <a href="https://getpocket.com/">Pocket</a> is also a feature that's there, basic features, but functional enough to read the articles.</p> <p>I must say that Tiny news still is not tested enough, a lot of improvements may be done (they are welcome in <a href="https://gitlab.com/communia/tinynews">git repo</a>), and some parts, as cpp and cmake could be improved massively with some help or mentorship :) .</p> <p>So <a href="https://www.pling.com/p/1178799/">ttrssPocket plasmoid</a> is death, long live <a href="https://gitlab.com/communia/tinynews">Tiny News</a>!</p> <p> </p> <p>Code can be obtained in <a href="https://gitlab.com/communia/tinynews ">https://gitlab.com/communia/tinynews </a></p> </div> <!-- END OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--field-tags--blog--rss.html.twig * field--node--field-tags--blog.html.twig * field--node--field-tags.html.twig * field--node--blog.html.twig * field--field-tags.html.twig * field--entity-reference.html.twig x field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <div class="field field--node-field-tags field--name-field-tags field--type-entity-reference field--label-inline clearfix"> <div class="field-label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/en/etiquetes/blogosfera" hreflang="en">Blogosfera</a></div> <div class="field__item"><a href="/ca/etiquetes/rss" hreflang="ca">rss</a></div> <div class="field__item"><a href="/en/etiquetes/floss" hreflang="en">FLOSS</a></div> <div class="field__item"><a href="/ca/etiquetes/kde" hreflang="ca">KDE</a></div> <div class="field__item"><a href="/ca/etiquetes/freedesktop" hreflang="ca">#FreeDesktop</a></div> </div> </div> <!-- END OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'links__node' --> <!-- FILE NAME SUGGESTIONS: * links--node.html.twig * links--node.html.twig x links.html.twig --> <!-- BEGIN OUTPUT from 'themes/custom/planet_foundated/templates/links.html.twig' --> <!-- END OUTPUT from 'themes/custom/planet_foundated/templates/links.html.twig' --> Fri, 17 Sep 2021 17:44:18 +0000 kinta 6494 at https://planet.communia.org https://planet.communia.org/ca/content/launching-tiny-news-ttrss-aggregator-client#comments Enlaces desde matrix https://planet.communia.org/ca/content/enlaces-desde-matrix <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--title--blog--rss.html.twig * field--node--title--blog.html.twig x field--node--title.html.twig * field--node--blog.html.twig * field--title.html.twig * field--string.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/field--node--title.html.twig' --> <span>Enlaces desde matrix</span> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/field--node--title.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--field-image--blog--rss.html.twig * field--node--field-image--blog.html.twig * field--node--field-image.html.twig * field--node--blog.html.twig * field--field-image.html.twig * field--image.html.twig x field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <div class="image field field--node-field-image field--name-field-image field--type-image field--label-hidden field__items"> <div class="field__item"> <!-- THEME DEBUG --> <!-- THEME HOOK: 'responsive_image_formatter' --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/responsive-image-formatter.html.twig' --> <a href="/sites/default/files/webhooker.png"> <!-- THEME DEBUG --> <!-- THEME HOOK: 'responsive_image' --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/responsive-image.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'image' --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/image.html.twig' --> <img loading="eager" srcset="/sites/default/files/styles/max_325x325/public/webhooker.png?itok=9UfVB4KX 294w, /sites/default/files/styles/max_650x650/public/webhooker.png?itok=64axoYv3 588w, /sites/default/files/styles/max_1300x1300/public/webhooker.png?itok=kFXazQgZ 753w" sizes="(min-width: 1290px) 325px, (min-width: 851px) 25vw, (min-width: 560px) 50vw, 100vw" width="294" height="325" src="/sites/default/files/styles/max_325x325/public/webhooker.png?itok=9UfVB4KX" alt="" /> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/image.html.twig' --> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/responsive-image.html.twig' --> </a> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/responsive-image-formatter.html.twig' --> </div> </div> <!-- END OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--uid--blog--rss.html.twig * field--node--uid--blog.html.twig x field--node--uid.html.twig * field--node--blog.html.twig * field--uid.html.twig * field--entity-reference.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/field--node--uid.html.twig' --> <span> <!-- THEME DEBUG --> <!-- THEME HOOK: 'username' --> <!-- BEGIN OUTPUT from 'themes/custom/planet_foundated/templates/username.html.twig' --> <a href="/user/1" class="visually-hidden p-author h-card" rel="author" title="kinta">kinta <img src="" alt="kinta" /> </a> <a title="View user profile." href="/ca/users/kinta">kinta</a> <!-- END OUTPUT from 'themes/custom/planet_foundated/templates/username.html.twig' --> </span> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/field--node--uid.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--created--blog--rss.html.twig * field--node--created--blog.html.twig x field--node--created.html.twig * field--node--blog.html.twig * field--created.html.twig * field--created.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/field--node--created.html.twig' --> <span> <!-- THEME DEBUG --> <!-- THEME HOOK: 'time' --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/time.html.twig' --> <time datetime="2020-06-26T17:19:21+02:00" title="Friday, June 26, 2020 - 17:19">Fri, 06/26/2020 - 17:19</time> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/time.html.twig' --> </span> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/field--node--created.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--body--blog--rss.html.twig * field--node--body--blog.html.twig * field--node--body.html.twig * field--node--blog.html.twig * field--body.html.twig * field--text-with-summary.html.twig x field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <div class="body field field--node-body field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Hace dos años ya propusimos una forma de <strong>alimentar un repositorio</strong> con <a href="https://planet.communia.org/ca/comment/245?page=0">enlaces desde telegram</a> , el módulo para drupal era planteado de una forma extensible: Podía ampliarse para recolectar no solo enlaces, sino cualquier "<a href="https://core.telegram.org/schema">entidad</a>" que albergue un <strong>mensaje de Telegram</strong>, en buena parte gracias a la <a href="https://planet.communia.org/ca/comment/245?page=0">excelente librería de php-telegram</a>. Sin embargo, a pesar de la demanda, y de interesantes funcionalidades que añadiríamos a cualquier drupal el problema de fondo era desarrollar "encima" de telegram... El hecho de basarlo en telegram haría que el elefante estuviera siempre en la habitación, ya que Telegram <a href="https://telegram.org/faq#q-can-i-run-telegram-using-my-own-server">no se puede considerar floss</a> y si no lo ha sido a pesar de las dificultades que tienen en Rusia u otros países y han planteado proxies en lugar de servidores, es indicativo que difícilmente lo será.</p> <p>Citando el FAQ de Telegram:</p> <blockquote><p>Our architecture does not support federation yet. Telegram is a unified cloud service, so creating forks where two users might end up on two different Telegram clouds is unacceptable.</p> </blockquote> <p>Aunque con un enfoque mucho mas abierto, está Signal, pero aunque puedas tener tu servidor, la federación se hace <a href="https://signal.org/blog/the-ecosystem-is-moving/">dificil</a>, más cuando los desarrolladores ven la distribución de servidores como algo que obstaculiza el desarrollo.</p> <p>En el mismo post que hicimos ya se planteaba que sería interesante huir de servicios de mensajería cerrados, para <strong>evitar el cercamiento de algo tan elemental como es la comunicación entre pares</strong>. Puede parecer vanal, pero se debe dar la importancia y ser consciente <a href="https://ssd.eff.org/en/module/communicating-others">que es crucial</a> para garantizar la privacidad, el respeto y la soberanía completa sobre los datos, así como para evitar que se filtren los <a href="https://ssd.eff.org/es/module/por-qu%C3%A9-los-metadatos-son-importantes">pequeños metadatos</a> sobre los que se fundamentan modelos de negocio de gigantes. Los servicios de mensajería son servicios que utilizamos masiva y constantemente, como consecuencia hay que <strong>establecer una tendencia y un saber-cómo</strong> que se oriente al uso de servicios que mantengan coherencia <strong>con aquello que sabemos que es justo y responsable</strong>. Aún sabiendo que no va a haber un uso masivo, si que se puede dar respuestas concretas a demandas. De hecho el mercado está actuando así cuando vemos que para casos que se requiere adaptación a un contexto, se opta para <a href="https://ssd.eff.org/es/module/por-qu%C3%A9-los-metadatos-son-importantes">mensajerías ad-hoc aisladas</a>.</p> <p>Ya en su día hablamos de XMPP, o los más recientes Signal o Matrix. Nuestro día a día y apostar por sistemas distribuidos como factor de resiliencia nos ha movido a habitar y desarrollar componentes "encima" del protocolo <a href="https://matrix.org/docs/spec/">Matrix</a>. <a href="https://matrix.org/">Una red abierta para la comunicación distribuida segura</a>.</p> <p>Esta red no sólo se ha pensado en que sea federada desde un inicio como lo es el correo(cada uno puede tener su propio servidor), también puede enlazarse a otros servicios como telegram, whatsapp, gitter, rocket... <a href="https://matrix.org/bridges/">Utilizando los bridges</a> podemos habilitar salas de servicios híbridos, o plantear transiciones y migraciones menos traumáticas.</p> <h1>Comunicando con repositorios de datos o cms</h1> <p>El primer paso ha sido plantear un sistema análogo a lo que hace telegram con los bots y sus comandos. Esto es en lugar de confiar en un botfather que nos permita añadir comandos, es habilitar un bot que registre comandos en cada sala, el bot se llama <a href="https://gitlab.com/communia/matrix-webhooker/">webhooker</a>: Lo que hace este bot es que cuando ocurre un lanzamiento de un comando se hace un envío POST con un mensaje de Matrix a una url concreta. Su seguridad se basa en una llave secreta que junto a los parámetros de URL+COMMAND+MatrizRoomID encriptan un token jwt que es el que en el otro extremo se deberá aportar para conseguir la autorización.</p> <p>En el otro extremo, en el repositorio o el cms, hemos derivado el módulo que en su día creamos ( <a href="https://www.drupal.org/sandbox/kinta/2919960">telegram_media</a> ) para adaptarlo a la red matrix, el ćodigo está en el proyecto <a href="https://www.drupal.org/project/matrix_webhook">matrix_webhook</a> en <a href="http://drupal.org">drupal.org</a> .</p> <p>Con esto crece la capacidad para recolectar todos los contenidos que hay y poder crear contextos para las comunidades o grupos. Y todo bajo nuestro control. Además de los bots existentes ya partimos de <a href="https://gitlab.com/aleixq/matrix-js-sdk-bot-template">una plantilla</a> para poder crear de nuevos y así desplegar servicios encima o los que mencionamos en su día: por ejemplo si tienes un grupo de cocina y quieres ir guardando las recetas, o del AMPA y quieres guardar enlaces sobre pedagogía. Cómo ejemplo de donde más ampliar: Se pueden crear pasarelas de pagos, canales de comunicados, mantener redes de intercambio de ficheros, o pensar en catálogos de contenidos.</p> <p>Ahora ya tenemos al mismo nivel las funcionalidades que permitían recolectar enlaces desde los grupos que estemos, los enlaces que compartamos podrán ser recolectados sin problema.</p> <h3>Cómo se usaría</h3> <p>Cómo prerequisito crearemos el usuario del bot. Con sus credenciales lanzamos el servicio webhooker. Después invitamos el bot en el grupo que gestionamos en cuestión. Una vez invitado registramos un nuevo comando:</p> <p><code>!webhooker command:set !comando_que_dispara_el_envio https://repositorio.net/ejnf838u23nf398-fragmento-de-dificil-obtencion-300101 {"contexto": "Nos permite añadir propiedades constantes que serán añadidas en cada envío hacia el repositorio"}</code> Nos devolverá un token jwt.</p> <p>Con esto vamos al otro extremo, nuestro drupal, ahí como requerimiento tendremos que instalar el modulo matrix_media , lo configuramos en <code>admin/config/services/matrix_webhook/hooks</code>:</p> <ul><li><strong>webhooker token</strong>: <code>token_devuelto</code></li> <li><strong>Url token</strong> : <code>ejnf838u23nf398-fragmento-de-dificil-obtencion-300101</code></li> </ul><p>En <code>admin/config/services/matrix_webhook/hooks/field_mapping</code> podemos decidir como qué tipo se guardan los contenidos, qué campos utilizar y con que usuario.</p> <p>Una vez configurado en el grupo en cuestión podemos lanzar:</p> <pre> <code>/c absolute_url [description] [#tag] [#tag2] </code></pre><p>También puede ser con una respuesta a cualquier enlace envíado, solo con:</p> <pre> <code>/c [description] [#tag] [#tag1] </code></pre><p>Un contenido nuevo será creado usando el tipo de contenido y los campos especificados.</p> </div> <!-- END OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--field-tags--blog--rss.html.twig * field--node--field-tags--blog.html.twig * field--node--field-tags.html.twig * field--node--blog.html.twig * field--field-tags.html.twig * field--entity-reference.html.twig x field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <div class="field field--node-field-tags field--name-field-tags field--type-entity-reference field--label-inline clearfix"> <div class="field-label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/en/etiquetes/P2p" hreflang="en">P2p</a></div> <div class="field__item"><a href="/en/etiquetes/comunitat" hreflang="en">Comunitat</a></div> <div class="field__item"><a href="/en/etiquetes/coneixement" hreflang="en">Coneixement</a></div> <div class="field__item"><a href="/ca/etiquetes/conversa-federada" hreflang="ca">conversa federada</a></div> </div> </div> <!-- END OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'links__node' --> <!-- FILE NAME SUGGESTIONS: * links--node.html.twig * links--node.html.twig x links.html.twig --> <!-- BEGIN OUTPUT from 'themes/custom/planet_foundated/templates/links.html.twig' --> <!-- END OUTPUT from 'themes/custom/planet_foundated/templates/links.html.twig' --> Fri, 26 Jun 2020 15:19:21 +0000 kinta 6489 at https://planet.communia.org https://planet.communia.org/ca/content/enlaces-desde-matrix#comments Patents i COVID-19 https://planet.communia.org/ca/content/patentes-i-covid-19 <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--title--blog--rss.html.twig * field--node--title--blog.html.twig x field--node--title.html.twig * field--node--blog.html.twig * field--title.html.twig * field--string.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/field--node--title.html.twig' --> <span>Patents i COVID-19</span> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/field--node--title.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--field-image--blog--rss.html.twig * field--node--field-image--blog.html.twig * field--node--field-image.html.twig * field--node--blog.html.twig * field--field-image.html.twig * field--image.html.twig x field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <div class="image field field--node-field-image field--name-field-image field--type-image field--label-hidden field__items"> <div class="field__item"> <!-- THEME DEBUG --> <!-- THEME HOOK: 'responsive_image_formatter' --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/responsive-image-formatter.html.twig' --> <a href="/sites/default/files/italian-flag.jpg"> <!-- THEME DEBUG --> <!-- THEME HOOK: 'responsive_image' --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/responsive-image.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'image' --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/image.html.twig' --> <img loading="eager" srcset="/sites/default/files/styles/max_325x325/public/italian-flag.jpg?itok=kxraOsVq 325w, /sites/default/files/styles/max_650x650/public/italian-flag.jpg?itok=wgxE-qhG 560w" sizes="(min-width: 1290px) 325px, (min-width: 851px) 25vw, (min-width: 560px) 50vw, 100vw" width="325" height="163" src="/sites/default/files/styles/max_325x325/public/italian-flag.jpg?itok=kxraOsVq" alt="" title="Oficina Europea de Patents. Mesures: Banderes a mig pal i minut de silenci..." /> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/image.html.twig' --> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/responsive-image.html.twig' --> </a> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/responsive-image-formatter.html.twig' --> </div> </div> <!-- END OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--uid--blog--rss.html.twig * field--node--uid--blog.html.twig x field--node--uid.html.twig * field--node--blog.html.twig * field--uid.html.twig * field--entity-reference.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/field--node--uid.html.twig' --> <span> <!-- THEME DEBUG --> <!-- THEME HOOK: 'username' --> <!-- BEGIN OUTPUT from 'themes/custom/planet_foundated/templates/username.html.twig' --> <a href="/user/1" class="visually-hidden p-author h-card" rel="author" title="kinta">kinta <img src="" alt="kinta" /> </a> <a title="View user profile." href="/ca/users/kinta">kinta</a> <!-- END OUTPUT from 'themes/custom/planet_foundated/templates/username.html.twig' --> </span> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/field--node--uid.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--created--blog--rss.html.twig * field--node--created--blog.html.twig x field--node--created.html.twig * field--node--blog.html.twig * field--created.html.twig * field--created.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/field--node--created.html.twig' --> <span> <!-- THEME DEBUG --> <!-- THEME HOOK: 'time' --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/time.html.twig' --> <time datetime="2020-04-12T17:02:21+02:00" title="Sunday, April 12, 2020 - 17:02">Sun, 04/12/2020 - 17:02</time> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/time.html.twig' --> </span> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/field--node--created.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--body--blog--rss.html.twig * field--node--body--blog.html.twig * field--node--body.html.twig * field--node--blog.html.twig * field--body.html.twig * field--text-with-summary.html.twig x field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <div class="body field field--node-body field--name-body field--type-text-with-summary field--label-hidden field__item"><p><span>En l'emergència de la pneumònia de Wuhan, hem estat participant des de </span><a href="https://www.coronavirusmakers.org/index.php/es/"><span>coronavirusmakers imprimint epi</span></a><span>, fent recerca de projectes de </span><a href="https://foro.coronavirusmakers.org/index.php?p=/categories/prototipos"><span>respiradors en llicències no restrictives</span></a><span>, aportant </span><a href="https://planet.communia.org/ca/content/guia-sobre-les-eines-online-durant-el-confinament"><span>propostes tecnològiques accessibles</span></a><span>... en definitiva seguint i participant amb interès les <strong>xarxes de suport mutu</strong> que sortien quan la resposta sistèmica fallava. Quan s'oferia com a única sortida la concentració i la centralització de poders per gestionar les nostres vides.</span></p> <p><span>Aquesta resposta del sistema, la qual urgeix a posar els beneficis per sobre les necessitats elementals de tots quan ens reclama jugar-nos la salut per alimentar un espiral de guanys, actua de la mateixa manera quan ens trobem davant la falsa escassetat imposada a través dels <strong>monopolis del coneixement i la ciència</strong>.</span></p> <blockquote><h4><span>Pagat per tots, però s'haurà de pagar-ho una i una altra vegada</span></h4> </blockquote> <p><span>Els tics segueixen i entitats que viuen del finançament públic com la </span><a href="https://t.co/TQZZHYfBND?amp=1"><span>LEITAT i el seu respirador</span></a><span> són </span><a href="https://twitter.com/OSVentilator/status/1242008955607490567?s=20"><span>il·lustratives</span></a><span> malgrat han aixecat tímides </span><a href="https://t.co/TQZZHYfBND?amp=1"><span>crítiques</span></a><span> ... Operen sobre indicadors de rendibilitat de les patents i són aplaudides com a salvaguarda de la recerca nacional; Celebrem que salvi totes les vida que salvarà, però la premsa generalista aplaudeix no només perquè pugui salvar vides en si, també perquè aportaria capital i hi hauran apreciadíssims beneficis pels que tinguin la patent. Tenim sort... fet aquí, pagat per tots, però s'haurà de pagar-ho una i una altra vegada, i no, per molt que sigui indústria catalana o espanyola no hi ha distribució de beneficis per molt que es tingui un dni nacional. Les </span><a href="https://www.npr.org/2020/04/03/826044608/many-who-need-testing-for-covid-19-fail-to-get-access?t=1586699002958"><span>identitats</span></a><span> s'</span><a href="https://www.theguardian.com/commentisfree/2020/mar/21/rich-famous-coronavirus-tests-covid-19-tom-hanks"><span>esquerden</span></a><span> i les </span><a href="https://www.nytimes.com/2020/03/18/us/coronavirus-testing-elite.html"><span>tensions</span></a><span> </span><a href="https://nuevocurso.org/hora-de-acumular-fuerzas/"><span>afloren</span></a><span>.</span></p> <p><span>Saltant al sistema de rendibilitat i sostenibilitat de la indústria farmacèutica, el mantra es repeteix. Al menys a 10 països, laboratoris i centres d'investigació amb recursos públics(la UE ha destinat 45 milions € en beques i préstecs) , estudien com fer front a la pandèmia. Entre d'altres s'estan fent estudis amb </span><a href="https://saludconlupa.com/noticias/monopolio-farmaceutico-3-medicinas-prometedoras-contra-covid-19-tienen-derechos-exclusivos/"><span>Kaletra, Avigan i Remdesvir</span></a><span>, si es demostren efectius les empreses podran reclamar el dret a d'exclusivitat o demanar noves patents allà on no existeixin i restringir l'ús a qui pugui pagar-les. Això és talment disfuncional que 61 organitzacions civils dedicades a la salut pública han firmat una </span><a href="https://medicinesalliance.eu/the-fight-against-covid-19-lets-make-public-investments-count-for-people/"><span>carta</span></a><span> dirigida als governs per exigir que es freni les llicències d'exclusivitat per assegurar una salut universal, i </span><a href="https://msfaccess.org/open-letter-civil-society-urges-gilead-take-immediate-action-ensure-access-potential-covid-19"><span>145 organitzacions han demanat</span></a><span> directament a Gilead(propietaris de la patent de Remdesvir) que s'abstingui de reclamar patents o drets d'exclusivitat.</span></p> <p><span>Segons </span><a href="https://www.msf.es/actualidad/la-pandemia-covid-19-ningun-caso-debe-beneficiar-las-farmaceuticas"><span>Metges sense fronteres</span></a><span>, Cepheid, és un dels altres fabricants de testos mèdics que busquen especular gràcies a la pandèmia, cobraran 18 € per testos que valen 2,70€ a llocs on les persones viuen amb 2 € al dia. Els alts preus en situacions d'emergència no faran si no prolongar-la.</span></p> <p><span>El problema arriba a preocupar la patronal europea i veiem la contradicció, quan la patronal dels laboratoris europeus reclamen </span><a href="https://cincodias.elpais.com/cincodias/2020/02/04/companias/1580844995_477890.html"><span>eliminar les barreres de les patents</span></a><span>, però com es faria?</span></p> <blockquote><h4><span>La resposta governamental al problema és cínica per part de l<strong>'Oficina de Patents Europea</strong></span><span>: "minut de silenci i banderes a mig pal pels afectats a Itàlia"</span></h4> </blockquote> <p><span>La resposta governamental al problema és cínica per part de l'</span><strong><a href="https://www.epo.org/news-issues/news/2020/20200331.html"><span>oficina de patents europea</span></a></strong><span>: "minut de silenci i banderes a mig pal pels afectats a Itàlia", ah! i que els delegats faran teletreball. Next...</span></p> <p><span>A <strong>EUA</strong>, s'ha entrat un projecte de llei que impedeix que les patents relacionades amb el COVID-19 tinguin efecte mentre duri l'emergència. Bé. Però la mesura va acompanyada per una ¡<strong>Extensió de 10 anys de la patent</strong>! això serien 20 + 10 anys extra de bloqueig, amb els danys que pot comportar. </span><a href="https://getpocket.com/redirect?url=https%3A%2F%2Fwww.eff.org%2Fdeeplinks%2F2020%2F04%2Flengthening-patent-terms-10-years-exactly-wrong-response-covid-19"><span>Inadmisible</span></a><span>. A més l'antic director de l'oficina de patents i marques registrades de EUA (David Kappos), el qual treballa per un bufet d'advocats especialistes en defensa de la seva propietat intel·lectual, reclama que es pugui patentar testos de diagnòstic, els quals no es poden patentar actualment ja que simplement mesuren factors biològics.</span></p> <p><span>Pel que fa a <strong>Espanya</strong>, les consultes sobre les possibles llicències obligatòries de l'art 95 LP) recorren els bufets especialistes en propietat intel·lectual. És un article que diu que quan la iniciació, l'increment, o la generalització de l'invent sigui de primordial importància per la salut pública o quan calgui abastiment nacional, mitjançant real decret es podrà sotmetre la patent o la sol·licitud al règim de llicència obligatòria, això si, amb compensació adequada de pagament de royalties. A l'article 81, es va més enllà, l'Estat pot expropiar mitjançant l'aprovació d'una llei concreta i la compensació econòmica (la qual es podrà recórrer judicialment). <strong>Ambdós articles no han estat empleats</strong>. Sigui com sigui les farmacèutiques </span><a href="https://www.comparably.com/companies/gilead-sciences/executive-salaries"><span>guanyen</span></a><span> com </span><a href="https://www.biopharmadive.com/news/gilead-ceo-john-martins-true-compensation-could-be-600-million/379556/"><span>sempre</span></a><span>, per fer-nos una idea dels volums de negoci, una empresa com Gilead té un benefici net de 5.386 milions €.</span></p> <blockquote><h4><span>Cal estar atents i posar la lupa als lobbys i legisladors per tal que no impedeixin lluitar contra la pandèmia.</span></h4> </blockquote> <p><span>Un altre cas és la aplicació desenvolupada pel <strong>departament de salut català</strong> via ctti, la consellera es vanagloriava que érem capdavanters en aquest sistema de teleassistència i que altres països volien l'aplicació. De nou, buscant el <strong>codi font</strong>, <strong>no n'hi ha ni rastre</strong>, es segueixen els patrons, tancar el codi i buscar beneficis econòmics per sobre les necessitats essencials. El departament de salut català </span><a href="https://www.xataka.com/aplicaciones/lio-aplicaciones-covid-19-estos-diferentes-proyectos-donde-movil-principal-arma-frente-al-coronavirus"><span>no és l'única</span></a><span>, i n'hi han d'altres que comparteixen amb </span><a href="https://maldita.es/malditatecnologia/2020/03/24/aplicacion-madrid-coronavirus-oficial-comparte-datos-empresas/"><span>tercers les dades</span></a><span>.</span></p> <p><span>La distopia conquereix aquest món. I des del confinament o des de l'altruisme per l'emergència és moment per valorar si volem seguir seguint a aquestes normes.</span><span> Valorar si cal alinear-se amb un capital nacional o internacional que busca una vegada i una altra explotar els recursos humans i naturals fins a la mateixa mort per extreure valor i més valor. </span></p> <blockquote><h4><span>no podem admetre que el bloqueig de coneixement sigui motiu per deixar viure o no a les persones</span></h4> </blockquote> <p><span>La <strong>proposta per trencar o donar-li un sentit a la capactiat de recerca i inventiva</strong>, més enllà de productes miraculosos, de discursos eugenèsics o de dimonitzar eines i tecnologies passa o per <strong>desmuntar un mercat de monopolis</strong> on només hi poden accedir els qui han pogut gaudir d'avantatges i acumulacions preestablertes, i en aquest sentit no podem admetre que el bloqueig de coneixement sigui motiu per deixar viure o no a les persones. La teoria i pràctica d'una <strong>ciència lliure</strong> d'aquestes restriccions, que esdevingui de <strong>domini públic</strong>, la tractarem en la propera entrada.</span></p> </div> <!-- END OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--field-tags--blog--rss.html.twig * field--node--field-tags--blog.html.twig * field--node--field-tags.html.twig * field--node--blog.html.twig * field--field-tags.html.twig * field--entity-reference.html.twig x field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <div class="field field--node-field-tags field--name-field-tags field--type-entity-reference field--label-inline clearfix"> <div class="field-label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/ca/etiquetes/patents" hreflang="ca">patents</a></div> <div class="field__item"><a href="/ca/etiquetes/covid-19" hreflang="ca">covid-19</a></div> <div class="field__item"><a href="/ca/etiquetes/mercats" hreflang="ca">mercats</a></div> </div> </div> <!-- END OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'links__node' --> <!-- FILE NAME SUGGESTIONS: * links--node.html.twig * links--node.html.twig x links.html.twig --> <!-- BEGIN OUTPUT from 'themes/custom/planet_foundated/templates/links.html.twig' --> <!-- END OUTPUT from 'themes/custom/planet_foundated/templates/links.html.twig' --> Sun, 12 Apr 2020 15:02:21 +0000 kinta 6468 at https://planet.communia.org https://planet.communia.org/ca/content/patentes-i-covid-19#comments Patents i COVID-19 https://planet.communia.org/ca/content/patentes-i-covid-19 <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--title--blog--rss.html.twig * field--node--title--blog.html.twig x field--node--title.html.twig * field--node--blog.html.twig * field--title.html.twig * field--string.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/field--node--title.html.twig' --> <span>Patents i COVID-19</span> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/field--node--title.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--field-image--blog--rss.html.twig * field--node--field-image--blog.html.twig * field--node--field-image.html.twig * field--node--blog.html.twig * field--field-image.html.twig * field--image.html.twig x field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <div class="image field field--node-field-image field--name-field-image field--type-image field--label-hidden field__items"> <div class="field__item"> <!-- THEME DEBUG --> <!-- THEME HOOK: 'responsive_image_formatter' --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/responsive-image-formatter.html.twig' --> <a href="/sites/default/files/italian-flag.jpg"> <!-- THEME DEBUG --> <!-- THEME HOOK: 'responsive_image' --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/responsive-image.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'image' --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/image.html.twig' --> <img loading="eager" srcset="/sites/default/files/styles/max_325x325/public/italian-flag.jpg?itok=kxraOsVq 325w, /sites/default/files/styles/max_650x650/public/italian-flag.jpg?itok=wgxE-qhG 560w" sizes="(min-width: 1290px) 325px, (min-width: 851px) 25vw, (min-width: 560px) 50vw, 100vw" width="325" height="163" src="/sites/default/files/styles/max_325x325/public/italian-flag.jpg?itok=kxraOsVq" alt="" title="Oficina Europea de Patents. Mesures: Banderes a mig pal i minut de silenci..." /> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/image.html.twig' --> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/responsive-image.html.twig' --> </a> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/responsive-image-formatter.html.twig' --> </div> </div> <!-- END OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--uid--blog--rss.html.twig * field--node--uid--blog.html.twig x field--node--uid.html.twig * field--node--blog.html.twig * field--uid.html.twig * field--entity-reference.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/field--node--uid.html.twig' --> <span> <!-- THEME DEBUG --> <!-- THEME HOOK: 'username' --> <!-- BEGIN OUTPUT from 'themes/custom/planet_foundated/templates/username.html.twig' --> <a href="/user/1" class="visually-hidden p-author h-card" rel="author" title="kinta">kinta <img src="" alt="kinta" /> </a> <a title="View user profile." href="/ca/users/kinta">kinta</a> <!-- END OUTPUT from 'themes/custom/planet_foundated/templates/username.html.twig' --> </span> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/field--node--uid.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--created--blog--rss.html.twig * field--node--created--blog.html.twig x field--node--created.html.twig * field--node--blog.html.twig * field--created.html.twig * field--created.html.twig * field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/field--node--created.html.twig' --> <span> <!-- THEME DEBUG --> <!-- THEME HOOK: 'time' --> <!-- BEGIN OUTPUT from 'themes/contrib/stable/templates/field/time.html.twig' --> <time datetime="2020-04-12T17:02:21+02:00" title="Sunday, April 12, 2020 - 17:02">Sun, 04/12/2020 - 17:02</time> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/time.html.twig' --> </span> <!-- END OUTPUT from 'themes/contrib/stable/templates/field/field--node--created.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--body--blog--rss.html.twig * field--node--body--blog.html.twig * field--node--body.html.twig * field--node--blog.html.twig * field--body.html.twig * field--text-with-summary.html.twig x field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <div class="body field field--node-body field--name-body field--type-text-with-summary field--label-hidden field__item"><p><span>En l'emergència de la pneumònia de Wuhan, hem estat participant des de </span><a href="https://www.coronavirusmakers.org/index.php/es/"><span>coronavirusmakers imprimint epi</span></a><span>, fent recerca de projectes de </span><a href="https://foro.coronavirusmakers.org/index.php?p=/categories/prototipos"><span>respiradors en llicències no restrictives</span></a><span>, aportant </span><a href="https://planet.communia.org/ca/content/guia-sobre-les-eines-online-durant-el-confinament"><span>propostes tecnològiques accessibles</span></a><span>... en definitiva seguint i participant amb interès les <strong>xarxes de suport mutu</strong> que sortien quan la resposta sistèmica fallava. Quan s'oferia com a única sortida la concentració i la centralització de poders per gestionar les nostres vides.</span></p> <p><span>Aquesta resposta del sistema, la qual urgeix a posar els beneficis per sobre les necessitats elementals de tots quan ens reclama jugar-nos la salut per alimentar un espiral de guanys, actua de la mateixa manera quan ens trobem davant la falsa escassetat imposada a través dels <strong>monopolis del coneixement i la ciència</strong>.</span></p> <blockquote><h4><span>Pagat per tots, però s'haurà de pagar-ho una i una altra vegada</span></h4> </blockquote> <p><span>Els tics segueixen i entitats que viuen del finançament públic com la </span><a href="https://t.co/TQZZHYfBND?amp=1"><span>LEITAT i el seu respirador</span></a><span> són </span><a href="https://twitter.com/OSVentilator/status/1242008955607490567?s=20"><span>il·lustratives</span></a><span> malgrat han aixecat tímides </span><a href="https://t.co/TQZZHYfBND?amp=1"><span>crítiques</span></a><span> ... Operen sobre indicadors de rendibilitat de les patents i són aplaudides com a salvaguarda de la recerca nacional; Celebrem que salvi totes les vida que salvarà, però la premsa generalista aplaudeix no només perquè pugui salvar vides en si, també perquè aportaria capital i hi hauran apreciadíssims beneficis pels que tinguin la patent. Tenim sort... fet aquí, pagat per tots, però s'haurà de pagar-ho una i una altra vegada, i no, per molt que sigui indústria catalana o espanyola no hi ha distribució de beneficis per molt que es tingui un dni nacional. Les </span><a href="https://www.npr.org/2020/04/03/826044608/many-who-need-testing-for-covid-19-fail-to-get-access?t=1586699002958"><span>identitats</span></a><span> s'</span><a href="https://www.theguardian.com/commentisfree/2020/mar/21/rich-famous-coronavirus-tests-covid-19-tom-hanks"><span>esquerden</span></a><span> i les </span><a href="https://www.nytimes.com/2020/03/18/us/coronavirus-testing-elite.html"><span>tensions</span></a><span> </span><a href="https://nuevocurso.org/hora-de-acumular-fuerzas/"><span>afloren</span></a><span>.</span></p> <p><span>Saltant al sistema de rendibilitat i sostenibilitat de la indústria farmacèutica, el mantra es repeteix. Al menys a 10 països, laboratoris i centres d'investigació amb recursos públics(la UE ha destinat 45 milions € en beques i préstecs) , estudien com fer front a la pandèmia. Entre d'altres s'estan fent estudis amb </span><a href="https://saludconlupa.com/noticias/monopolio-farmaceutico-3-medicinas-prometedoras-contra-covid-19-tienen-derechos-exclusivos/"><span>Kaletra, Avigan i Remdesvir</span></a><span>, si es demostren efectius les empreses podran reclamar el dret a d'exclusivitat o demanar noves patents allà on no existeixin i restringir l'ús a qui pugui pagar-les. Això és talment disfuncional que 61 organitzacions civils dedicades a la salut pública han firmat una </span><a href="https://medicinesalliance.eu/the-fight-against-covid-19-lets-make-public-investments-count-for-people/"><span>carta</span></a><span> dirigida als governs per exigir que es freni les llicències d'exclusivitat per assegurar una salut universal, i </span><a href="https://msfaccess.org/open-letter-civil-society-urges-gilead-take-immediate-action-ensure-access-potential-covid-19"><span>145 organitzacions han demanat</span></a><span> directament a Gilead(propietaris de la patent de Remdesvir) que s'abstingui de reclamar patents o drets d'exclusivitat.</span></p> <p><span>Segons </span><a href="https://www.msf.es/actualidad/la-pandemia-covid-19-ningun-caso-debe-beneficiar-las-farmaceuticas"><span>Metges sense fronteres</span></a><span>, Cepheid, és un dels altres fabricants de testos mèdics que busquen especular gràcies a la pandèmia, cobraran 18 € per testos que valen 2,70€ a llocs on les persones viuen amb 2 € al dia. Els alts preus en situacions d'emergència no faran si no prolongar-la.</span></p> <p><span>El problema arriba a preocupar la patronal europea i veiem la contradicció, quan la patronal dels laboratoris europeus reclamen </span><a href="https://cincodias.elpais.com/cincodias/2020/02/04/companias/1580844995_477890.html"><span>eliminar les barreres de les patents</span></a><span>, però com es faria?</span></p> <blockquote><h4><span>La resposta governamental al problema és cínica per part de l<strong>'Oficina de Patents Europea</strong></span><span>: "minut de silenci i banderes a mig pal pels afectats a Itàlia"</span></h4> </blockquote> <p><span>La resposta governamental al problema és cínica per part de l'</span><strong><a href="https://www.epo.org/news-issues/news/2020/20200331.html"><span>oficina de patents europea</span></a></strong><span>: "minut de silenci i banderes a mig pal pels afectats a Itàlia", ah! i que els delegats faran teletreball. Next...</span></p> <p><span>A <strong>EUA</strong>, s'ha entrat un projecte de llei que impedeix que les patents relacionades amb el COVID-19 tinguin efecte mentre duri l'emergència. Bé. Però la mesura va acompanyada per una ¡<strong>Extensió de 10 anys de la patent</strong>! això serien 20 + 10 anys extra de bloqueig, amb els danys que pot comportar. </span><a href="https://getpocket.com/redirect?url=https%3A%2F%2Fwww.eff.org%2Fdeeplinks%2F2020%2F04%2Flengthening-patent-terms-10-years-exactly-wrong-response-covid-19"><span>Inadmisible</span></a><span>. A més l'antic director de l'oficina de patents i marques registrades de EUA (David Kappos), el qual treballa per un bufet d'advocats especialistes en defensa de la seva propietat intel·lectual, reclama que es pugui patentar testos de diagnòstic, els quals no es poden patentar actualment ja que simplement mesuren factors biològics.</span></p> <p><span>Pel que fa a <strong>Espanya</strong>, les consultes sobre les possibles llicències obligatòries de l'art 95 LP) recorren els bufets especialistes en propietat intel·lectual. És un article que diu que quan la iniciació, l'increment, o la generalització de l'invent sigui de primordial importància per la salut pública o quan calgui abastiment nacional, mitjançant real decret es podrà sotmetre la patent o la sol·licitud al règim de llicència obligatòria, això si, amb compensació adequada de pagament de royalties. A l'article 81, es va més enllà, l'Estat pot expropiar mitjançant l'aprovació d'una llei concreta i la compensació econòmica (la qual es podrà recórrer judicialment). <strong>Ambdós articles no han estat empleats</strong>. Sigui com sigui les farmacèutiques </span><a href="https://www.comparably.com/companies/gilead-sciences/executive-salaries"><span>guanyen</span></a><span> com </span><a href="https://www.biopharmadive.com/news/gilead-ceo-john-martins-true-compensation-could-be-600-million/379556/"><span>sempre</span></a><span>, per fer-nos una idea dels volums de negoci, una empresa com Gilead té un benefici net de 5.386 milions €.</span></p> <blockquote><h4><span>Cal estar atents i posar la lupa als lobbys i legisladors per tal que no impedeixin lluitar contra la pandèmia.</span></h4> </blockquote> <p><span>Un altre cas és la aplicació desenvolupada pel <strong>departament de salut català</strong> via ctti, la consellera es vanagloriava que érem capdavanters en aquest sistema de teleassistència i que altres països volien l'aplicació. De nou, buscant el <strong>codi font</strong>, <strong>no n'hi ha ni rastre</strong>, es segueixen els patrons, tancar el codi i buscar beneficis econòmics per sobre les necessitats essencials. El departament de salut català </span><a href="https://www.xataka.com/aplicaciones/lio-aplicaciones-covid-19-estos-diferentes-proyectos-donde-movil-principal-arma-frente-al-coronavirus"><span>no és l'única</span></a><span>, i n'hi han d'altres que comparteixen amb </span><a href="https://maldita.es/malditatecnologia/2020/03/24/aplicacion-madrid-coronavirus-oficial-comparte-datos-empresas/"><span>tercers les dades</span></a><span>.</span></p> <p><span>La distopia conquereix aquest món. I des del confinament o des de l'altruisme per l'emergència és moment per valorar si volem seguir seguint a aquestes normes.</span><span> Valorar si cal alinear-se amb un capital nacional o internacional que busca una vegada i una altra explotar els recursos humans i naturals fins a la mateixa mort per extreure valor i més valor. </span></p> <blockquote><h4><span>no podem admetre que el bloqueig de coneixement sigui motiu per deixar viure o no a les persones</span></h4> </blockquote> <p><span>La <strong>proposta per trencar o donar-li un sentit a la capactiat de recerca i inventiva</strong>, més enllà de productes miraculosos, de discursos eugenèsics o de dimonitzar eines i tecnologies passa o per <strong>desmuntar un mercat de monopolis</strong> on només hi poden accedir els qui han pogut gaudir d'avantatges i acumulacions preestablertes, i en aquest sentit no podem admetre que el bloqueig de coneixement sigui motiu per deixar viure o no a les persones. La teoria i pràctica d'una <strong>ciència lliure</strong> d'aquestes restriccions, que esdevingui de <strong>domini públic</strong>, la tractarem en la propera entrada.</span></p> </div> <!-- END OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'field' --> <!-- FILE NAME SUGGESTIONS: * field--node--field-tags--blog--rss.html.twig * field--node--field-tags--blog.html.twig * field--node--field-tags.html.twig * field--node--blog.html.twig * field--field-tags.html.twig * field--entity-reference.html.twig x field.html.twig --> <!-- BEGIN OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <div class="field field--node-field-tags field--name-field-tags field--type-entity-reference field--label-inline clearfix"> <div class="field-label">Tags</div> <div class="field__items"> <div class="field__item"><a href="/ca/etiquetes/patents" hreflang="ca">patents</a></div> <div class="field__item"><a href="/ca/etiquetes/covid-19" hreflang="ca">covid-19</a></div> <div class="field__item"><a href="/ca/etiquetes/mercats" hreflang="ca">mercats</a></div> </div> </div> <!-- END OUTPUT from 'themes/contrib/zurb_foundation/templates/field.html.twig' --> <!-- THEME DEBUG --> <!-- THEME HOOK: 'links__node' --> <!-- FILE NAME SUGGESTIONS: * links--node.html.twig * links--node.html.twig x links.html.twig --> <!-- BEGIN OUTPUT from 'themes/custom/planet_foundated/templates/links.html.twig' --> <!-- END OUTPUT from 'themes/custom/planet_foundated/templates/links.html.twig' --> Sun, 12 Apr 2020 15:02:21 +0000 kinta 6468 at https://planet.communia.org https://planet.communia.org/ca/content/patentes-i-covid-19#comments https://planet.communia.org/ca/content/patentes-i-covid-19#comments