Jive Apps Framework FAQ

Version 2

    General

    What Is a Jive App?

    The app framework provides an easy-to-use, powerful platform for building enterprise apps within Jive.

     

    Here are some key elements of a Jive app:

    • Interaction with the Jive UI - In Jive 5.0, Jive apps have a very targeted interaction with the Jive UI. Each user has an apps dashboard, analogous to the current "Your View" page in Jive SBS 4.5. Each app will have a standard view where it resides alongside other apps in the dashboard, and a maximized view where it occupies most of the screen real-estate with just a layer of Jive chrome surrounding it to facilitate navigation back and forth.
    • Access to Jive functionality - Each app has read/write access to Jive objects such as blogs, discussions, documents, and activity stream via a REST API. This access opens up a new world of possibilities for fresh interactions with Jive data that aren't afforded by the Jive native UI
    • Access to external data - The Jive Application Framework makes it easy for to integrate data from external systems into an app. This data could come from other enterprise systems (Documentum, SAP, JIRA, SharePoint, SalesForce.com, etc.). It could also come from a development server out in the cloud, or  from popular consumer-based services in the cloud (Google, LinkedIn, Twitter, Facebook, Flickr, etc.).
    • Installation model - Technically speaking, Jive Apps are not much more than a standard OpenSocial Gadget. There are no classes to compile or server-side code to deploy. All interactions with the Jive back-end are through versioned webservices. Thus, Jive Apps are extraordinarily upgrade-safe.
    • Licensing - Jive apps are managed via the Jive Apps Market. The Apps Market provides developers with the tools to monetize their efforts and previously unavailable access to a consumer base. Included with licensing is a robust reporting and audit capability. Now Jive instance administrators, Jive App developers, and end users have a highly granular view of who is licensed to use what, which apps call which services, and how much data is being used/stored by specific apps.
    • Developer Support - Jive provides an extensive Software Development Kit (SDK) complete with a sandbox environment, comprehensive documentation and a Developer Community overseen by a Developer Evangelist.

    How is an App different from a Plugin?

    To highlight the difference between and App and a plugin, it is instructive to consider the very same elements that define an app above:

    • Interaction with the Jive UI - Plugins are unrestricted in their integration with the Jive UI. This is both a good and a bad thing. On the positive, it makes plugins incredibly powerful in their ability to manipulate and augment the Jive native UI. However, with great power comes great responsibility. In the case of Jive plugins, this responsibility takes the form of having to invest significant effort in upgrades when the product changes underlying components that a plugin depends on. This friction creates a support burden, and also prevents clients from taking advantage of our roadmap by staying up to date with the latest release of Jive SBS.
    • Access to Jive functionality - Plugins are unrestricted in their interaction with core Jive functionality. The same rules apply - the more you customize, the higher the cost of upgrades and support.
    • Access to external data - Jive Plugins have unrestricted access to external data, but it is incumbent on the developer to define the interface and implement the interactions. The Jive App Framework provides extensive standards-based plumbing to make this task much easier than it is with plugins
    • Installation Model - Jive Plugins must be installed by an app administrator. They require a restart to take effect. Jive apps on the other hand, can be installed with a few clicks by the end user, and are ready to start using right away. Updates can also happen on the fly.
    • Licensing - Plugins have no concept of licensing. There is no support whatsoever if a developer should want to monetize their work in any way. Jive Apps were designed with licensing and developer profit in mind.

    Here is a summary of the differences between the Jive Application Framework and the Jive Plugin Framework:

     

    FeatureApp FrameworkPlugin Framework
    Upgrade-friendly?YesNo
    UI interactionsDashboards onlyUnlimited
    Access to Jive functionalityCRUD operations via REST & JavaScript API'sUnlimited
    Access to external dataVery easy (via Jive App Gateway & Jive Connects)More difficult
    Installation modelDriven by end user, very lightweightMore difficult - requires admin and restart
    LicensingVia Jive Apps MarketNone
    Developer supportExtensiveMinimal

     

    Can Jive Apps & Plugins coexist?

    Yes, they can. In fact, we are looking at providing a mechanism for plugins to register as OpenSocial extensions, so that an app can request whether a given Jive instance has a particular plugin installed. This would be useful in a situation where a developer wanted to expose a custom webservice via a Jive Plugin for use by an app. However, plugins are not distributed by the apps market, so if a developer wishes to distribute an app that requires a plugin for optimum functionality, she must ensure the app fails gracefully when the plugin is absent, and is still valuable without the plugin.

    OpenSocial Support

    What OpenSocial Container does Jive use?

    We use the Shindig OpenSocial Container from the Apache Foundation.

     

    What OpenSocial Extensions does Jive define?

     

    Features:

     

    • jquery-1.4.2: - The JQuery 1.4.2 library. Simplifies JavaScript development. Used by the jive-connects and jive-openclient features.
    • jive-namespace: Internal. Adds the jive.namespace() function for creating additional namespaces under jive.*
    • jive-connects: The JavaScript API for Jive Connects. Dependencies: jquery-1.4.2, jive-namespace
    • jive-openclient: The JavaScript API for Jive OpenClient. Dependencies: jquery-1.4.2, jive-namespace
    • jive-storage: The JavaScript API for binary storage. Adds functionality for uploading files via a dialog box.
    Views:
    • home: small format, rendered in dashboard alongside other apps
    • canvas: full screen view, rendered full screen below main Jive navigation
    • subviews: additional home and canvas views can be namespacing them under home.* or canvas.*. Example: canvas.myview
    • preferences: if present this view will be used to render a custom preferences UI, instead of the standard generated UI
    • admin: if present this view will be used to render a custom admin preferences UI
    • about: a small format info page that describes the app

    Data Access

    Can my home server communicate with my app or with the Jive server?

    No. For the sake of security, we do not allow "reverse phone home" requests at this time. However, we do provide a push capability for activity updates via the Jive Application Gateway. Your home server can invoke methods on the Gateway which will queue up your activity on the Gateway. Each Jive instance in turn will poll the gateway for the latest updates.

     

    How can I publish updates to the Activity Stream?

    There are two methods for publishing activity. The app itself can simply use the OpenSocial API to add activity to the stream. But if you have a home server in the cloud, and your targeted Jive instance is behind a firewall, you can push activity updates to individual Jive instances via the Secure App Gateway.