<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: AlchemyCMS</title>
    <description>The latest articles on DEV Community by AlchemyCMS (@alchemycms).</description>
    <link>https://dev.to/alchemycms</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F2062%2Fb492a6ca-905e-4f07-9723-9649387be264.png</url>
      <title>DEV Community: AlchemyCMS</title>
      <link>https://dev.to/alchemycms</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alchemycms"/>
    <language>en</language>
    <item>
      <title>Alchemy 5.0</title>
      <dc:creator>Thomas von Deyen</dc:creator>
      <pubDate>Fri, 17 Jul 2020 15:41:05 +0000</pubDate>
      <link>https://dev.to/alchemycms/alchemy-5-0-4gk0</link>
      <guid>https://dev.to/alchemycms/alchemy-5-0-4gk0</guid>
      <description>&lt;p&gt;This is a huge release laying the foundation for Alchemy being a API first CMS for static site generators. While we truly believe in server site rendered HTML and will always support this, we also think that statically generated sites talking via APIs to the backend (aka the "JAM Stack") can be a huge improvement for modern frontends. That's why we made major changes to the internals of Alchemy that help you to better serialize your content and remove weirdness from the code base.&lt;/p&gt;

&lt;p&gt;Before we begin thanks for all the contributions that made this release possible:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/mamhoff"&gt;@mamhoff&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.candlescience.com"&gt;CandleScience&lt;/a&gt; for the ongoing support of my work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You really help to make Alchemy better every day.&lt;/p&gt;

&lt;p&gt;Thanks for that ❤️&lt;/p&gt;

&lt;h2&gt;
  
  
  Major changes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Removed the single root page from the page tree
&lt;/h3&gt;

&lt;p&gt;Alchemy always had a single root page under which all other pages were nested. Even the layout pages were nested under hidden layout root pages. This was very confusing and prevents us from making changes to the internal structure of Alchemy for features coming in the near future.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                 |
             Root Page
            /        \
  Language Root     Layout Root
  ├ Page 1            ├ Header
  | \                 └ Footer
  |  ├ Page 2
  |  └ Page 3
  ├ Page 4
  └ Page 5
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;This has now been changed to a easier to understand page structure&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;       |            |        |
  Language Root   Header   Footer
  ├ Page 1
  | \
  |  ├ Page 2
  |  └ Page 3
  ├ Page 4
  └ Page 5
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1837"&gt;#1837&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1817"&gt;#1817&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1812"&gt;#1812&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Remove Page visible attribute
&lt;/h3&gt;

&lt;p&gt;The page visible attribute was one of the most confusing attribute in Alchemy. It did way more things than you might have expected. Did you know that it also changed how URLs got created? Probably not. And that's why removed it.&lt;/p&gt;

&lt;p&gt;Want to make a page appear in the navigation? Create a Menu instead and put pages into it.&lt;/p&gt;

&lt;p&gt;In order to help with the upgrade make sure to update to Alchemy 4.6 first and use Menus and Tags instead to re-organize your pages if your page tree does not reflect the URL hierarchy.&lt;/p&gt;

&lt;p&gt;A rake task to help with the migration is available.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  bin/rake alchemy:upgrade:4.6:restructure_page_tree
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1868"&gt;#1868&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Always create nested urls
&lt;/h3&gt;

&lt;p&gt;With the introduction of Menus and the removal of the Page visible flag we now completely separated the page tree from generating the navigation. That's why we now always generate a nested URL. Don't want to nest a pages URL? Just move it up in the tree.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Remove url_nesting config &lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1872"&gt;#1872&lt;/a&gt; (&lt;a href="https://github.com/tvdeyen"&gt;tvdeyen&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Always create nested urls &lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1844"&gt;#1844&lt;/a&gt; (&lt;a href="https://github.com/tvdeyen"&gt;tvdeyen&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Configurable edit page preview per site
&lt;/h3&gt;

&lt;p&gt;This is a true benefit for all static sites running Alchemy as it's API. On a per site basis you can configure the host (and basic auth) to your static site and Alchemy will preview it in the build in page edit preview.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1877"&gt;#1877&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1803"&gt;#1803&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Add a &lt;a href="https://www.npmjs.com/package/@alchemy_cms/admin"&gt;&lt;code&gt;@alchemy_cms/admin&lt;/code&gt; npm package&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Modern ES6 is everywhere. We started to work on the transition to a more modern JS stack. This is the first step.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1775"&gt;#1775&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1853"&gt;#1853&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Add an On-Boarding Flow
&lt;/h3&gt;

&lt;p&gt;We removed the implicit creation of the sites and default languages. We now do this via the UI instead letting admins decide what to create instead.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1770"&gt;#1770&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1763"&gt;#1763&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Removed element editor partials
&lt;/h3&gt;

