留言板

UPDATE: Marketplace App Approvals

thumbnail
James Falkner,修改在11 年前。

UPDATE: Marketplace App Approvals

Liferay Legend 帖子: 1399 加入日期: 10-9-17 最近的帖子
Hello Marketplace Developers!

Thanks to many of you for submitting your apps to the Liferay Marketplace. Back in November, when apps began rolling in, we noticed several unexpected things about them that would result in confusion in the future, and several things that could be improved in our internal workflow for approvals. We decided to stop the approval process for a while, and revise the policies and procedures to ensure a smooth transition. I'm happy to report that we have now sorted these issues out, and are actively reviewing (and hopefully approving) apps.

The following policies now apply to all app submissions going forward. You should familiarize yourself with the documentation for an overall guide to developing and submitting apps. This documentation is in the process of being revised to incorporate these new policies.

  • Your app must have at least an English description. If you click the "Localized" checkbox you can submit descriptions for the other supported languages on liferay.com. Descriptions with poor grammar or other problems will need to be revised. Note that if you are logged into liferay.com using some other supported language, then the description you enter will by default be assumed to be in that language. You will need to click the "Localized" checkbox and switch to English to supply an English description.
  • Your app must have at least one screenshot. If your app has no visible UI, you must still submit some kind of screenshot (for example, check out the screenshots for this app).
  • The version specification in each embedded WAR must be terminated with a version using the + symbol. This ensures that your app will be deployable onto future versions of Liferay (but does not guarantee your app will work in future versions). So, 6.1.1 will not work, but 6.1.1+ will work. In most cases, as of 6.1.1, it is best to specify liferay-versions=6.1.1+ . This will guarantee your app is deployable onto Liferay 6.1 CE GA2 and later (including EE).
  • You should not use overlapping version specifications, for example, do not use 6.1.1+,6.1.20+ . The documentation was not clear on this, and even used this as an example, but for consistency (and to reinforce the notion that apps developed for CE should be compatible with EE), you should simply use 6.1.1+ to capture all of those versions. In the future, if you discover that your app does not work with a particular version of Liferay, you can revise your versioning, but for now, we ask that you use 6.1.1+ for CE/EE apps, and 6.1.20+ for EE-only apps.
  • If you use something other than the above for your version specification, be sure to include a description of it in the description of your app, or email marketplace-dev@liferay.com with some justification of your unusual versioning scheme, to aid in the app's approval. If your app is designed for EE only, you can use something like 6.1.20+. However, this will restrict your app only to EE customers.
  • You must include a link for the following Metadata: "Website", "Support". These are currently "optional" in the Marketplace UI but will become required shortly.
  • If your app is to be professionally offered/supported, you must submit the app on behalf of a registered company. If the nature of the app implies it is authored/supported by a company or non-profit organization, but is submitted by an individual with no explanation, the app will likely be rejected. To register your company, visit the Marketplace homepage and click on "Become a Developer" on the left.
  • Be sure to choose a relatively short name for your app. "App that clears the database cache, expires web contents, and clears the in-memory cache" is not a good title. "ClearCache" is much better and catchier!
  • The use of the Liferay Security Manager (aka PACL) is required (by putting security-manager-enabled=true in your liferay-plugin-package.properties file). However, it is not enough to test your app with PACL disabled, then at the last minute, with no further testing, enable it and submit your app. We noticed many apps that were submitted in this way, and they have been rejected as most apps will not work without a tested access control list. See the Liferay Security Manager documentation for details on how to enable this properly. If you believe your app does indeed work with simply PACL turned on, with no other access control specifiers, be sure to email marketplace-dev@liferay.com and let us know this.
  • Be sure your screenshots and icons adhere to the requirements. Also, be sure you do not violate the copyright or trademark restrictions of other apps. For example, for a SharePoint-related app, do not use Microsoft's trademarked logo in your logo.


