When you start the formal process of submitting your app to the Marketplace, in addition to uploading your app’s files you’ll need to answer a host of important questions. For example, you’ll need to clarify who owns the app, specify pricing for the app, define its licensing scheme (if it’s a paid app), associate a person or company as its owner and maintainer, and specify the versions of Liferay that the app supports. Your answers to these questions will also help you determine whether you’ll need to package multiple versions of the app. This tutorial prepares you by explaining the questions and ways you might answer them.
Selling Your App or Making it Free
Do you want to sell your app on the Marketplace? Or do you want to freely share it with anyone on the Marketplace? It’s up to you. Most of the content that follows describes options for paid apps (apps you sell).
If you’re selling your app, you must publish using a Paid App Account. You must also specify licensing, a price structure, and regional availability for your paid apps.
Importantly, you can’t change the app from free to paid or from paid to free once the app is published to the Marketplace. In order to offer the app in the other license type, you must submit another app under a different name (title). If you wish to have both free and paid licenses for your app, you must submit the app under one name for free licenses and submit it under another name for paid licenses. Make sure to select the license type (i.e., free or paid) that’s best for your app.
Have you decided who’s going to be listed as the app’s author/owner? Have you decided who’s going to manage the app once it’s on the Marketplace? App ownership options are explained next.
Publishing as an Individual or on Behalf of a Company
You can publish an app as yourself (an individual) or on behalf of a company. This determines the who is shown as the app’s author and owner. Your selection also determines who can access the app behind the scenes, once it’s published.
The default option is publishing on behalf of yourself. If you go with this option, your name is shown as the app’s author/owner in the Marketplace. The term personal app refers to an app published by an individual. That individual is the only one who can manage the personal app. Managing an app includes such duties as adding new releases to it, adding new versions of it, and editing its details.
Publishing on behalf of a company effectively hands the keys over to the company’s administrators. The app shows on the company’s Marketplace app development page and in the company’s list of apps on the company’s public profile page. Company admins have the same permission that an individual author has to manage the app (add new releases, new versions, edit details, etc). The company’s name alone is shown as the app’s author/owner.
You can register yourself as a Marketplace Developer or one of your company’s administrators can register the company as a Marketplace Developer. You can either register for a Free Basic Account or register for a Paid App Developer Account. A Paid App Developer Account lets you submit paid apps to the Liferay Marketplace for sale to customers globally. It enables you to monetize the benefits of the Marketplace and the benefits of the Liferay distribution channel. The best part is, you can upgrade to a Paid App Developer Account if and when you want to submit a paid app to the Marketplace! Here’s a comparison of the Marketplace developer account options:
Free Basic Account
- No cost to register as a Marketplace developer
- Distribute free apps on the Marketplace
- Access to developer-only resources (e.g., Developer Portal, Liferay IDE, Liferay Developer License)
- Participate in Marketplace promotions
Converting from Basic-to-Paid
When you're ready to submit a paid app to the Marketplace:
- Agree to the Developer Agreement
- Pay $99 annual fee
- Submit relevant tax documents (eg., W-9, W-8BEN) to receive payments
- Enter PayPal info to receive payments (PayPal account must be a Verified Business Account)
Paid App Developer Account
- Upgrade when you're ready: only pay annual fee at time of paid app submission
- Offer paid licensing/support for your apps
- Receive 80% of app sales proceeds
- Access to detailed transaction history
- Paid apps customer management
- All the benefits of a Basic Developer Account
Now that you’ve determined your app’s owner and you’ve registered an account to manage the app, you can learn about licensing options for paid apps.
Licensing and Pricing Your App
You have significant control over how to price your app. You choose the license term (perpetual vs. annual), choose the license type (standard vs. developer), define a pricing structure (pricing and bundled discounting based on a license unit), and specify regional availability. Even after your app is on the Marketplace, you can tweak general pricing or modify regional pricing.
Determining a License Term
Here are the license term options:
Perpetual license: does not expire.
Non-perpetual license: must be renewed annually.
Importantly, you can’t change your app’s license terms once the app is approved. In order to release an approved app under a different license term you must submit another app under a new name (title). So make sure you think through the license term that makes the most sense for your app.
Determining License Type and License Unit Pricing
Licenses are set to run on a permitted number of Instance Units (defined as a single installation of the Liferay Portal, which corresponds to one (1) Liferay Portal
.war file). You can create tiers of bundled options to accommodate the number of Instance Units to offer to customers. You can also offer a discounted price for a bundle of multiple Instance Units.
There are two types of licenses that you can offer for your app: standard licenses and developer licenses. Standard licenses are intended for production server environments. Developer licenses are limited to 10 unique IP addresses and, therefore, should not be used for full-scale production deployments.
You can also offer subscription services or 30-day trials. Support, maintenance, and updates should comprise subscription services.
Depending on how you decide to license your app, you have a few options to consider with regard to subscription services:
If you’re offering a perpetual license…
You can offer annually renewable subscription services. During the app submission process if you choose to offer subscription services, you’re asked to price subscription services on a per Instance Unit per year basis. The first year of subscription services is included with a perpetual license. If a customer wants to continue receiving services after the first year, the customer must renew subscription services at the price you designate. Customers are entitled to support, maintenance, and updates as long as they continue to annually renew subscription services.
If you choose not to offer subscription services, customers are entitled to only app updates, if and when updates become available. This type of one-time, upfront payment model may work well for less complex apps and themes/templates.
If you’re offering a non-perpetual (annual/renewable) license…
You can offer annually renewable subscription services. During the app submission process if you choose to offer subscription services, you should build the price of subscription services into the annual price of the non-perpetual license; please take this into account as you price non-perpetual licenses. In effect, the customer pays one price annually for both the app license and subscription services. Customers is entitled to support, maintenance, and updates as long as they continue to renew their non-perpetual license.
If you choose not to offer subscription services, customers are entitled to only app updates if and when updates become available. They can receive updates as long as they continue to have valid non-perpetual licenses.
Setting Prices for License Options by Region
You can specify countries your app will be available in and the app’s price in in each of those countries. You can make it as simple (single price offered globally) or as granular (different price in each country offered) as you want.
Choose the currency to use with your pricing options. Decide on the renewal cost for any support services you offer. The support services price is per instance, so if you specify $100 USD and the customer is running 10 instances, their annual support services renewal cost will be $1000. Note: This only applies to perpetual licenses. For non-perpetual licenses, you should include any support services cost in the annual license price.
Even after an app has been approved, you can change the currency type and currency price of its license bundles, and you can modify regional availability of license bundles.
Although Liferay Marketplace supports major currencies and a broad list of countries, not all currencies and countries are currently available. Additional currencies and countries may become available at a later time.
Considering the Liferay Marketplace Fee
By selling your paid apps on the Liferay Marketplace, you’re agreeing to share app sales revenue with Liferay. For each app sale, you receive 80% of the sales proceeds and Liferay receives 20% of the sales proceeds. We believe this type of fee structure is extremely competitive compared to other app marketplaces. Liferay uses its share of app sale proceeds to:
- Operate and improve the Liferay Marketplace.
- Provide developer services, such as payment processing, license tracking, and performance metrics.
- Continue investing in and growing the Liferay ecosystem.
Comparison of Liferay’s App Revenue Sharing with that of Other App Marketplaces
|Share to Developer|
|Apple App Store||70%|
As you can see, Liferay’s fee is reasonable.
You need a valid Paypal account to receive payment; you’re asked to provide this info when registering for or converting to a Paid App Developer Account. Payments are issued no later than 90 days after the transaction.
Now that you’ve decided on licensing options and pricing, you can concentrate on what versions of Liferay your app will run on.
Determining Editions and Versions of Liferay to Target
Of course, targeting the widest possible range of Liferay editions and versions in an app typically draws larger audiences to the app. And there may be certain features in these editions and versions that you want to take advantage of. In your app’s plugin packaging properties, you specify packaging directives to indicate the editions the app supports and the version that the app supports. To ensure the widest audience for your app, we encourage you to make your app compatible with both Liferay Community Edition (CE) and Liferay Enterprise Edition (EE).
You can prepare a set of app files (including its
liferay-plugin-package.properties file) for each version of Liferay you want to support. When uploading your app, you can specify which versions of Liferay your app is compatible with and you can appropriately upload the sets of app files that are designed for those different versions. The next article in this guide explains how to go about specifying packaging directives.
Note that apps on the Liferay Marketplace must be designed for Liferay 6.1 or later. That’s not to say that they can’t work with prior versions. However, only Liferay 6.1 and later versions support installing apps directly from the Marketplace and provide safeguards against malicious apps. If you want to use an app with an earlier version of Liferay, make sure that version of Liferay provides what your app needs from Liferay.
Lastly, you should determine a versioning scheme for your app. How will you refer to the first version of your app, the second version, and so on.
Decide on a Versioning Scheme
A version of an app represents the functionality of the app at a given point in time. When you first create an app, you give it an initial version (e.g.,
1.0). On updating the app, you increment its version (e.g., from
1.1), and you upload new files representing that version of the app. In some cases, you specify additional qualifiers in order to convey a special meaning. For example, you may declare that the version of your app is always in x.y.z format (where you’ve clearly defined the significance of x, y, and z). Liferay Portal versions and official Liferay app versions use this format.
In any case, you’re free to your app’s assign version designators any way you like. We recommend that you stick to a well known and easily understandable format, such as
1.2, and so on. Although you may want to include alphabetical characters (e.g.,
1.0 Beta 2 or
6.3 Patch 123235-01), we discourage it, as such characters may confuse customers as to how your app’s versions relate to one another.
Keep in mind that the releases of Liferay with which your app works must be specified using Liferay’s versioning scheme, as explained in Understanding Liferay’s Releases. See the later section Specify App Packaging Directives for details on specifying the releases of Liferay for which your app is designed.
Congratulations on coming up with a sound game plan for your app! Next, you should read the next article to learn how to prepare your app for publishing.