What is Lineage?
Lineage is an add-on for Plone. With Lineage you can create lots of sites inside one system.
It's enabled by some of the pieces that are built into Plone, including INavigationRoot and IPossibleSite that provide an interface, IChildSite.
You get a lot of benefits including:
- One set of users
- One set of groups, roles, permissions
- Maintain Plone and all add-ons in one place, and update all sites at the same time
- Can share content across sites because they are all in the same system
- Smaller footprint and better performance
- It's a little more difficult to pull a site out into it's own system
- May get a little unwieldy if you have thousands of users
- Add-ons and properties are global across all sites
- This is nice if all the sites can be similar
Add collective.lineage to your buildout. When installing Lineage a really popular add on is lineage.themeselection
After Lineage is installed you can go into the actions menu on any folder and select Enable Subsite. This folder can now look completely like it's own site. You can even nest subsites within subsites. The search box in the root site will search across all subsites, but if you are inside a specific subsite you will only find content in it. You can also point different domains at each subsite.
With lineage.themeselection you can change themes on a subsite basis. You can see on each subsite there is a Theme tab, which takes you to the main Theme control panel, but in the context of the subsite that you came from.
Cool things you can do with Lineage
Custom Site Types
- Lineage items are just folders
- You can make custom content types based on folders and have custom Lineage sites that users can create
PSLA eLearning Mini Use Case
Penn State Liberal Arts had over 120 different Plone sites on one server for their classes. All the homework was due on Sunday night, and the sites would go down with all the students submitting homework at the same time.
- Their previous solution was to copy and paste Plone sites in Zope
- With Lineage we migrated all the sites into one Plone instance with folders
- We migrated each class site into department sites so they could easily manage it
- They have a custom content type called a Course
- This generates all the blank lessons, front page, and everything they need for a course
- The teacher is guided through everything they need to set up a new course
- There are custom banners for each site
- Course sites are tied into the students Angel Learning system to allow students to only access sites that match courses they are taking
Other Extension Examples
- lineage.registry, for storing some config per site
- lineage.index: adds a separate index to the catalog per site.
- Resonate/WebUnity is new and enables moving content, syndicating content and central faculty profiles
Notre Dame College of Engineering Mini Case Study
They had a problem of each department and center going off and doing their own thing to build their websites. They wanted a consistent look and to be able to share content across their various sites. Allowing them to promote content and the faculty involved in that content was important. They also could not manage the canonical source of content to increase their SEO. It also was very difficult to edit or retract content because it was being copied and pasted across sites.
With Resonate & WebUnity:
- You can request to syndicate a piece of content you make to another site
- This maintains a canonical source of content but shares a teaser that the other site can modify
- You can request to move a piece of content you make to another site
- Staff from the other site gets notified in the standard Plone review list to accept or reject the content
- The content creator can monitor where an item has been accepted or rejected for syndication
- Move and syndication requests show up in the history of the piece of content
- Works with sites across separate vanity URLs
How does it perform?
I set up two Zope instances, one with 100 Plone Sites, one with 1 Plone Site and 100 sub sites.
- 100 empty Plone sites vs. 1 site with 100 child sites
- ZODB size: about 9 MB with Lineage vs. 140 MB
- Memory use was a lot closer with empty sites
- Could be different as catalogs for each site grow with content
Lineage is Plone 5 compatible!
Lineage 2.0 works quite nicely in the new Plone 5 interface. Download Lineage 2.0.