<!-- 
RSS generated by JIRA (9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b) at Mon Feb 12 04:38:25 CET 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>Magnolia - Issue tracker</title>
    <link>https://jira.magnolia-cms.com</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-uk</language>    <build-info>
        <version>9.4.2</version>
        <build-number>940002</build-number>
        <build-date>19-01-2023</build-date>
    </build-info>


<item>
            <title>[MAGNOLIA-9081] Alternative flat content app experience, and implicit JCR sharding</title>
                <link>https://jira.magnolia-cms.com/browse/MAGNOLIA-9081</link>
                <project id="10000" key="MAGNOLIA">Magnolia</project>
                    <description>&lt;p&gt;Editing large-scale content within Magnolia usually comes through content-apps and content-types. Typically, website pages don&apos;t grow as much. Few dynamic pages rather link to products/types via URI2RepositoryMapping (headful) or via delivery API (headless).&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;For content-types, a tree usually doesn&apos;t even make much sense.&lt;/li&gt;
	&lt;li&gt;All content in the workspace has the same flat model.&lt;/li&gt;
	&lt;li&gt;Sometimes editors use folders, but past a certain scale, this becomes irrelevant or worse, gets in the way (click-intensive to expand 2&#8211;3 levels before accessing the desired piece of content).&lt;br/&gt;
Then editors resort to search in first intention.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;(Additionally, cases such as 1-directed hierarchical node-types, &lt;em&gt;e.g.&lt;/em&gt; company &#187; department &#187; employee) are not supported by content-types, and in fact not so common).&lt;/p&gt;
&lt;h4&gt;&lt;a name=&quot;Workarounds&quot;&gt;&lt;/a&gt;Workarounds&lt;/h4&gt;
&lt;ul&gt;
	&lt;li&gt;Many customers resort to hierarchy maintained &quot;by hand&quot; by editors, which is neither convenient for them, nor very robust.&lt;/li&gt;
	&lt;li&gt;Using search via column filters in first intention, when opening the app.&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;&lt;a name=&quot;Background&quot;&gt;&lt;/a&gt;Background&lt;/h4&gt;

&lt;p&gt;The two main reasons we offer a tree-like experience are:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Jackrabbit notoriously struggles with &lt;a href=&quot;https://docs.magnolia-cms.com/product-docs/6.2/Administration/Troubleshooting/Known-issues.html#_too_many_entries_in_jcr_at_the_same_level&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;1000+ nodes on same level&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;That&apos;s how the default &quot;app template&quot; is for content-types; a list view is provided, but only secondarily (one click too far away), and no easy way to turn off the tree view.&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;&lt;a name=&quot;Proposal&quot;&gt;&lt;/a&gt;Proposal&lt;/h4&gt;

&lt;p&gt;Offer a flat content app experience, and hide the hierarchical sharding in JCR behind the scenes.&lt;/p&gt;

&lt;p&gt;This involves several components and aspects:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;&lt;b&gt;Alternative list view&lt;/b&gt;, most likely bespoke implementation using Vaadin&apos;s Grid in more opinionated ways. With less of the complex UI features incurring performance penalties, and maintainability overhead (column filters).&lt;/li&gt;
	&lt;li&gt;&lt;b&gt;Surfacing recent content&lt;/b&gt; relevant to current editor (Google Drive-like). For non-recent content, assume the Find bar is good enough at first. Querying all results and bulk-edits are also interesting, but only after we validate browsing performance.&lt;/li&gt;
	&lt;li&gt;&lt;b&gt;Data bindings &amp;amp; Save actions&lt;/b&gt; transparently writing to JCR according to the desired sharding strategy.&lt;/li&gt;
&lt;/ol&gt;


&lt;h4&gt;&lt;a name=&quot;Implementationnote&quot;&gt;&lt;/a&gt;Implementation note&lt;/h4&gt;

&lt;p&gt;Jackrabbit offers some utilities for dealing with flat structures in the &lt;tt&gt;org.apache.jackrabbit.commons.flat&lt;/tt&gt; package. The interfaces and classes in that package allow transparent mapping of flat structures to a node hierarchy. The default implementation is based on a BTree, which splits nodes on insertion when necessary. The focus of the utility is on sequential access rather than random access and searching.&lt;/p&gt;</description>
                <environment></environment>
        <key id="138381">MAGNOLIA-9081</key>
            <summary>Alternative flat content app experience, and implicit JCR sharding</summary>
                <type id="13" iconUrl="https://jira.magnolia-cms.com/secure/viewavatar?size=xsmall&amp;avatarId=10887&amp;avatarType=issuetype">Epic</type>
                                            <priority id="6" iconUrl="https://jira.magnolia-cms.com/images/icons/priorities/neutral.gif">Neutral</priority>
                        <status id="1" iconUrl="https://jira.magnolia-cms.com/images/icons/statuses/open.png" description="The issue is open and ready for the assignee to start work on it.">Open</status>
                    <statusCategory id="2" key="new" colorName="default"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="-1">Unassigned</assignee>
                                    <reporter username="mgeljic">Mika&#235;l Gelji&#263;</reporter>
                        <labels>
                            <label>dx-core-6.3</label>
                    </labels>
                <created>Tue, 5 Sep 2023 17:10:08 +0200</created>
                <updated>Thu, 7 Dec 2023 15:08:30 +0100</updated>
                                                                                <due></due>
                            <votes>0</votes>
                                    <watches>4</watches>
                                                                                                                <comments>
                            <comment id="376788" author="apchelintcev" created="Mon, 18 Sep 2023 16:04:40 +0200"  >&lt;p&gt;Another possibility to double check/verify is how the JCR&apos;s struggle with flat lists is related to the order support. I can&apos;t tell from the top of my head but my hunch is that we do enable orderable trait for the nodetypes/workspaces by default. If that&apos;s really the case - could we drop it by default and rather indeed rely on the approaches like surfacing the latest content or other optional ways of sorting the nodes?&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                            <customfield id="customfield_14166" key="com.okapya.jira.checklist:checklist">
                        <customfieldname>Acceptance criteria</customfieldname>
                        <customfieldvalues>
                            
        <checklist>
        <![CDATA[
                            




                
                                    <div class="o-completion" style="display: flex; flex-shrink: 0;"><span  class="aui-lozenge aui-lozenge-complete" style="font-size: 12px; font-weight: normal; display: flex; flex-direction: row; align-items: center;" ><span style="padding-right: 4px; vertical-align: middle;"><svg width="15" height="15" viewBox="0 0 15 15" xmlns="http://www.w3.org/2000/svg" fill="white"><path clip-rule="evenodd" d="m10.41037,3.42544l-7.86501,0c-0.72395,0 -1.31084,0.58688 -1.31084,1.31084l0,7.86508c0,0.7239 0.58689,1.3108 1.31084,1.3108l7.86501,0c0.724,0 1.3109,-0.5869 1.3109,-1.3108l0,-7.86508c0,-0.72396 -0.5869,-1.31084 -1.3109,-1.31084zm-7.86501,-0.65542c-1.08593,0 -1.96626,0.88032 -1.96626,1.96626l0,7.86508c0,1.0859 0.88033,1.9662 1.96626,1.9662l7.86501,0c1.086,0 1.9663,-0.8803 1.9663,-1.9662l0,-7.86508c0,-1.08594 -0.8803,-1.96626 -1.9663,-1.96626l-7.86501,0z" fill-rule="evenodd"/><path d="m5.09049,10.18526l-1.82767,-1.82766l-0.78479,0.78479l2.61246,2.61246l5.38758,-5.38754l-0.78483,-0.78479l-4.60275,4.60274z"/></svg></span><span>Empty</span></span></div>
                        ]]>
    </checklist>


                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10111" key="com.atlassian.jira.toolkit:reporterdomain">
                        <customfieldname>Company</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>magnolia-cms.com</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_10031" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Mon, 18 Sep 2023 16:04:40 +0200</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_12730" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_14151" key="com.atlassian.jira.toolkit:message">
                        <customfieldname>Docu info</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10249" key="com.pyxis.greenhopper.jira:gh-epic-color">
                        <customfieldname>Epic Colour</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>ghx-label-7</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10247" key="com.pyxis.greenhopper.jira:gh-epic-label">
                        <customfieldname>Epic Name</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Flat content app experience</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10248" key="com.pyxis.greenhopper.jira:gh-epic-status">
                        <customfieldname>Epic Status</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10501"><![CDATA[To Do]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10061" key="com.atlassian.jira.toolkit:lastusercommented">
                        <customfieldname>Last comm is not jira-dev</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>true</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10071" key="com.atlassian.jira.toolkit:lastupdaterorcommenter">
                        <customfieldname>Last participant</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>mduerig</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_13136" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            20 weeks, 6 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10020" key="com.atlassian.jira.toolkit:attachments">
                        <customfieldname>Number of attachments</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10150" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname>Number of comments</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10011" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>apchelintcev</customfieldvalue>
            <customfieldvalue>mgeljic</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                <customfield id="customfield_10833" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|y0at22:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10244" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_14145" key="com.intenso.jira.issue-templates:issue-templates-customfield">
                        <customfieldname>Template</customfieldname>
                        <customfieldvalues>
                            


                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_15131" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Time in Discovery</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_13933" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Urgency (resolution)</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="15724"><![CDATA[Normal]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                </customfields>
    </item>
</channel>
</rss>