&lt;p&gt;After being deprecated we removed the support for element editor partials. Alchemy now renders them for you. If you rely on passing custom options into element editors and the content editors please consider to use the &lt;code&gt;settings&lt;/code&gt; hash on the &lt;code&gt;contents&lt;/code&gt; definition of your elements or using a custom essence.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1653"&gt;#1653&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1652"&gt;#1652&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1651"&gt;#1651&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1638"&gt;#1638&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Other minor changes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Render nodes &lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1831"&gt;#1831&lt;/a&gt; (&lt;a href="https://github.com/mamhoff"&gt;mamhoff&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Add error flash to resource controller &lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1827"&gt;#1827&lt;/a&gt; (&lt;a href="https://github.com/mamhoff"&gt;mamhoff&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Translated root menus &lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1825"&gt;#1825&lt;/a&gt; (&lt;a href="https://github.com/mamhoff"&gt;mamhoff&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Add a quick Node select &lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1821"&gt;#1821&lt;/a&gt; (&lt;a href="https://github.com/mamhoff"&gt;mamhoff&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Make page language mandatory &lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1818"&gt;#1818&lt;/a&gt; (&lt;a href="https://github.com/tvdeyen"&gt;tvdeyen&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Multi language menus &lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1774"&gt;#1774&lt;/a&gt; (&lt;a href="https://github.com/rmparr"&gt;rmparr&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Update Fontawesome &lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1759"&gt;#1759&lt;/a&gt; (&lt;a href="https://github.com/tvdeyen"&gt;tvdeyen&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Sortable resources tables &lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1744"&gt;#1744&lt;/a&gt; (&lt;a href="https://github.com/tvdeyen"&gt;tvdeyen&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Other breaking changes
&lt;/h2&gt;

&lt;p&gt;This release also removes all deprecated methods and classes from 4.6. In order to be able to smoothly upgrade please make sure to update to Alchemy 4.6 and remove all deprecations from your code base, then upgrade to Alchemy 5 and run the&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bin/rake alchemy:upgrade
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;task.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Remove active_record_5_1? method &lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1854"&gt;#1854&lt;/a&gt; (&lt;a href="https://github.com/tvdeyen"&gt;tvdeyen&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Remove old 4.4 upgrader class &lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1814"&gt;#1814&lt;/a&gt; (&lt;a href="https://github.com/tvdeyen"&gt;tvdeyen&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Remove Page.ancestors_for &lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1813"&gt;#1813&lt;/a&gt; (&lt;a href="https://github.com/tvdeyen"&gt;tvdeyen&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Remove legacy element serializer &lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1810"&gt;#1810&lt;/a&gt; (&lt;a href="https://github.com/tvdeyen"&gt;tvdeyen&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Remove timestamps from essences and contents &lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1809"&gt;#1809&lt;/a&gt; (&lt;a href="https://github.com/tvdeyen"&gt;tvdeyen&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Remove stamper from contents &lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1808"&gt;#1808&lt;/a&gt; (&lt;a href="https://github.com/tvdeyen"&gt;tvdeyen&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Remove Site ID from nodes &lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1807"&gt;#1807&lt;/a&gt; (&lt;a href="https://github.com/mamhoff"&gt;mamhoff&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Remove enforce_ssl &lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1804"&gt;#1804&lt;/a&gt; (&lt;a href="https://github.com/tvdeyen"&gt;tvdeyen&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Remove stamper from essences &lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1802"&gt;#1802&lt;/a&gt; (&lt;a href="https://github.com/tvdeyen"&gt;tvdeyen&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Remove acts_as_list from Content &lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1798"&gt;#1798&lt;/a&gt; (&lt;a href="https://github.com/tvdeyen"&gt;tvdeyen&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Remove Tasks::Helper module &lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1754"&gt;#1754&lt;/a&gt; (&lt;a href="https://github.com/mamhoff"&gt;mamhoff&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Remove old upgrade tasks &lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1687"&gt;#1687&lt;/a&gt; (&lt;a href="https://github.com/tvdeyen"&gt;tvdeyen&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Remove deprecated features &lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1686"&gt;#1686&lt;/a&gt; (&lt;a href="https://github.com/tvdeyen"&gt;tvdeyen&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Remove deprecations &lt;a href="https://github.com/AlchemyCMS/alchemy_cms/pull/1656"&gt;#1656&lt;/a&gt; (&lt;a href="https://github.com/tvdeyen"&gt;tvdeyen&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  List of all changes
&lt;/h2&gt;

&lt;p&gt;Have a look into the &lt;a href="https://github.com/AlchemyCMS/alchemy_cms/blob/5.0-stable/CHANGELOG.md"&gt;Changelog&lt;/a&gt; for a list of all PRs merged into this release.&lt;/p&gt;

