You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by Martin Webb <ma...@gmail.com> on 2008/03/17 13:28:27 UTC
Re: svn commit: r618495 - /incubator/shindig/trunk/shindig.html
Rather late reply - but the site refers to:
http://wiki.corp.google.com/twiki/bin/view/Main/ASF
Likewise so does: http://incubator.apache.org/shindig/#tab-contribute
On Mon, Feb 4, 2008 at 11:55 PM, <do...@apache.org> wrote:
> Author: doll
> Date: Mon Feb 4 15:55:34 2008
> New Revision: 618495
>
> URL: http://svn.apache.org/viewvc?rev=618495&view=rev
> Log:
> The initial version of a slightly better shindig website. Feel free to
> make any changes to this site as it is by no means perfect
>
> Added:
> incubator/shindig/trunk/shindig.html
>
> Added: incubator/shindig/trunk/shindig.html
> URL:
> http://svn.apache.org/viewvc/incubator/shindig/trunk/shindig.html?rev=618495&view=auto
>
> ==============================================================================
> --- incubator/shindig/trunk/shindig.html (added)
> +++ incubator/shindig/trunk/shindig.html Mon Feb 4 15:55:34 2008
> @@ -0,0 +1,448 @@
> +<html><head><title>Shindig - an Apache incubator project for OpenSocial
> and gadgets</title>
> +
> +
> +<style type="text/css">
> + body {
> + font-family: arial, sans-serif;
> + margin: 2em 5em;
> + padding: 0.5em;
> + border: 1px solid lightgrey;
> + }
> +
> + .tabbar {
> + border-top: 5px solid lightgrey;
> + clear: both;
> + }
> +
> + .tab {
> + float: left;
> + padding: .1em 1em;
> + background-color: #3366EE;
> + color: white;
> + font-weight: bold;
> + font-size: .9em;
> + }
> +
> + .selectedTab {
> + background-color: lightgrey;
> + color: black;
> + }
> +
> + .content {
> + clear:both;
> + padding-top: 0.5em;
> + }
> +
> + .header {
> + font-size: 1.5em;
> + font-weight: bold;
> + padding-bottom: .5em;
> + }
> +
> + .smaller {
> + font-size: smaller;
> + }
> +</style>
> +<script type="text/javascript">
> + var APPLICATION_TABS = ['home', 'download', 'building', 'contribute',
> 'support'];
> + var tabAnchorPrefix = "#tab-";
> +
> + function changeActiveTab(activeTab, updateAnchor) {
> + if (activeTab == undefined)
> + return false;
> + if (updateAnchor)
> + location.href = tabAnchorPrefix + activeTab.id;
> + for (var idx in APPLICATION_TABS) {
> + var tab = APPLICATION_TABS[idx];
> + if (tab == activeTab.id) {
> + document.getElementById(tab).className = 'tab selectedTab';
> + document.getElementById(tab + 'Div').style.display = 'block';
> + } else {
> + document.getElementById(tab).className = 'tab';
> + document.getElementById(tab + 'Div').style.display = 'none';
> + }
> + }
> + }
> +
> + function activeTabFromAnchor() {
> + // first check for match to tab name
> + var tabAnchorRE = new RegExp(tabAnchorPrefix + "(.*)$", "g");
> + var tabAnchor = tabAnchorRE.exec(location.href);
> + if (tabAnchor && tabAnchor.length == 2) {
> + var tabAnchorObj = document.getElementById(tabAnchor[1]);
> + if (tabAnchorObj != undefined) {
> + changeActiveTab(tabAnchorObj, false);
> + return;
> + }
> + }
> + // anchor might be inside hidden tab, if so then activate tab
> + var anchorIdx = location.href.indexOf("#");
> + if (anchorIdx == -1)
> + return;
> + var urlAnchor = location.href.substr(anchorIdx + 1);
> + var anchors = document.getElementsByTagName("a");
> + for (var idx in anchors) {
> + var anchor = anchors[idx];
> + if (anchor.name == urlAnchor) {
> + // found anchor, now find parent tab
> + var parent = anchor;
> + do {
> + parent = parent.parentNode;
> + } while (parent && ! /.*Div$/.test(parent.id))
> + if (! parent)
> + return; // failed
> + var divMatch = /^(.*)Div$/g.exec(parent.id);
> + if (! divMatch || divMatch.length != 2)
> + return; // failed
> + var tabAnchorObj = document.getElementById(divMatch[1]);
> + if (tabAnchorObj == undefined)
> + return; // failed
> + changeActiveTab(tabAnchorObj, false); //SUCCESS!
> + // need to set location again as browser can't navigate
> + // to anchor in hidden tab
> + location.href = location.href;
> + }
> + }
> + }
> +</script></head><body onload="activeTabFromAnchor();">
> +
> + <table border="0" cellspacing="0" width="100%">
> + <tbody><tr><!-- SITE BANNER AND PROJECT IMAGE -->
> + <td align="left" valign="top">
> +
> +<a href="http://www.apache.org/"><img src="
> http://incubator.apache.org/images/asf_logo_wide.gif" alt="The Apache
> Software Foundation" border="0"></a>
> +</td>
> +<td align="right">
> +<a href="http://incubator.apache.org/"><img src="
> http://incubator.apache.org/images/apache-incubator-logo.png" alt="Apache
> Incubator" border="0"></a>
> +</td>
> + </tr>
> +<tr><td> </td></tr>
> + </tbody></table>
> +
> +
> +<div class="header">Shindig - <span class="smaller"> an Apache incubator
> project for OpenSocial and gadgets</span></div>
> +<div class="tab selectedTab" onclick="changeActiveTab(this, true);"
> style="cursor: pointer;" id="home">Home</div>
> +
> +<div class="tab" onclick="changeActiveTab(this, true);" style="cursor:
> pointer;" id="download">Download</div>
> +<div class="tab" onclick="changeActiveTab(this, true);" style="cursor:
> pointer;" id="building">Building Shindig</div>
> +<div class="tab" onclick="changeActiveTab(this, true);" style="cursor:
> pointer;" id="contribute">Contribute</div>
> +<div class="tab" onclick="changeActiveTab(this, true);" style="cursor:
> pointer;" id="support">Support</div>
> +<div class="tabbar"></div>
> +
> +<div class="content" id="homeDiv" style="display: block;">
> + <h3>What is Shindig?</h3>
> + <p>Shindig is a new project in the Apache Software Foundation incubator
> and is an open source implementation of the <a href="
> http://code.google.com/apis/opensocial/docs/spec.html">OpenSocial
> specification</a> and <a href="
> http://code.google.com/apis/gadgets/docs/spec.html">gadgets
> specification</a>.</p>
> +
> +<p>The architectural components of Shindig can be broken down as
> follows:</p>
> +<ul>
> + <li><b>Gadget Container JavaScript </b>-- core JavaScript foundation
> for general gadget functionality. This JavaScript manages security,
> +communication, UI layout, and feature extensions, such as the OpenSocial
> API.</li>
> +
> + <li><b>Gadget Server</b> -- an open source version of Google's
> gmodules.com, which is used to render the gadget XML into JavaScript and
> HTML for
> +the container to expose via the container JavaScript.
> +
> + </li><li><b>OpenSocial Container JavaScript</b> -- JavaScript
> environment that sits on top of the Gadget Container JavaScript and provides
> OpenSocial
> +specific functionality (profiles, friends, activities, datastore).</li>
> +
> + <li><b>OpenSocial Gateway Server</b> (does not yet exist in the
> repository) -- an implementation of the server interface to
> container-specific
> +information, including the OpenSocial REST APIs, with clear extension
> points so others can connect it to their own backends.</li> </ul> <p></p>
> +
> +</div>
> +
> +<div class="content" id="downloadDiv" style="display: none;">
> + <h3>Downloading periodic builds of Shindig</h3>
> + <p>
> +We currently do not have an automated builds infrastructure set up to
> +offer periodic builds yet, but hope to have it available soon. Check
> +back here in the near future for downloadable builds of Shindig. </p>
> +<p>
> +In the meantime, please visit the Building Shindig tab for instructions
> on using the code in the repository.
> + </p>
> +
> +</div>
> +
> +<div class="content" id="buildingDiv" style="display: none;">
> + <h3>Building and running Shindig </h3>
> +
> + <p>The following steps provide useful information on how to build and
> run Shindig.
> + </p>
> +
> + <ul>
> +
> + <li><a href="#preReqs">Prequisites</a></li>
> + <li><a href="#getTheCode">Get the code</a></li>
> + <li><a href="#buildTheCode">Build and run the code (with
> Maven)</a></li>
> + <li><a href="#eclipseProject">Setting up an Eclipse project</a></li>
> + <li><a href="#caja">Running with Caja</a></li>
> + </ul>
> +
> +
> + <h4><a name="preReqs">Prequisites before building Shindig</a></h4>
> + <p> In order to build Shindig, you must have the following: </p>
> + <ul>
> + <li>Java (JDK/JRE) 1.5 or later installed on your system and the
> JAVA_HOME environment variable set.</li>
> + <ul><li>See: <a href="http://java.sun.com/">http://java.sun.com/</a>
> for installation instructions.</li></ul>
> +
> + <li>A Subversion client installed in order to checkout the code.</li>
> + <ul><li>Instructions for downloading and installing Subversion can
> be found here: <a href="http://subversion.tigris.org/"></a>
> http://subversion.tigris.org/</li></ul>
> + <li>Apache Maven installed to perform the build.
> + <ul><li>Instructions for downloading and installing Maven can be
> found here: <a href="http://maven.apache.org/download.html">
> http://maven.apache.org/download.html</a></li></ul>
> + </li>
> + </ul>
> +
> + <h4><a name="getTheCode">Getting the code</a></h4>
> + <p> Create a subdirectory and checkout the Shindig code from its
> Subversion repository</p>
> + <ol>
> + <li> <code>mkdir ~/src/shindig</code> (or wherever you'd like to put
> it)</li>
> + <li> <code>cd ~/src/shindig</code></li>
> +
> + <li> <code>svn co
> http://svn.apache.org/repos/asf/incubator/shindig/trunk/ .</code> </li>
> + </ol>
> +
> + <h4><a name="buildTheCode">Building and running the code <span
> class="smaller">(with Maven)</span></a></h4>
> +
> +
> + <p> To build a Web Archive (WAR) file for the Gadget server and run
> tests, perform the following: </p>
> +
> + <ol>
> + <li> Make sure you have the <a href="#preReqs">prerequisites</a>
> installed first.</li>
> + <li> <code>cd ~/src/shindig/java/\gadgets</code></li>
> + <li> <code>mvn package</code></li>
> +
> + <li>
> +Once the build successfully completes, you can install the built WAR
> +file (gadgets.war) located in the /target subdirectory onto your JEE
> +server.</li>
> + </ol>
> +
> + <p>To build the code (with no tests) and start a Jetty server that will
> run on at localhost:8080: </p>
> + <p></p><ul>
> + <li><code>mvn jetty:run-war</code></li>
> + </ul><p></p>
> +
> + <p> To run the Jetty server on a different port, use:</p>
> + <p></p><ul><li><code>mvn -Djetty.port=<port>
> jetty:run</code></li></ul><p></p>
> +
> + <p>
> +Once you've either installed the WAR file on your JEE server, or are
> +running locally using the Jetty server, you can test the Gadget server
> +using:</p>
> + <p></p><ul><li>
> http://localhost:<port>/gadgets/ifr?url=http://www.labpixies.com/campaigns/todo/todo.xml
> </li></ul><p></p>
> +
> + <h4><a name="eclipseProject">Setting up an Eclipse project to build
> Shindig</a></h4>
> + <p> These steps, after completing the previous section, will allow you
> to
> + build from within Eclipse using the Maven2 plugin. You should first
> + install the Maven plugin, then create the new Java project.
> + </p>
> +
> + <ul><li> Create <code>~/.m2/settings.xml</code> consisting solely of
> + </li></ul>
> + <pre><settings><br></settings><br></pre>
> +
> + <ul><li> Install the Maven2 plugin
> + <ol><li> Help -> Software Updates -> Find and Install
> +
> + </li><li> Search for new features to install
> + </li><li> Create a new remote update site for the Maven 2 plugin
> + <ul><li> Name: Maven2 - Codehaus
> + </li><li> URL: <code>http://m2eclipse.codehaus.org/update/</code>
> +
> + </li></ul>
> + </li><li> Select the site and click "Finish"
> + </li><li> Select only the Maven Integration plug-in (mylyn and
> subclipse integration have other dependencies.)
> + </li><li> Complete the installation
> +
> + </li></ol>
> + </li></ul>
> + <p>
> + </p><ul><li> Setup new workspace and project<br>
> +
> + Creating a new workspace eliminates the performance cost from existing
> projects and makes it easier to manage the code.
> + <ol><li> File -> Switch Workspace -> Other...
> + </li><li> Select directory to store workspace
> + <ul><li> Do not select a parent directory of the shindig source (e.g.
> + ~/src/shindig) as Eclipse won't allow you to create the Java project.
> +
> + </li><li> Something like <code>~/eclipse/workspaces/shindig</code>
> would work fine
> + </li></ul>
> +
> + </li><li> File -> New -> Java Project
> + <ol><li> Select 'Create project from existing source' and navigate
> to:<br>
> + ~/src/shindig/java/gadgets
> + </li><li> Click Finish
> + </li><li> If you see a dialog for "Open Associated Perspective", click
> Ok.
> + Don't worry about the errors after loading as they will be fixed in the
> next step.
> + </li></ol>
> +
> + </li><li> Right-click the project, select <code>Maven : Enable
> Dependency Management</code>
> + </li><li> Right-click the project, select <code>Maven : Update Source
> Folders</code>
> + </li></ol>
> + </li></ul>
> + <p>
> + </p><p>
> +
> +
> +</p><h4><font size="3"><a name="Running_inside_Eclipse"> Running inside
> Eclipse </a></font></h4>
> +
> + <p>
> + To debug the server in Eclipse, follow the last two steps <a href="
> http://www.google.com/url?sa=D&q=http%3A%2F%2Fcwiki.apache.org%2FWICKET%2Fmaven-jetty-plugin.html"
> target="_top">here</a> (takes a few
> +minutes to set up):
> + </p><p>
> + </p><ul><li> "Using eclipse external tools"
> + </li><li> "Attaching to the server running in debug mode, using
> eclipse"
> + </li></ul>
> +
> + <p>
> + <b>Note:</b> You must have set up Eclipse to build the code or do
> <code>mvn package</code> yourself after making changes, but you won't need
> to
> +restart Jetty to see your changes.
> +
> + </p><p>
> +</p><h3><a name="caja">Running with Caja </a></h3>
> + <p> Caja is an
> +important part of OpenSocial that greatly enhances JavaScript security.
> +Caja is managed in a separate open source project hosted by Google code
> +projects. For more information on Caja, see: <a href="
> http://code.google.com/p/google-caja/wiki/CajaEasyIntro">
> http://code.google.com/p/google-caja/wiki/CajaEasyIntro</a>
> +
> + </p><p>
> + </p><ol><li> Load this page: <a href="
> http://localhost:8080/gadgets/samplecontainer/samplecontainer.html"
> target="_top">
> http://localhost:8080/gadgets/samplecontainer/samplecontainer.html</a>
> + </li><li> Point it to this gadget: <a href="
> http://www.google.com/url?sa=D&q=http%3A%2F%2Fhosting.gmodules.com%2Fig%2Fgadgets%2Ffile%2F117247905274371511495%2FSocialHelloWorld.xml"
> target="_top">
> http://hosting.gmodules.com/ig/gadgets/file/117247905274371511495/SocialHelloWorld.xml
> </a>
> + </li></ol>
> + <p>To see the cajoled code (Firefox only), right-click inside the
> iframe and do "This Frame -> View Frame Source"</p>
> +
> + <h3><a name="Additonal_reading"> Additonal reading </a></h3>
> + Read <a href="
> http://svn.apache.org/repos/asf/incubator/shindig/trunk/java/gadgets/README">java/gadgets/README</a>
> for original instructions on
> +how to start up your own Shindig Gadget Server.
> + <p>
> + Read <a href="
> http://svn.apache.org/repos/asf/incubator/shindig/trunk/javascript/README">javascript/README</a>
> for instructions for using the
> +Shindig Gadget
> + Container <a href="
> http://wiki.corp.google.com/twiki/bin/view/Main/JavaScript">JavaScript</a>
> to enable your page to render Gadgets using
> + gmodules.com or a server started up as described above.
> + </p>
> +</div>
> +
> +
> +
> +<div class="content" id="contributeDiv" style="display: none;">
> +
> + <h3>How to contribute to Shindig</h3>
> + <p>
> +Shindig is strengthened by accepting quality contributions from a wide
> +variety of sources. These steps serve as an in-progress guide to
> +contributing code into the <a href="
> http://svn.apache.org/repos/asf/incubator/shindig/trunk/">source code
> repository for Shindig</a>.
> +
> +</p>
> +
> + <ul>
> + <li><a href="#codeSubmissions">Code submissions</a>
> + <ul>
> + <li><a href="#creatingPatches">Creating patches</a></li>
> + <li><a href="#submittingPatches">Submitting Patches</a></li>
> + </ul>
> +
> + </li>
> + </ul>
> +
> +
> + <h3><a name="codeSubmissions"> Code Submissions </a></h3>
> +
> +
> +<p>
> + </p><p>
> + </p><h4><a name="creatingPatches"> Creating Patches </a></h4>
> +
> + <p>
> + For new people to the project, creating patches is the way to get
> started and build your reputation.
> + </p><p>
> + </p><ol><li> Start editing the code, since Subversion is being used no
> checkout is needed
> + </li><li> Move to top level folder, e.g. <code>cd ~/src/shindig</code>
> + </li><li> Generate diffs using <code>svn di > fix-xxx-bug.patch
> </code>
> +
> + </li><li> If needed, remove from the patch file any changes you do not
> want to submit until later
> + </li><li> If you're new, create an account on <a href="
> http://www.google.com/url?sa=D&q=https%3A%2F%2Fissues.apache.org%2Fjira%2Fbrowse%2FSHINDIG"
> target="_top">https://issues.apache.org/jira/browse/SHINDIG</a>
> + </li><li> Create a new issue with the patch:
> + <ol><li> Follow the "New" link: <a href="
> http://www.google.com/url?sa=D&q=https%3A%2F%2Fissues.apache.org%2Fjira%2Fsecure%2FCreateIssue%21default.jspa"
> target="_top">
> https://issues.apache.org/jira/secure/CreateIssue!default.jspa<https://issues.apache.org/jira/secure/CreateIssue%21default.jspa>
> </a>
> + </li><li> For the "Issue Type", select "Bug", "Improvement" or "New
> Feature"
> + </li><li> Click "Next>>"
> +
> + </li><li> Enter summary / description and select the
> component<br></li><li> Click "Create"
> + </li><li> Click "Attach file" and select the <code>mychanges.patch</code>
> file
> + </li><li> Check the "Grant license to <a href="
> http://wiki.corp.google.com/twiki/bin/view/Main/ASF">ASF</a> for inclusion
> in <a href="http://wiki.corp.google.com/twiki/bin/view/Main/ASF">ASF</a>
> works" option
> +
> + </li><li> Click on "Watching" and then click on "Start" watching to get
> updates
> + </li></ol>
> +
> + </li></ol>
> + <p>
> + The newly created issue will automatically be sent to <a href="mailto:
> shindig-dev@incubator.apache.org">shindig-dev@incubator.apache.org</a>.
> You
> +should also subscribe using <a href="mailto:
> shindig-dev-subscribe@incubator.apache.org">
> shindig-dev-subscribe@incubator.apache.org</a> to see all
> +the feedback, in which case you'll get the updates on the issue without
> needing to "Watch" them individually.
> + </p><p>
> + </p><p>
> + </p><h4><a name="submittingPatches"> Submitting Patches </a></h4>
> +
> + <p>
> +If you have commit permission, then you can submit directly from
> +subversion and should also look at patches provided by others. </p><p>
> + </p><ol><li> Move to top level folder, e.g. <code>cd
> ~/src/shindig</code> (you might find it helpful to create a separate tree
> from your working
> +tree)
> + </li><li> Apply patch: <code>patch p0 < mychanges.patch</code>
> +
> + </li><li> <code>svn commit</code>
> + </li><li> For the log message put <code>Applied patch for JIRA issue
> SHINDIG-XXX</code>,
> + where XXX is the JIRA issue number you are applying the patch for. This
> + will automatically update the JIRA issue with a link to the subversion
> + commit. You don't need additional comments as the JIRA issue should
> + contain enough information already.
> +
> + </li></ol>
> + <p>
> + </p><h4><a name="Example"> Example </a></h4>
> + <p>
> +
> + </p><ul><li> JIRA Issue with patch: <a href="
> http://www.google.com/url?sa=D&q=https%3A%2F%2Fissues.apache.org%2Fjira%2Fbrowse%2FSHINDIG-13"
> target="_top">https://issues.apache.org/jira/browse/SHINDIG-13</a>
> + </li><li> Code Change: <a href="
> http://www.google.com/url?sa=D&q=http%3A%2F%2Fsvn.apache.org%2Fviewvc%3Fview%3Drev%26revision%3D612299"
> target="_top">http://svn.apache.org/viewvc?view=rev&revision=612299
> </a>
> + </li></ul>
> + <p>
> +
> + </p><p>
> +
> + </p>
> +
> +</div>
> +
> +<div class="content" id="supportDiv" style="display: none;">
> + <h3><a name="mailingList">Mailing List </a></h3>
> + <p>
> +</p><ul>
> +<li>To subscribe to the Shindig mailing list, send a blank email to <a
> href="mailto:shindig-dev-subscribe@incubator.apache.org">
> shindig-dev-subscribe@incubator.apache.org</a></li>
> +<li>The email archives are located at: <a href="
> http://mail-archives.apache.org/mod_mbox/incubator-shindig-dev/">
> http://mail-archives.apache.org/mod_mbox/incubator-shindig-dev/</a></li>
> +
> +</ul>
> + <p></p>
> +
> + <h3><a name="bugs">Issue Tracker (using JIRA)</a></h3>
> + <p>
> + To file bugs or feature requests, please use <a href="
> https://issues.apache.org/jira/secure/BrowseProject.jspa?id=12310741">Shindig's
> issue
> +tracker (JIRA)</a>:
> + </p><ol>
> + <li>Login to the issue tracker (top right corner) or follow the
> instructions to make a new account (anyone can make an account).</li>
> +
> + <li>Once logged in you should be able to see all of Shindig's open
> issues. </li>
> + <li>If the issue has not been filed, use the "Create a new issue"
> link (this will not be shown if you are not logged in).</li>
> + </ol>
> + <p></p>
> +
> +<!-- disabled until we have a faq
> + <h3><a name="FAQ">FAQ </a></h3>
> + <p>
> + <ol>
> + <li>Why don't you have any questions in your FAQ?</li>
> + <ul><li>That's a great question!</li></ul>
> + </ol>
> + </p>
> +-->
> +</div>
> +
> +
> +
> +</body></html>
>
>
>
--
Internet Related Technologies - http://www.irt.org
Re: svn commit: r618495 - /incubator/shindig/trunk/shindig.html
Posted by Cassie <do...@apache.org>.
Thanks Martin.
Fixed.
- Cassie
On Mon, Mar 17, 2008 at 1:28 PM, Martin Webb <ma...@gmail.com>
wrote:
> Rather late reply - but the site refers to:
> http://wiki.corp.google.com/twiki/bin/view/Main/ASF
>
> Likewise so does: http://incubator.apache.org/shindig/#tab-contribute
>
> On Mon, Feb 4, 2008 at 11:55 PM, <do...@apache.org> wrote:
>
> > Author: doll
> > Date: Mon Feb 4 15:55:34 2008
> > New Revision: 618495
> >
> > URL: http://svn.apache.org/viewvc?rev=618495&view=rev
> > Log:
> > The initial version of a slightly better shindig website. Feel free to
> > make any changes to this site as it is by no means perfect
> >
> > Added:
> > incubator/shindig/trunk/shindig.html
> >
> > Added: incubator/shindig/trunk/shindig.html
> > URL:
> >
> http://svn.apache.org/viewvc/incubator/shindig/trunk/shindig.html?rev=618495&view=auto
> >
> >
> ==============================================================================
> > --- incubator/shindig/trunk/shindig.html (added)
> > +++ incubator/shindig/trunk/shindig.html Mon Feb 4 15:55:34 2008
> > @@ -0,0 +1,448 @@
> > +<html><head><title>Shindig - an Apache incubator project for OpenSocial
> > and gadgets</title>
> > +
> > +
> > +<style type="text/css">
> > + body {
> > + font-family: arial, sans-serif;
> > + margin: 2em 5em;
> > + padding: 0.5em;
> > + border: 1px solid lightgrey;
> > + }
> > +
> > + .tabbar {
> > + border-top: 5px solid lightgrey;
> > + clear: both;
> > + }
> > +
> > + .tab {
> > + float: left;
> > + padding: .1em 1em;
> > + background-color: #3366EE;
> > + color: white;
> > + font-weight: bold;
> > + font-size: .9em;
> > + }
> > +
> > + .selectedTab {
> > + background-color: lightgrey;
> > + color: black;
> > + }
> > +
> > + .content {
> > + clear:both;
> > + padding-top: 0.5em;
> > + }
> > +
> > + .header {
> > + font-size: 1.5em;
> > + font-weight: bold;
> > + padding-bottom: .5em;
> > + }
> > +
> > + .smaller {
> > + font-size: smaller;
> > + }
> > +</style>
> > +<script type="text/javascript">
> > + var APPLICATION_TABS = ['home', 'download', 'building', 'contribute',
> > 'support'];
> > + var tabAnchorPrefix = "#tab-";
> > +
> > + function changeActiveTab(activeTab, updateAnchor) {
> > + if (activeTab == undefined)
> > + return false;
> > + if (updateAnchor)
> > + location.href = tabAnchorPrefix + activeTab.id;
> > + for (var idx in APPLICATION_TABS) {
> > + var tab = APPLICATION_TABS[idx];
> > + if (tab == activeTab.id) {
> > + document.getElementById(tab).className = 'tab selectedTab';
> > + document.getElementById(tab + 'Div').style.display = 'block';
> > + } else {
> > + document.getElementById(tab).className = 'tab';
> > + document.getElementById(tab + 'Div').style.display = 'none';
> > + }
> > + }
> > + }
> > +
> > + function activeTabFromAnchor() {
> > + // first check for match to tab name
> > + var tabAnchorRE = new RegExp(tabAnchorPrefix + "(.*)$", "g");
> > + var tabAnchor = tabAnchorRE.exec(location.href);
> > + if (tabAnchor && tabAnchor.length == 2) {
> > + var tabAnchorObj = document.getElementById(tabAnchor[1]);
> > + if (tabAnchorObj != undefined) {
> > + changeActiveTab(tabAnchorObj, false);
> > + return;
> > + }
> > + }
> > + // anchor might be inside hidden tab, if so then activate tab
> > + var anchorIdx = location.href.indexOf("#");
> > + if (anchorIdx == -1)
> > + return;
> > + var urlAnchor = location.href.substr(anchorIdx + 1);
> > + var anchors = document.getElementsByTagName("a");
> > + for (var idx in anchors) {
> > + var anchor = anchors[idx];
> > + if (anchor.name == urlAnchor) {
> > + // found anchor, now find parent tab
> > + var parent = anchor;
> > + do {
> > + parent = parent.parentNode;
> > + } while (parent && ! /.*Div$/.test(parent.id))
> > + if (! parent)
> > + return; // failed
> > + var divMatch = /^(.*)Div$/g.exec(parent.id);
> > + if (! divMatch || divMatch.length != 2)
> > + return; // failed
> > + var tabAnchorObj = document.getElementById(divMatch[1]);
> > + if (tabAnchorObj == undefined)
> > + return; // failed
> > + changeActiveTab(tabAnchorObj, false); //SUCCESS!
> > + // need to set location again as browser can't navigate
> > + // to anchor in hidden tab
> > + location.href = location.href;
> > + }
> > + }
> > + }
> > +</script></head><body onload="activeTabFromAnchor();">
> > +
> > + <table border="0" cellspacing="0" width="100%">
> > + <tbody><tr><!-- SITE BANNER AND PROJECT IMAGE -->
> > + <td align="left" valign="top">
> > +
> > +<a href="http://www.apache.org/"><img src="
> > http://incubator.apache.org/images/asf_logo_wide.gif" alt="The Apache
> > Software Foundation" border="0"></a>
> > +</td>
> > +<td align="right">
> > +<a href="http://incubator.apache.org/"><img src="
> > http://incubator.apache.org/images/apache-incubator-logo.png"
> alt="Apache
> > Incubator" border="0"></a>
> > +</td>
> > + </tr>
> > +<tr><td> </td></tr>
> > + </tbody></table>
> > +
> > +
> > +<div class="header">Shindig - <span class="smaller"> an Apache
> incubator
> > project for OpenSocial and gadgets</span></div>
> > +<div class="tab selectedTab" onclick="changeActiveTab(this, true);"
> > style="cursor: pointer;" id="home">Home</div>
> > +
> > +<div class="tab" onclick="changeActiveTab(this, true);" style="cursor:
> > pointer;" id="download">Download</div>
> > +<div class="tab" onclick="changeActiveTab(this, true);" style="cursor:
> > pointer;" id="building">Building Shindig</div>
> > +<div class="tab" onclick="changeActiveTab(this, true);" style="cursor:
> > pointer;" id="contribute">Contribute</div>
> > +<div class="tab" onclick="changeActiveTab(this, true);" style="cursor:
> > pointer;" id="support">Support</div>
> > +<div class="tabbar"></div>
> > +
> > +<div class="content" id="homeDiv" style="display: block;">
> > + <h3>What is Shindig?</h3>
> > + <p>Shindig is a new project in the Apache Software Foundation
> incubator
> > and is an open source implementation of the <a href="
> > http://code.google.com/apis/opensocial/docs/spec.html">OpenSocial
> > specification</a> and <a href="
> > http://code.google.com/apis/gadgets/docs/spec.html">gadgets
> > specification</a>.</p>
> > +
> > +<p>The architectural components of Shindig can be broken down as
> > follows:</p>
> > +<ul>
> > + <li><b>Gadget Container JavaScript </b>-- core JavaScript
> foundation
> > for general gadget functionality. This JavaScript manages security,
> > +communication, UI layout, and feature extensions, such as the
> OpenSocial
> > API.</li>
> > +
> > + <li><b>Gadget Server</b> -- an open source version of Google's
> > gmodules.com, which is used to render the gadget XML into JavaScript and
> > HTML for
> > +the container to expose via the container JavaScript.
> > +
> > + </li><li><b>OpenSocial Container JavaScript</b> -- JavaScript
> > environment that sits on top of the Gadget Container JavaScript and
> provides
> > OpenSocial
> > +specific functionality (profiles, friends, activities, datastore).</li>
> > +
> > + <li><b>OpenSocial Gateway Server</b> (does not yet exist in the
> > repository) -- an implementation of the server interface to
> > container-specific
> > +information, including the OpenSocial REST APIs, with clear extension
> > points so others can connect it to their own backends.</li> </ul>
> <p></p>
> > +
> > +</div>
> > +
> > +<div class="content" id="downloadDiv" style="display: none;">
> > + <h3>Downloading periodic builds of Shindig</h3>
> > + <p>
> > +We currently do not have an automated builds infrastructure set up to
> > +offer periodic builds yet, but hope to have it available soon. Check
> > +back here in the near future for downloadable builds of Shindig. </p>
> > +<p>
> > +In the meantime, please visit the Building Shindig tab for instructions
> > on using the code in the repository.
> > + </p>
> > +
> > +</div>
> > +
> > +<div class="content" id="buildingDiv" style="display: none;">
> > + <h3>Building and running Shindig </h3>
> > +
> > + <p>The following steps provide useful information on how to build and
> > run Shindig.
> > + </p>
> > +
> > + <ul>
> > +
> > + <li><a href="#preReqs">Prequisites</a></li>
> > + <li><a href="#getTheCode">Get the code</a></li>
> > + <li><a href="#buildTheCode">Build and run the code (with
> > Maven)</a></li>
> > + <li><a href="#eclipseProject">Setting up an Eclipse
> project</a></li>
> > + <li><a href="#caja">Running with Caja</a></li>
> > + </ul>
> > +
> > +
> > + <h4><a name="preReqs">Prequisites before building Shindig</a></h4>
> > + <p> In order to build Shindig, you must have the following: </p>
> > + <ul>
> > + <li>Java (JDK/JRE) 1.5 or later installed on your system and the
> > JAVA_HOME environment variable set.</li>
> > + <ul><li>See: <a href="http://java.sun.com/">http://java.sun.com/
> </a>
> > for installation instructions.</li></ul>
> > +
> > + <li>A Subversion client installed in order to checkout the
> code.</li>
> > + <ul><li>Instructions for downloading and installing Subversion can
> > be found here: <a href="http://subversion.tigris.org/"></a>
> > http://subversion.tigris.org/</li></ul>
> > + <li>Apache Maven installed to perform the build.
> > + <ul><li>Instructions for downloading and installing Maven can be
> > found here: <a href="http://maven.apache.org/download.html">
> > http://maven.apache.org/download.html</a></li></ul>
> > + </li>
> > + </ul>
> > +
> > + <h4><a name="getTheCode">Getting the code</a></h4>
> > + <p> Create a subdirectory and checkout the Shindig code from its
> > Subversion repository</p>
> > + <ol>
> > + <li> <code>mkdir ~/src/shindig</code> (or wherever you'd like to
> put
> > it)</li>
> > + <li> <code>cd ~/src/shindig</code></li>
> > +
> > + <li> <code>svn co
> > http://svn.apache.org/repos/asf/incubator/shindig/trunk/ .</code> </li>
> > + </ol>
> > +
> > + <h4><a name="buildTheCode">Building and running the code <span
> > class="smaller">(with Maven)</span></a></h4>
> > +
> > +
> > + <p> To build a Web Archive (WAR) file for the Gadget server and run
> > tests, perform the following: </p>
> > +
> > + <ol>
> > + <li> Make sure you have the <a href="#preReqs">prerequisites</a>
> > installed first.</li>
> > + <li> <code>cd ~/src/shindig/java/\gadgets</code></li>
> > + <li> <code>mvn package</code></li>
> > +
> > + <li>
> > +Once the build successfully completes, you can install the built WAR
> > +file (gadgets.war) located in the /target subdirectory onto your JEE
> > +server.</li>
> > + </ol>
> > +
> > + <p>To build the code (with no tests) and start a Jetty server that
> will
> > run on at localhost:8080: </p>
> > + <p></p><ul>
> > + <li><code>mvn jetty:run-war</code></li>
> > + </ul><p></p>
> > +
> > + <p> To run the Jetty server on a different port, use:</p>
> > + <p></p><ul><li><code>mvn -Djetty.port=<port>
> > jetty:run</code></li></ul><p></p>
> > +
> > + <p>
> > +Once you've either installed the WAR file on your JEE server, or are
> > +running locally using the Jetty server, you can test the Gadget server
> > +using:</p>
> > + <p></p><ul><li>
> > http://localhost:<port>/gadgets/ifr?url=
> http://www.labpixies.com/campaigns/todo/todo.xml
> > </li></ul><p></p>
> > +
> > + <h4><a name="eclipseProject">Setting up an Eclipse project to build
> > Shindig</a></h4>
> > + <p> These steps, after completing the previous section, will allow
> you
> > to
> > + build from within Eclipse using the Maven2 plugin. You should first
> > + install the Maven plugin, then create the new Java project.
> > + </p>
> > +
> > + <ul><li> Create <code>~/.m2/settings.xml</code> consisting solely of
> > + </li></ul>
> > + <pre><settings><br></settings><br></pre>
> > +
> > + <ul><li> Install the Maven2 plugin
> > + <ol><li> Help -> Software Updates -> Find and Install
> > +
> > + </li><li> Search for new features to install
> > + </li><li> Create a new remote update site for the Maven 2 plugin
> > + <ul><li> Name: Maven2 - Codehaus
> > + </li><li> URL: <code>http://m2eclipse.codehaus.org/update/</code>
> > +
> > + </li></ul>
> > + </li><li> Select the site and click "Finish"
> > + </li><li> Select only the Maven Integration plug-in (mylyn and
> > subclipse integration have other dependencies.)
> > + </li><li> Complete the installation
> > +
> > + </li></ol>
> > + </li></ul>
> > + <p>
> > + </p><ul><li> Setup new workspace and project<br>
> > +
> > + Creating a new workspace eliminates the performance cost from
> existing
> > projects and makes it easier to manage the code.
> > + <ol><li> File -> Switch Workspace -> Other...
> > + </li><li> Select directory to store workspace
> > + <ul><li> Do not select a parent directory of the shindig source (e.g.
> > + ~/src/shindig) as Eclipse won't allow you to create the Java project.
> > +
> > + </li><li> Something like <code>~/eclipse/workspaces/shindig</code>
> > would work fine
> > + </li></ul>
> > +
> > + </li><li> File -> New -> Java Project
> > + <ol><li> Select 'Create project from existing source' and navigate
> > to:<br>
> > + ~/src/shindig/java/gadgets
> > + </li><li> Click Finish
> > + </li><li> If you see a dialog for "Open Associated Perspective",
> click
> > Ok.
> > + Don't worry about the errors after loading as they will be fixed in
> the
> > next step.
> > + </li></ol>
> > +
> > + </li><li> Right-click the project, select <code>Maven : Enable
> > Dependency Management</code>
> > + </li><li> Right-click the project, select <code>Maven : Update Source
> > Folders</code>
> > + </li></ol>
> > + </li></ul>
> > + <p>
> > + </p><p>
> > +
> > +
> > +</p><h4><font size="3"><a name="Running_inside_Eclipse"> Running inside
> > Eclipse </a></font></h4>
> > +
> > + <p>
> > + To debug the server in Eclipse, follow the last two steps <a href="
> >
> http://www.google.com/url?sa=D&q=http%3A%2F%2Fcwiki.apache.org%2FWICKET%2Fmaven-jetty-plugin.html
> "
> > target="_top">here</a> (takes a few
> > +minutes to set up):
> > + </p><p>
> > + </p><ul><li> "Using eclipse external tools"
> > + </li><li> "Attaching to the server running in debug mode, using
> > eclipse"
> > + </li></ul>
> > +
> > + <p>
> > + <b>Note:</b> You must have set up Eclipse to build the code or do
> > <code>mvn package</code> yourself after making changes, but you won't
> need
> > to
> > +restart Jetty to see your changes.
> > +
> > + </p><p>
> > +</p><h3><a name="caja">Running with Caja </a></h3>
> > + <p> Caja is an
> > +important part of OpenSocial that greatly enhances JavaScript security.
> > +Caja is managed in a separate open source project hosted by Google code
> > +projects. For more information on Caja, see: <a href="
> > http://code.google.com/p/google-caja/wiki/CajaEasyIntro">
> > http://code.google.com/p/google-caja/wiki/CajaEasyIntro</a>
> > +
> > + </p><p>
> > + </p><ol><li> Load this page: <a href="
> > http://localhost:8080/gadgets/samplecontainer/samplecontainer.html"
> > target="_top">
> > http://localhost:8080/gadgets/samplecontainer/samplecontainer.html</a>
> > + </li><li> Point it to this gadget: <a href="
> >
> http://www.google.com/url?sa=D&q=http%3A%2F%2Fhosting.gmodules.com%2Fig%2Fgadgets%2Ffile%2F117247905274371511495%2FSocialHelloWorld.xml
> "
> > target="_top">
> >
> http://hosting.gmodules.com/ig/gadgets/file/117247905274371511495/SocialHelloWorld.xml
> > </a>
> > + </li></ol>
> > + <p>To see the cajoled code (Firefox only), right-click inside the
> > iframe and do "This Frame -> View Frame Source"</p>
> > +
> > + <h3><a name="Additonal_reading"> Additonal reading </a></h3>
> > + Read <a href="
> >
> http://svn.apache.org/repos/asf/incubator/shindig/trunk/java/gadgets/README
> ">java/gadgets/README</a>
> > for original instructions on
> > +how to start up your own Shindig Gadget Server.
> > + <p>
> > + Read <a href="
> >
> http://svn.apache.org/repos/asf/incubator/shindig/trunk/javascript/README
> ">javascript/README</a>
> > for instructions for using the
> > +Shindig Gadget
> > + Container <a href="
> > http://wiki.corp.google.com/twiki/bin/view/Main/JavaScript
> ">JavaScript</a>
> > to enable your page to render Gadgets using
> > + gmodules.com or a server started up as described above.
> > + </p>
> > +</div>
> > +
> > +
> > +
> > +<div class="content" id="contributeDiv" style="display: none;">
> > +
> > + <h3>How to contribute to Shindig</h3>
> > + <p>
> > +Shindig is strengthened by accepting quality contributions from a wide
> > +variety of sources. These steps serve as an in-progress guide to
> > +contributing code into the <a href="
> > http://svn.apache.org/repos/asf/incubator/shindig/trunk/">source code
> > repository for Shindig</a>.
> > +
> > +</p>
> > +
> > + <ul>
> > + <li><a href="#codeSubmissions">Code submissions</a>
> > + <ul>
> > + <li><a href="#creatingPatches">Creating patches</a></li>
> > + <li><a href="#submittingPatches">Submitting Patches</a></li>
> > + </ul>
> > +
> > + </li>
> > + </ul>
> > +
> > +
> > + <h3><a name="codeSubmissions"> Code Submissions </a></h3>
> > +
> > +
> > +<p>
> > + </p><p>
> > + </p><h4><a name="creatingPatches"> Creating Patches </a></h4>
> > +
> > + <p>
> > + For new people to the project, creating patches is the way to get
> > started and build your reputation.
> > + </p><p>
> > + </p><ol><li> Start editing the code, since Subversion is being used
> no
> > checkout is needed
> > + </li><li> Move to top level folder, e.g. <code>cd
> ~/src/shindig</code>
> > + </li><li> Generate diffs using <code>svn di > fix-xxx-bug.patch
> > </code>
> > +
> > + </li><li> If needed, remove from the patch file any changes you do
> not
> > want to submit until later
> > + </li><li> If you're new, create an account on <a href="
> >
> http://www.google.com/url?sa=D&q=https%3A%2F%2Fissues.apache.org%2Fjira%2Fbrowse%2FSHINDIG
> "
> > target="_top">https://issues.apache.org/jira/browse/SHINDIG</a>
> > + </li><li> Create a new issue with the patch:
> > + <ol><li> Follow the "New" link: <a href="
> >
> http://www.google.com/url?sa=D&q=https%3A%2F%2Fissues.apache.org%2Fjira%2Fsecure%2FCreateIssue%21default.jspa
> "
> > target="_top">
> > https://issues.apache.org/jira/secure/CreateIssue!default.jspa<https://issues.apache.org/jira/secure/CreateIssue%21default.jspa>
> <https://issues.apache.org/jira/secure/CreateIssue%21default.jspa>
> > </a>
> > + </li><li> For the "Issue Type", select "Bug", "Improvement" or "New
> > Feature"
> > + </li><li> Click "Next>>"
> > +
> > + </li><li> Enter summary / description and select the
> > component<br></li><li> Click "Create"
> > + </li><li> Click "Attach file" and select the
> <code>mychanges.patch</code>
> > file
> > + </li><li> Check the "Grant license to <a href="
> > http://wiki.corp.google.com/twiki/bin/view/Main/ASF">ASF</a> for
> inclusion
> > in <a href="http://wiki.corp.google.com/twiki/bin/view/Main/ASF">ASF</a>
> > works" option
> > +
> > + </li><li> Click on "Watching" and then click on "Start" watching to
> get
> > updates
> > + </li></ol>
> > +
> > + </li></ol>
> > + <p>
> > + The newly created issue will automatically be sent to <a
> href="mailto:
> > shindig-dev@incubator.apache.org">shindig-dev@incubator.apache.org</a>.
> > You
> > +should also subscribe using <a href="mailto:
> > shindig-dev-subscribe@incubator.apache.org">
> > shindig-dev-subscribe@incubator.apache.org</a> to see all
> > +the feedback, in which case you'll get the updates on the issue without
> > needing to "Watch" them individually.
> > + </p><p>
> > + </p><p>
> > + </p><h4><a name="submittingPatches"> Submitting Patches </a></h4>
> > +
> > + <p>
> > +If you have commit permission, then you can submit directly from
> > +subversion and should also look at patches provided by others. </p><p>
> > + </p><ol><li> Move to top level folder, e.g. <code>cd
> > ~/src/shindig</code> (you might find it helpful to create a separate
> tree
> > from your working
> > +tree)
> > + </li><li> Apply patch: <code>patch p0 < mychanges.patch</code>
> > +
> > + </li><li> <code>svn commit</code>
> > + </li><li> For the log message put <code>Applied patch for JIRA issue
> > SHINDIG-XXX</code>,
> > + where XXX is the JIRA issue number you are applying the patch for.
> This
> > + will automatically update the JIRA issue with a link to the
> subversion
> > + commit. You don't need additional comments as the JIRA issue should
> > + contain enough information already.
> > +
> > + </li></ol>
> > + <p>
> > + </p><h4><a name="Example"> Example </a></h4>
> > + <p>
> > +
> > + </p><ul><li> JIRA Issue with patch: <a href="
> >
> http://www.google.com/url?sa=D&q=https%3A%2F%2Fissues.apache.org%2Fjira%2Fbrowse%2FSHINDIG-13
> "
> > target="_top">https://issues.apache.org/jira/browse/SHINDIG-13</a>
> > + </li><li> Code Change: <a href="
> >
> http://www.google.com/url?sa=D&q=http%3A%2F%2Fsvn.apache.org%2Fviewvc%3Fview%3Drev%26revision%3D612299
> "
> > target="_top">http://svn.apache.org/viewvc?view=rev&revision=612299
> > </a>
> > + </li></ul>
> > + <p>
> > +
> > + </p><p>
> > +
> > + </p>
> > +
> > +</div>
> > +
> > +<div class="content" id="supportDiv" style="display: none;">
> > + <h3><a name="mailingList">Mailing List </a></h3>
> > + <p>
> > +</p><ul>
> > +<li>To subscribe to the Shindig mailing list, send a blank email to <a
> > href="mailto:shindig-dev-subscribe@incubator.apache.org">
> > shindig-dev-subscribe@incubator.apache.org</a></li>
> > +<li>The email archives are located at: <a href="
> > http://mail-archives.apache.org/mod_mbox/incubator-shindig-dev/">
> > http://mail-archives.apache.org/mod_mbox/incubator-shindig-dev/</a></li>
> > +
> > +</ul>
> > + <p></p>
> > +
> > + <h3><a name="bugs">Issue Tracker (using JIRA)</a></h3>
> > + <p>
> > + To file bugs or feature requests, please use <a href="
> > https://issues.apache.org/jira/secure/BrowseProject.jspa?id=12310741
> ">Shindig's
> > issue
> > +tracker (JIRA)</a>:
> > + </p><ol>
> > + <li>Login to the issue tracker (top right corner) or follow the
> > instructions to make a new account (anyone can make an account).</li>
> > +
> > + <li>Once logged in you should be able to see all of Shindig's
> open
> > issues. </li>
> > + <li>If the issue has not been filed, use the "Create a new issue"
> > link (this will not be shown if you are not logged in).</li>
> > + </ol>
> > + <p></p>
> > +
> > +<!-- disabled until we have a faq
> > + <h3><a name="FAQ">FAQ </a></h3>
> > + <p>
> > + <ol>
> > + <li>Why don't you have any questions in your FAQ?</li>
> > + <ul><li>That's a great question!</li></ul>
> > + </ol>
> > + </p>
> > +-->
> > +</div>
> > +
> > +
> > +
> > +</body></html>
> >
> >
> >
>
>
> --
> Internet Related Technologies - http://www.irt.org
>