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</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:[email protected]">[email protected]</a>.
You
+should also subscribe using <a href="mailto:[EMAIL PROTECTED]">[EMAIL
PROTECTED]</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:[EMAIL PROTECTED]">[EMAIL PROTECTED]</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>