</description>
      <category>rails</category>
      <category>cms</category>
      <category>release</category>
    </item>
    <item>
      <title>The past, present and future of Alchemy CMS</title>
      <dc:creator>Thomas von Deyen</dc:creator>
      <pubDate>Thu, 04 Jun 2020 12:26:04 +0000</pubDate>
      <link>https://dev.to/alchemycms/the-past-present-and-future-of-alchemy-cms-1f6f</link>
      <guid>https://dev.to/alchemycms/the-past-present-and-future-of-alchemy-cms-1f6f</guid>
      <description>&lt;p&gt;&lt;a href="https://alchemy-cms.com"&gt;Alchemy&lt;/a&gt; &lt;a href="https://github.com/AlchemyCMS/alchemy_cms/commit/5440bfdbda690362f504cc31c98b0ccb06a75173"&gt;turns 10 this June&lt;/a&gt; and I think it's time for a recap. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wow. What a ride. Time flies.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It all started early 2007 as a proprietary project called washAPP. I got my first job in a web development agency and my mentor, Carsten, was annoyed of building websites with TYPO3. Rails just released an early beta of 2.0 and I was sold.&lt;/p&gt;

&lt;p&gt;So, we started to build a CMS that separates the content from markup and gives structure to content not seen back then. Years before the term atomic design was invented we already had molecules built out of atoms. What feels natural today was a revolution back then.&lt;/p&gt;

&lt;p&gt;The agency was closed down in 2010 and I had an agreement with Carsten to continue the work on washAPP as an open source project. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://alchemy-cms.com"&gt;Alchemy&lt;/a&gt; was born. And it was a success. We started using it for most of our clients, integrated it with Spree and &lt;a href="https://www.brandeins.de"&gt;more&lt;/a&gt; &lt;a href="https://www.paperculture.com"&gt;and more&lt;/a&gt; &lt;a href="https://www.candlescience.com"&gt;businesses&lt;/a&gt; &lt;a href="https://www.yfu.de"&gt;all&lt;/a&gt; &lt;a href="https://alchemy-cms.com/showcases"&gt;over the world&lt;/a&gt; are using it. It was and still is a pleasure to work with and for Alchemy.&lt;/p&gt;

&lt;p&gt;Alchemy would not be what it is today without the tremendous help of volunteers and contributors in the past 10 years. &lt;a href="https://github.com/AlchemyCMS/alchemy_cms/contributors"&gt;Besides many&lt;/a&gt; I want to give special thanks to &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://twitter.com/robinboening"&gt;Robin Boening&lt;/a&gt; (who wrote a ton of specs and fixed lots of bugs)&lt;/li&gt;
&lt;li&gt;Moritz Hilger (born Scholz) for helping me understand the needs of customers and users&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://twitter.com/hmans"&gt;Hendrik Mans&lt;/a&gt; for adding multi-domain support into Alchemy&lt;/li&gt;
&lt;li&gt;And of course &lt;a href="https://twitter.com/mamhoff"&gt;Martin Meyerhoff&lt;/a&gt; a true open source hero for his tedious work on making Alchemy better every day and supporting me in many ways&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;❤️ Thank you&lt;/p&gt;

&lt;p&gt;So, in 2020 one might ask is a self-hosted Rails CMS still relevant?&lt;/p&gt;

&lt;p&gt;With the advent of cloud hosted API only headless CMS' this might be true for more and more teams. But not everyone wants to hand over their data to third parties. Also these CMS' have their limitations as they need to fulfill the needs for the majority of users. These needs might not be your needs. And also it's a question of costs. Those CMS' start free but get very pricy pretty fast.&lt;/p&gt;

&lt;p&gt;And for teams that already have a Rails app running it is way easier to include a fully featured CMS that also acts-as your Rails admin in one engine. For users of &lt;a href="https://solidus.io"&gt;Solidus&lt;/a&gt; (and &lt;a href="https://spreecommerce.org"&gt;Spree&lt;/a&gt;) the &lt;a href="https://github.com/AlchemyCMS/alchemy-solidus"&gt;deep integration&lt;/a&gt; off those engines adds benefits to your business only hard to achieve otherwise. Not to forget the UX of having a the life preview build in.&lt;/p&gt;

&lt;p&gt;So, yes. Alchemy is and will be relevant in 2020 (and beyond).&lt;/p&gt;

&lt;p&gt;But the world keeps on turning and the frontend world has changed a lot. That is why we have huge plans for the future of Alchemy.&lt;/p&gt;

&lt;p&gt;Besides performance refactoring and overall cleanup, one of the goals is the ability to get content into Alchemy via the API and (even) better support for static front-ends.&lt;/p&gt;

&lt;p&gt;I am using &lt;a href="https://nuxtjs.org"&gt;NuxtJS&lt;/a&gt; a lot lately and Alchemy is the perfect backend for it. Alchemys atomic content structure perfectly matches modern component based frontend development. And maybe we will provide hosted Alchemy instances in the near future (you'll never know ;)&lt;/p&gt;

&lt;p&gt;Thanks&lt;br&gt;
PS: If you want to help us maintaining Alchemy please consider &lt;a href="https://opencollective.com/alchemy_cms"&gt;supporting us financially on OpenCollective&lt;/a&gt; or via &lt;a href="https://github.com/AlchemyCMS/alchemy_cms"&gt;contributing on GitHub&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>rails</category>
      <category>cms</category>
    </item>
  </channel>
</rss>
