AdoptOS

Assistance with Open Source adoption

Open Source News

Announcing CiviCRM 5.3.1 and 4.6.38 Security Release

CiviCRM - Thu, 07/19/2018 - 08:16

The latest release of CiviCRM 5.3.1 and 4.6.38 includes security fixes. This is a critical security release, we recommend upgrading to 5.3.1 and 4.6.38 to ensure the security of your site and data as soon as possible.

Categories: CRM

Updating PDFBox

Liferay - Wed, 07/18/2018 - 19:50
Intro

In case you're not aware, Liferay uses Apache PDFBox to look at your PDFs. In order to index the content of a PDF, Liferay uses PDFBox to extract the content and uses that during indexing/searching.

However, Liferay tends to fall behind a bit on updating 3rd party libraries. When you favor stability, you tend to be rather conservative when considering updates like this.

Recently though I was helping a client bulk upload documents using the Resources Importer, and wouldn't you know it but almost every one had one exception after another. Some were just errors about fonts, some were actual PDF errors, but some were from bugs in PDFBox.

I checked my DXP version and found that it was using Apache PDFBox 2.0.3, and this was released 2016-09-17. I saw that they released Apache PDFBox 2.0.11 on 2018-06-28, and I wondered if I would see any difference if I updated my PDFBox version.

Replacing Liferay's Jars

So the first question was "What do I download?" When you check the download page, you see that they have a full source zip, a number of java apps and a number of library jars for versions 1.x and 2.x.

I knew I wanted better than 2.0.3, so I was happy to stay in the 2.x downloads. Since I wasn't using the command line apps, I skipped those and went straight to the "Libraries of each subproject" section.

I ended up grabbing the PDFBox, FontBox, Preflight, XMPBox and PDFBoxTools jars.  I skipped the PDFBoxDebugger because I don't plan on debugging to that level of detail.

After stopping my Liferay appserver, I copied these jars to the webapps/ROOT/WEB-INF/lib directory. This was easy for Tomcat, but you may need to follow a slightly different path depending upon your app server choice. Worst case scenario, you could actually build an EXT plugin to deploy your libs, but I'd avoid this if at all possible.

I didn't bother with renaming the jars, so I had to get rid of the old 2.0.3 versions. Interestingly, Liferay doesn't include all of these jars, only PDFBox and FontBox, so after deleting those old jars I was ready to bring the environment up.

Results