If you submit an app, and it is rejected/denied, here's the procedure to correct the app:
  • Navigate to your personal profile's "home" page (or your company's "home" page if you submitted on behalf of a company)
  • Click on "App Manager"
  • Click on the "Apps" tab
  • Click on the App in question, and you will be taken to the App Summary screen. At the bottom will be a note with the reason for rejection.
  • Click on "Edit", to step through the same screens you originally stepped through. This will allow you to make corrections on each screen.
  • If you need to revise the WAR files, skip to the screen listing the WAR files of your app. Delete the old ones by clicking "Delete" next to the ones you need to delete. Make revisions to your WAR files locally, then re-upload them. Proceed to the final screen and click "Submit for Review". Your app is now re-submitted.


We are very excited to see the Marketplace flourish with high quality apps, and to those that have submitted thus far, I'd like to personally thank you for being an early adopter, apologize for the rough start, and ask that you keep at it - your apps should begin appearing on the Marketplace as we ramp up the approvals pipeline!
thumbnail
Gaurav Jain,修改在11 年前。

RE: UPDATE: Marketplace App Approvals

Regular Member 帖子: 145 加入日期: 11-1-31 最近的帖子
Wow that's great!
thumbnail
Florencia Gadea,修改在11 年前。

RE: UPDATE: Marketplace App Approvals

Regular Member 帖子: 146 加入日期: 12-3-27 最近的帖子
Great news!!

Could you please update this post or create new posts when a new app has been approved and uploaded in the Marketplace?
I would like to take a look at their PACL configuration.

What will happen with the bugs that the security manager has and require a core fix? Like this one: http://www.liferay.com/community/forums/-/message_boards/view_message/19023969#_19_message_19023969

Do we have to wait for the next Liferay's release?

Regards,

Flor.
thumbnail
Juan Gonzalez P,修改在11 年前。

RE: UPDATE: Marketplace App Approvals

Liferay Legend 帖子: 3089 加入日期: 08-10-28 最近的帖子
Florencia,

I am planning to commit another patches for Community Patcher's version:

http://www.liferay.com/community/forums/-/message_boards/message/18969121

And was thinking about including those involving PACL.

Just stay tunned...
Mohamed Rizwanuzaman,修改在11 年前。

RE: UPDATE: Marketplace App Approvals

New Member 帖子: 20 加入日期: 09-12-17 最近的帖子
HI james,
i tried to upload an app to market place. but its shows me a "No compatible liferay version found" error message.
i have added the below lines in liferay-plugin-package.properties file

name=multilingual
module-group-id=liferay
module-incremental-version=1
tags=
short-description=
change-log=
page-url=http://www.liferay.com
author=Mohamed Rizwan
licenses=LGPL
security-manager-enabled=true
liferay-versions=6.1.1+

Please let me know what could be the issue.

Regards,
Rizwan
thumbnail
James Falkner,修改在11 年前。

RE: UPDATE: Marketplace App Approvals

Liferay Legend 帖子: 1399 加入日期: 10-9-17 最近的帖子
Mohamed Rizwanuzaman:
HI james,
i tried to upload an app to market place. but its shows me a "No compatible liferay version found" error message.
i have added the below lines in liferay-plugin-package.properties file

name=multilingual
module-group-id=liferay
module-incremental-version=1
tags=
short-description=
change-log=
page-url=http://www.liferay.com
author=Mohamed Rizwan
licenses=LGPL
security-manager-enabled=true
liferay-versions=6.1.1+

Please let me know what could be the issue.

Regards,
Rizwan


Hmm.. everything looks correct. Make sure your WAR filename is correct. The documentation is in the process of being updated, but here are the WAR file requirements:

- WARs must contain a WEB-INF/liferay-plugin-package.properties file.

- WARs must not contain any WEB-INF/liferay-plugin-package.xml file.

- WAR file names must not contain any commas.

- WAR file names must conform to the following naming convention:

*context_name*-*plugin_type*-A.B.C.D.war

Where:

- *context_name* - Alpha-numeric (including `-` and `_`) short name of your app. This name will be used as the deployment context, and should not duplicate any other app's context (you will see a warning if you use a context name of any other app on the Marketplace).

- *plugin_type* - one of the following: `ext`, `hook`, `layouttpl`, `portlet`, `theme`, or `web`.