After starting up the environment and trying my PDF loads, I found that many of the errors I had seen before were gone. I still had some, but at this point I think they are bad PDF files (they're marked as generated by some robo-pdf tool). I don't know if Preflight or XMPBox have anything to do with some of the errors disappearing, but I don't believe they hurt anything and don't know if they are actual dependencies for the newer versions. So I'm just going to keep them.

Anyway, since my errors were all gone, I'm declaring this an unqualified success.

Caveats

Well, it goes without saying that you may need to repeat part of this when you apply a new fixpack or service pack to DXP.  If they updated from 2.0.3 to 2.0.4 the patching tool will have no problem adding their jars, but you'll have the duplicates again. If you stripped the version number from the jar name, the patching tool would overwrite your newer 2.0.11 jars with the older jars, probably something you wouldn't want.

So keep an eye on your ROOT/WEB-INF/lib jars when you apply a fixpack or service pack.

Also, I think it is okay to update as new 2.0 versions get released. But if you find that there's a shiny new PDFBox 2.1 or 3.0 up there, I would resist the temptation to just blindly push those in as that kind of version bump usually points to an API change that may not be compatible with how Liferay uses PDFBox.

David H Nebinger 2018-07-19T00:50:00Z
Categories: CMS, ECM

The benefits of building a modern data architecture for big data analytics

SnapLogic - Wed, 07/18/2018 - 12:59

Modern data-driven companies are the best at leveraging data to anticipate customer needs, changes in the market, and proactively make more intelligent business decisions. According to the Gartner 2018 CEO and Senior Business Executive Survey, 81 percent of CEOs have prioritized technology initiatives that enable them to acquire advanced analytics. While many companies tapping into[...] Read the full article here.

The post The benefits of building a modern data architecture for big data analytics appeared first on SnapLogic.

Categories: ETL

Liferay 7.1 Community Beta Program Ends

Liferay - Wed, 07/18/2018 - 10:37

As they say: All good things must come to an end. With the official release of Liferay Portal 7.1 CE GA1 we are officially ending the community beta program. We had over 250 sign ups with 48 active participants and over 500 posts making this one of the most successful community programs to date. Thank you for all who participated in the program! Active participants who posted feedback in the Feedback Forum will receive a complimentary t-shirt.

Interesting Stats How to report bugs

If you believe you have encountered a bug in the new release you can report your issue on issues.liferay.com, selecting the "7.1.0 CE GA1" release as the value for the "Affects Version/s" field.

Jamie Sammons 2018-07-18T15:37:00Z
Categories: CMS, ECM

Should we celebrate the anniversary of open source?

Open Source Initiative - Wed, 07/18/2018 - 00:43

Today in Portland at OSCON, OSI will be celebrating 20 years of open source. I’ve had a few comments along the lines of “I’ve was saying ‘open source’ before 1998 so why bother with this 20 year celebration?”

That’s entirely possible. The phrase is reputed to have been used descriptively about free software — especially under non-copyleft licenses — from at least 1996 when it appeared in a press release. Given its appropriateness there’s a good chance it was in use earlier, although I’ve not found any reliable citations to support that. It was also in use in another field well before then, to describe military or diplomatic intelligence obtained by studying non-classified sources.

But there’s no doubt that the gathering at VA Linux where a group of key figures adopted Christine Peterson’s suggestion and decided to use the term to label a marketing programme for free software was a crucial moment. From that point onward, people who wanted to promote software freedom in business or wanted to identify their own approach to doing business with free software had a collectively-agreed term. It’s much easier to make a thing real if you have a word for it.

From that moment it became easy to talk about open source projects, open source business models, the benefits of open source and so on. Yes, people could talk about free software in the same way, but many of us found setting a “price frame” at the start of a discussion an unhelpful distraction requiring justification — “you mean you just want to give it away?” This arose because of the strength for native English speakers of the notion of zero cost associated with the word “free” and the need to dive into discussions about freedom in order to counter it.

The formation of OSI also changed things. By defining open source in reference to a definition of how to identify licenses that deliver the right to use, study, improve and share code, developers were empowered to use open source software without needing to seek further advice. By making a talking point of the methodology enabled by software freedom, open source enabled business adoption in a way that a frame based on promoting liberty would possibly derail. Together, this convergence of meaning made open source a lightning rod for change and an idea that could be spread outside a bubble of like minds. That’s not to say open source lacked a philosophical base; rather, that base became a foundation rather than the lead talking point.

Open source did not emerge from a void. It was consciously a marketing programme for the already-15-year-old idea of free software and arose in the context of both the GNU Project and the BSD community and their history (stretching back to the late 70s). We chose to reflect this in the agenda for our celebration track at OSCON.

But that doesn’t mean its inception is irrelevant. The consensus to define open source at the VA Linux meeting and the subsequent formation of OSI and acceptance of the Open Source Definition changed the phrase from descriptive to a term of art accepted globally. It created a movement and a market and consequently spread software freedom far beyond anyone’s expectations. That has to be worth celebrating.

Image credit: "spirit.png" is a derivative of "43427372221_5c3afe5d39_h.jpg", via Meshed Insights, and used with permission under a Creative Commons with Attribution (CC-By) license.

This article was originally published in Meshed Insights, and was made possible by Patreon patrons.

Categories: Open Source

Liferay IntelliJ Plugin 1.0.0 Released

Liferay - Mon, 07/16/2018 - 21:46

The latest release of Liferay IntelliJ 1.0.0 plugin has been made available today. Head over to this page for downloading.

 

The most notable features for this latest 1.0.0 release are :

 

  • Support watch for module development

  • Support for Liferay 7.1 development

  • Improved Editor Support

    • XML file references

    • OSGi code completion

      • portlet-module-hints.xml

      • custom-sql/default.xml  

      • OSGi component properties

  • Support custom portal paths

  • Support uninstall bundles during liferay watch

 

Using Editors

 

 

 

 

 

Custom Liferay Server

 

Developer mode is enabled by default for liferay servers. In addition to initialize a server from liferay workspace, you also can browse your own server.

 

 

Liferay Watch Support

 

Liferay watch allows users to see the changes they make without requiring a full redeploy. Right click on a single module or a folder which contains liferay module projects to enable Liferay watch. And once you stop liferay watch task, the module will be removed automatically.

 

 

Notes:

Liferay watch requires com . liferay . gradle . plugins . workspace plugin 1.9.2 or greater.

Watch task will detect the chagnes you made once you press CTRL+s.

 

Special Thanks

Thanks so much to Dominik Marks and danielebb for the improvements.

Yanan Yuan 2018-07-17T02:46:00Z
Categories: CMS, ECM

CiviCRM-Making Transactional Emails Dynamic Project updates

CiviCRM - Mon, 07/16/2018 - 04:53

Hi everyone! I’m Abhansh, and I’m working on Making Transactional Email Templates Dynamic project for GSoC 2018. If you want more information about what this project is all about, check out the gitlab here. Mails are the de-facto standard for e-communication these days. We will be using MJML as our templating engine.

Some other templating engines :

  1. INK

Categories: CRM

Join us at Dmexco 2018

PrestaShop - Mon, 07/16/2018 - 04:14
 
Categories: E-commerce

Liferay joins Open Source leaders in protecting developers

Liferay - Mon, 07/16/2018 - 04:04

Liferay, Inc was established on the the strong foundation of an Open Source project. The company has since grown to offer many different projects and products, yet we continue to believe in and support Open Source.

 

To further emphasise our support, today we are publicly committing to offering the much friendlier GPLv3 cure approach to licensees of also our GPLv2, LGPLv2.1 and LGPLv2 licensed code.

In practical terms, this means that if you accidentally violate the license of Liferay Portal for example, we would give you a grace period in which you could fix your mistake.

 

With this we are joining the movement of both volunteers as well as companies, who want to make sure that developing new and evolving existing Open Source software in collaborative fashion is not stifled by draconic license termination clauses.

 

At Liferay we want to encourage innovation and collaboration, and as such it has never been our intention to (mis)use our projects’ Open Source licenses against honest users and developers. We are extremely happy to see the IT industry come together and make this easier with such an elegant legal hack, which we are now a proud user of.


The GPL Cooperation Commitment also allows individuals to show their support, so we would like to encourage all engineers and open source advocates to make the commitment. Please visit the GPL Cooperation Commitment project on GitHub to learn more, and perhaps join us in this movement as well.  

Matija Šuklje 2018-07-16T09:04:00Z
Categories: CMS, ECM

Liferay joins Open Source leaders in protecting developers

Liferay - Mon, 07/16/2018 - 02:04

Liferay, Inc was established on the the strong foundation of an Open Source project. The company has since grown to offer many different projects and products, yet we continue to believe in and support Open Source.

 

To further emphasise our support, today we are publicly committing to offering the much friendlier GPLv3 cure approach to licensees of also our GPLv2, LGPLv2.1 and LGPLv2 licensed code.

In practical terms, this means that if you accidentally violate the license of Liferay Portal for example, we would give you a grace period in which you could fix your mistake.

 

With this we are joining the movement of both volunteers as well as companies, who want to make sure that developing new and evolving existing Open Source software in collaborative fashion is not stifled by draconic license termination clauses.

 

At Liferay we want to encourage innovation and collaboration, and as such it has never been our intention to (mis)use our projects’ Open Source licenses against honest users and developers. We are extremely happy to see the IT industry come together and make this easier with such an elegant legal hack, which we are now a proud user of.


The GPL Cooperation Commitment also allows individuals to show their support, so we would like to encourage all engineers and open source advocates to make the commitment. Please visit the GPL Cooperation Commitment project on GitHub to learn more, and perhaps join us in this movement as well.  

Matija Šuklje 2018-07-16T07:04:00Z
Categories: CMS, ECM

Open Cars Kick-Off Conference

Open Source Initiative - Sat, 07/14/2018 - 09:35

Convened by Bruce Perens, one of the founders of the Open Source movement in software and an authority on Open Standards, and Open Research Institute, Inc. the Open Cars Kick-Off Conference will be held November 6, at the Marriott Airport Lakeside, Orlando, Florida, USA

Autonomous cars are coming. But how are we going to deal with keeping both the software and hardware up-to-date? Odds are, a three-year computer and software a few months old are going to be too old to drive autonomously, at least while the technology is in its infancy. And how do we train the guys in your local garage to maintain an AI?

The automobile industry thinks they have a solution: lease rather than sell autonomous cars, lock the hood shut, and maintain them exclusively through their dealers.

That works great for the 1%. But what about the rest of us? The folks who drive a dented, 10-year-old car? We should have the option to drive autonomous cars, and to participate in the same world as the more wealthy folks.

Open Cars will be the solution. These are automobiles sold with standard fittings, plugs and standards, so that an autonomous driving computer can be purchased in the aftermarket, installed and tested by a certified mechanic, and put on the road. Similarly, the on-board computer, communication, navigation, and entertainment system on an Open Car will be pluggable, purchased on the aftermarket, and will fit into well-defined niches in the vehicle.

By facilitating a competitive market for self-driving computers and other accessories that can be installed on any Open Car, Open Cars will increase the speed of self-driving development, preserve healthy competition, increase quality and lower cost through the force of an open market.

This one-day conference will introduce the concept of the Open Car, ongoing research, and how we will establish the Open Car as a reality.

Come to Orlando in November! Bring your family! The venue is a short drive from Disneyland, Universal, SeaWorld, and other attractions.

Register

Conference attendance will cost $60. Tickets will be available in a few days. To register your interest in the conference and be informed when ticket sales and hotel reservations open, subscribe to the Open Cars announcement list.

Open Cars? Open Source?

Open Cars mean open standards built into new cars that will support an aftermarket for autonomous driving and other electronic accessories. Open Source is not required.

The autonomous driving solutions added to Open Cars are likely to be sold for profit, some sort of certification and a specialized mechanic are necessary and must be paid for. Computer, communication, navigation, and entertainment systems have less stringent requirements and Open Source implementations are likely.

However, Open Standards make the development of Open Source autonomous driving systems possible. The potential for an Open Source implementation which is audited, certified, and sold might make Open Source autonomous driving solutions workable.

Call For Papers

A few slots are open for presentation by leading researchers in the field. Please submit your abstract only via email to bruce@perens.com ASAP.

Follow-Up Meeting

A follow-up meeting on November 7th for sponsors and active participants shall discuss how we carry forward the Open Cars campaign.

Paper

The first paper on Open Cars has been published in the Berkeley Technology Law Journal. The paper was a collaboration between ORI president Bruce Perens and Boalt Hall (Berkeley Law) professor Lothar Determann.

Image Credit: "Koenigsegg CCX with dihedral doors open" (Koenigsegg_CCX_(16702216680).jpg), by Axion23 - Koenigsegg CCX, CC BY 2.0, https://commons.wikimedia.org/w/index.php?curid=41194417

Categories: Open Source

CiviCRM’s Powerful Custom Reporting Helps Create Targeted Groups for Year-End Fundraising

CiviCRM - Fri, 07/13/2018 - 16:30

(and for your Christmas thank-you notes!)

We start with Advanced Search and move on to additional and/or logic to create “smart groups” that update themselves to fit your chosen criteria.

Build Your First Group

1. Go to Search > Advanced Search to build your first group.

Categories: CRM

Creating custom DDM field types in Liferay 7.x

Liferay - Fri, 07/13/2018 - 01:19
DDM... what's DDM?

DDM stands for Dynamic Data Mapping, a set of modules that define various types of fields that can be used to assemble:

  • Web content structures for creating web content articles.
  • Data definitions for creating dynamic data list records.
  • Metadata sets for creating documents based on document types.

Liferay bundles with an ever expanding set of DDM field types out of the box. At the moment of speaking (Liferay 7.1 has just released), the following field types are available:

Is it ever enough?

For basic content management needs, the default set of DDM field types is usually sufficient. However, there certainly are use cases which would require you to create custom field types:

  • You want to dynamically populate the options of a dropdown field from the response of a REST endpoint.
  • You want to provide a field that can point to a user, a group or any other entity in Liferay.
  • You want to have a text field with some very specific validation, e.g. email address, URL or phone number validation.

In this article, we will examine how to create such custom fields. As an example, we'll pick the first use case and try to create a field type which takes the response of a REST endpoint as the possible values of a dropdown list.

A new field type was born: REST Select

The default Select field in Liferay allows content authors to pick a value from a predefined list of possible values for an article. This is great for simple purposes, but what if you want to dynamically populate this dropdown list with values from an external platform? Or if the values that should be listed depend on the user that requests them?

Meet the brand new REST Select field. This dropdown field allows you to configure a REST endpoint and how to map the JSON fields in the response onto the labels and values of the possible options.

Install the module

Perform the following actions to install the module in your Liferay installation:

  1. Clone https://github.com/limburgie/com.liferay.dynamic.data.mapping.field.extender and checkout the 7.x/field/ddm-rest-select branch.
  2. Build the project using Maven by executing mvn clean package.
  3. Move the resulting JAR (you can find it in the target folder) into the deploy folder of Liferay.
Define the field in a structure
  1. Create a new web content structure. 
  2. Drag the "REST Select" field type into the structure definition.
  3. Configure the field's endpoint and option mappings by selecting the field.

Apart from the default attributes like "Field Label" and "Required", notice there are 3 additional attributes to be configured. The first attribute should be filled with the URL of a REST endpoint. This should be an endpoint that returns a list of JSON objects. E.g. the endpoint http://localhost:8080/api/jsonws/country/get-countries (a built-in endpoint in Liferay) returns the following output:

With the two remaining attributes, you configure what should be respectively in the label and the value of the HTML <option> elements. E.g. in this case, if you pick the "nameCurrentValue" JSON attribute for the option label and the "a3" JSON attribute for the option value, this will produce the following HTML:

Create a new article using the structure

When creating a new web content article based on the structure you've just created, you're able to select a country from the dynamically loaded dropdown list!

Cool, now I want to create my own DDM field type! So... how?

In this part of the post, we'll explore how Liferay was extended to support the new REST Select field. Hopefully, this gives you enough insights to start working on your own custom DDM field type!

Disclaimer

It turned out to be quite a journey to create new DDM fields in Liferay, even in 7.x. You would expect that every field type is defined in its own OSGi module, but the woeful truth is that the definition and rendering of these fields is scattered throughout several Liferay modules in both client-side and server-side code. So the result is rather hacky to say the least.

Please only consider this solution if there is absolutely no other way!!

With that being said, do go on reading this article 

The code

The starting point is https://github.com/limburgie/com.liferay.dynamic.data.mapping.field.extender. This repository provides a skeleton project that can be extended to support new DDM field types. Each part that needs to be extended or implemented is marked with a //TODO comment. You can do a diff of this main branch with the 7.x/field/ddm-rest-select branch to see the different changes to provide your own implementation.

Recommendations
  • Make sure that ALL todos are configured. Forgetting to implement only one of them and it will not work and Liferay will give you no clue.
  • Make sure to start Liferay in developer mode -Dexternal-properties=portal-developer.properties to setenv.sh (Unix) or setenv.bat (Windows).
  • If your changes don't seem to be reflected, uninstall the module from the Gogo shell and then reinstall it again to clear any remaining state.
Conclusion

While it was a real challenge to create a custom DDM field, it IS possible and if you inject enough flexibility in your field, it can serve multiple purposes. Please send me your feedback on how you would do things differently or what field types you are missing at the moment in Liferay 7.x.

Thanks for reading!

Peter Mesotten 2018-07-13T06:19:00Z
Categories: CMS, ECM

The Essentials of CiviVolunteer - July 25th at 11 am PT / 12 pm MT / 2 pm ET

CiviCRM - Thu, 07/12/2018 - 15:45

Learn to use and effectively manage CiviVolunteer 2.0, a CiviCRM extension, in this two hour on-line training course taught by Cividesk.

Click here for more info about this July 25th session and to register. Class size is kept small to allow time for questions, so register soon!

Please email Cividesk training manager, Susan Engeman with any questions. 

 

 

Categories: CRM

eBay “Product Based Listings” Started May 2018 - Does Your Product Listing Software Fit The Bill?

PrestaShop - Wed, 07/11/2018 - 10:11
What is The New eBay Product-Based Shopping Experience?
Categories: E-commerce

Unlocking data’s potential: New survey uncovers the hurdles to success

SnapLogic - Wed, 07/11/2018 - 08:00

From opening new revenue streams to launching new products and hitting the gas on productivity, becoming a data-driven company is the holy grail of modern businesses. Many have even called data “the new oil,” an oft-used term that’s become a cliche to some but is true nonetheless. But for all the potential value data holds,[...] Read the full article here.

The post Unlocking data’s potential: New survey uncovers the hurdles to success appeared first on SnapLogic.

Categories: ETL

KNIME Analytics Platform 3.6 is now available!

Knime - Wed, 07/11/2018 - 04:58
KNIME Analytics Platform 3.6 is now available! oyasnev Wed, 07/11/2018 - 11:58

We’ve just released the latest version of KNIME Analytics Platform and here’s a quick summary of what’s new.

There are enhancements to our deep learning integrations, added support for H2O Sparkling Water, and many utility nodes including a multi column dictionary tagger and a numeric outlier node, a powerful multi column expression node, nodes to handle your Git repositories, and many more. Along with this, many UI improvements have been made - including connecting or unconnecting nodes with keyboard shortcuts, zooming, and easy node replacement.

One neat little addition is a node that allows you to create a local, fully functional big data environment from within a KNIME workflow, including Apache Spark, Apache Hive, and Apache Hadoop. You can now try out the Big Data Extensions without the need for an Apache Hadoop cluster. Additionally, we added support for Apache Spark 2.3.

On the KNIME Server side, we’ve added a number of new features as well, most notably an option that makes it easier for IT operations to centrally manage KNIME Analytics Platform preferences.

One of the highlights of this release is the new KNIME Workflow Hub - a place for the community to share workflows and browse all our existing example workflows. We have also added the ability to comment and rate workflows making it easier to find the highlights.

All the release details are summarized here, as well as in the more detailed changelog. We’ve also put a video together, highlighting lots of the new features. But really, the best way to check it out is by trying it for yourself. Open KNIME and go to File -> Update KNIME to get the latest version, or download and install it from here.

Don't forget to mark your calendars for the KNIME Fall Summit in Austin, Texas from November 6-9, 2018 - it will be a good chance to see some of these new features in action!

Have a great summer!

 

News date Wed, 07/11/2018 - 14:00
Categories: BI

A little preparation helps good organizations be great clients

CiviCRM - Tue, 07/10/2018 - 17:02

Last year at #17NTC, I met a consultant who reminded me of the dreaded phone call, “Hey, a colleague referred me to you and I want to get a quote for moving to CiviCRM.” Those phone calls are often challenging, as the client hasn’t done much in the way of organizing their needs and helping us help them.

Categories: CRM

Serving tomorrow’s blockchain ecosystems

SnapLogic - Tue, 07/10/2018 - 12:09

In industry after industry, discussions are currently underway about how to leverage blockchain technology to create a secure decentralized platform in which data from multiple parties across an industry’s value chain is gathered, registered, and stored for processing and other transactional purposes. While many companies are examining the use of blockchain technology on an individual[...] Read the full article here.

The post Serving tomorrow’s blockchain ecosystems appeared first on SnapLogic.

Categories: ETL

Backup failure on community.liferay.com

Liferay - Tue, 07/10/2018 - 09:01
What happened?

Today at 12:13pm WeDeploy, our hosting solution, started a maintenance process. As a normal procedure some services were restarted. 

After the restart, all services from community.liferay.com were up and running, but we noticed that some blog and forums posts were missing. We checked our list of backups and we noticed that the last backup was on July 4th.

We continued to investigate and discovered that the backup service, which was supposed to run every 3 hours, had stopped on July 4th at 7:50am. The reason for that was because there was not enough memory on the backup service and since then no backups were performed.

This was an isolated problem on the backup service inside of the community site project, all other WeDeploy clients were not affected.

 

What are we doing to avoid that in the future?

From the Community side, we're going to add another layer of backup, increase the allocated memory/cpu for that service, and proactively monitor its health. We will create another environment with scheduled recoveries in order to help us identify those situations faster. We will also improve the backup script to notify us when a backup doesn't finish.

From the WeDeploy side, we're elaborating a built-in Backup/Restore functionality specifically designed for Liferay services. It will include scheduled backups of the database and doclib, custom options for backup frequency and retention, and controls for manual backups and recoveries.

Besides that, we're implementing a feature called Alerts, which will notify users when they are close to reach their CPU and Memory limits, among other things.

 

Conclusion

We appreciate your feedback and will continue to invest our best resources in making our services better each day. Thank you again for your patience.

Zeno Rocha 2018-07-10T14:01:00Z
Categories: CMS, ECM
Syndicate content