- A.B.C.D - The version of your WAR file. There must be 4 digits.

- Example: myapp-portlet-1.0.0.0.war
Mohamed Rizwanuzaman,修改在11 年前。

RE: UPDATE: Marketplace App Approvals

New Member 帖子: 20 加入日期: 09-12-17 最近的帖子
Thanks James, I just enabled the Security PACL. so i have added the set bean ,get bean service enable properties. while i accessing the portlet , i have getting below error

java.lang.SecurityException: Attempted to access declared members
	at com.liferay.portal.security.pacl.checker.BaseChecker.throwSecurityException(BaseChecker.java:259)
	at com.liferay.portal.security.pacl.checker.RuntimeChecker.checkPermission(RuntimeChecker.java:71)
	at com.liferay.portal.security.pacl.ActivePACLPolicy.checkPermission(ActivePACLPolicy.java:55)
	at com.liferay.portal.security.lang.PortalSecurityManager.checkPermission(PortalSecurityManager.java:103)
	at com.liferay.portal.security.lang.PortalSecurityManager.checkPermission(PortalSecurityManager.java:74)
	at java.lang.SecurityManager.checkMemberAccess(SecurityManager.java:1662)
	at java.lang.Class.checkMemberAccess(Class.java:2157)
	at java.lang.Class.getDeclaredField(Class.java:1879)
	at com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator.getDeclaredField(ReflectionNavigator.java:243)
	at com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator.getDeclaredField(ReflectionNavigator.java:47)
	at com.sun.xml.internal.bind.v2.model.impl.RegistryInfoImpl.<init>(RegistryInfoImpl.java:70)
	at com.sun.xml.internal.bind.v2.model.impl.ModelBuilder.addRegistry(ModelBuilder.java:346)
	at com.sun.xml.internal.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:316)
	at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:430)
	at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:277)
	at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1100)
	at com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:143)
	at com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:110)
	at com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:191)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:128)
	at javax.xml.bind.ContextFinder.find(ContextFinder.java:290)
	at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:372)
	at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:337)
	at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:244)
	at com.msat.portlet.multilingual.MultilingualContent.addUpdateContent(MultilingualContent.java:240)
</init></init>
]
because i tried to use the Jaxb in my class

JAXBContext context = JAXBContext.newInstance("com.msat.xmlscheme.beans");

i have note those class in my properties
security-manager-set-bean-property=\
javax.xml.bind.JAXBContext,\
com.msat.xmlscheme.beans.Root,\
com.msat.xmlscheme.beans.Root.Language,\
com.msat.xmlscheme.beans.Root.Language.Content.Field
security-manager-get-bean-property=\
javax.xml.bind.JAXBContext,\
com.msat.xmlscheme.beans.Root,\
com.msat.xmlscheme.beans.Root.Language,\
com.msat.xmlscheme.beans.Root.Language.Content.Field

but i couldn't make it out. Please help me to sort out this.

Regards,
Rizwan
thumbnail
James Falkner,修改在11 年前。

RE: UPDATE: Marketplace App Approvals

Liferay Legend 帖子: 1399 加入日期: 10-9-17 最近的帖子
Mohamed Rizwanuzaman:
Thanks James, I just enabled the Security PACL. so i have added the set bean ,get bean service enable properties. while i accessing the portlet , i have getting below error

java.lang.SecurityException: Attempted to access declared members
	at com.liferay.portal.security.pacl.checker.BaseChecker.throwSecurityException(BaseChecker.java:259)
	at com.liferay.portal.security.pacl.checker.RuntimeChecker.checkPermission(RuntimeChecker.java:71)
	at com.liferay.portal.security.pacl.ActivePACLPolicy.checkPermission(ActivePACLPolicy.java:55)
...
]
because i tried to use the Jaxb in my class

JAXBContext context = JAXBContext.newInstance("com.msat.xmlscheme.beans");



This is due to reflection being used by JAXB, and PACL not knowing how to deal with it. See this thread for details, but the short answer is it's broken and will be fixed in the upcoming GA3 release.