|  | <html> | 
|  |  | 
|  | <head> | 
|  | <meta http-equiv="Content-Type" | 
|  | content="text/html; charset=windows-1252"/> | 
|  |  | 
|  | <title>Plugging into SourceForge.net</title> | 
|  |  | 
|  | <link href="../default_style.css" rel="stylesheet"/> | 
|  |  | 
|  | <meta content="David J. Biesack (david_biesack@users.sourceforge.net)" | 
|  | name="author"/> | 
|  |  | 
|  | <meta content="pombredanne@nexb.com" | 
|  | name="editor"/> | 
|  |  | 
|  | <meta content="Describes how you can publish your open source Eclipse Plug-In on SourceForge.net" | 
|  | name="description"/> | 
|  |  | 
|  | <meta content="https://bugs.eclipse.org/bugs/show_bug.cgi?id=94940" | 
|  | name="bugzilla"/> | 
|  |  | 
|  | </head> | 
|  |  | 
|  | <body> | 
|  |  | 
|  | <div align="right"> | 
|  |  | 
|  | Copyright © 2005 by David J. Biesack | 
|  |  | 
|  | </div> | 
|  |  | 
|  | <div align="left"> | 
|  |  | 
|  | <h1><img align="middle" alt="" height="86" src="../images/Idea.jpg" | 
|  | width="120"/></h1> | 
|  |  | 
|  | </div> | 
|  |  | 
|  | <h1 style="align: center;">Plugging into SourceForge.net</h1> | 
|  |  | 
|  | <blockquote> | 
|  |  | 
|  | <p><b>Summary</b></p> | 
|  |  | 
|  | <p>Congratulations on taking the plunge and writing an open source | 
|  | plug-in for the Eclipse platform. | 
|  | SourceForge.net can provide a good home your plug-in, but | 
|  | information on how best to set up an Eclipse project there is sparse. | 
|  | This article is an introduction to SourceForge for the Eclipse | 
|  | developer. You will learn the features available to the | 
|  | SourceForge.net open source developer community and be guided | 
|  | through the process, from creating a SourceForge project to | 
|  | hosting your Eclipse Update site.</p> | 
|  |  | 
|  | <p><b>By David Biesack, SAS</b></p> | 
|  |  | 
|  | <p>October 15, 2005</p> | 
|  |  | 
|  | </blockquote> | 
|  |  | 
|  | <hr /> | 
|  |  | 
|  | <h3>SourceForge: A site for everything open source and nothing in | 
|  | particular</h3> | 
|  |  | 
|  | <div><img align="right" alt="SourceForge.net logo" | 
|  | src="images/SourceForge.net.png" | 
|  | style="margin:5px; width: 210px; height: 62px;" title="SourceForge.net"/></div> | 
|  |  | 
|  | <p><a href="http://www.sourceforge.net/">SourceForge.net</a> (or | 
|  | simply SourceForge) is the world's largest open source | 
|  | software repository and developer resource. Just as Eclipse is an | 
|  | "<a href="http://www.eclipse.org/articles/Article-UI-Guidelines/v200202/Contents.html" | 
|  | >IDE for everything and nothing in particular</a>", | 
|  | SourceForge is a developer site for everything open source and | 
|  | nothing in particular. Similar to how an Eclipse plug-in plugs into | 
|  | the Eclipse framework through extensions of well-known extension | 
|  | points, open source projects "plug into" the rich | 
|  | collaboration community hosted by SourceForge.</p> | 
|  |  | 
|  | <p>SourceForge is language and platform agnostic — | 
|  | it may be Java, .Net, Perl, | 
|  | Ruby, PHP, or any other software project. For each project, regardless of | 
|  | language or platform, a wide array of services is freely | 
|  | available. The project 'extension points' include server | 
|  | space for a project web site, your own project sub-domain, a CVS | 
|  | server, file release management, GNU Mailman mailing lists, project | 
|  | categorization, on-line discussion forums, bug tracking, secure | 
|  | login shell and FTP, a compile farm, task lists and even an on-line | 
|  | financial donation management.</p> | 
|  |  | 
|  | <div><img align="right" | 
|  | alt="SFPDE - SourceForge Plug-In Development Environment" | 
|  | src="images/sfpde-med.png" style="margin: 5px;width: 360px; height: 265px;" | 
|  | title="SFPDE - SourceForge Plug-In Development Environment"/></div> | 
|  |  | 
|  | <p>There are too many services available to cover in this article, | 
|  | so I present one common scenario — the creation of a new project | 
|  | — and I introduce features as they come into play in the life | 
|  | cycle of developing, publishing, and supporting an open source | 
|  | plug-in for Eclipse.</p> | 
|  |  | 
|  | <p>You will see how SourceForge extends the Eclipse Plug-in | 
|  | Development Environment (PDE) to create what I refer to as the | 
|  | SourceForge <strong>Plug-in Development Environment</strong> | 
|  | (SFPDE). Eclipse provides the coding, testing, debugging, and | 
|  | packaging aspects of Plug-in development. The SFPDE adds the source | 
|  | management, distribution, collaboration, discovery, web hosting, | 
|  | and support capabilities. The combined SFPDE services offer a | 
|  | comprehensive environment for Eclipse plug-ins | 
|  | development.</p> | 
|  |  | 
|  | <p>I will use a humble plug-in that I wrote and released on | 
|  | SourceForge as an example (the | 
|  | <a href="http://eclipseexeditor.sourceforge.net/">Eclipse Text | 
|  | Editor Extensions</a> ), so you can refer to a concrete plug-in | 
|  | project.</p> | 
|  |  | 
|  | <p>For this article, I assume that you are already familiar with | 
|  | writing Eclipse plug-ins, and you have an idea that will | 
|  | revolutionize the Eclipse community: if only you had a way to share | 
|  | it as an open source project! You have some code to commit to CVS | 
|  | and would like to attract one or two open source contributors | 
|  | to help you polish it off. I also assume you are familiar with | 
|  | most of the concepts of open source projects, including license | 
|  | models, community involvement, patches and contributions, etc. If | 
|  | not, there are resources available at the | 
|  | <a href="http://www.opensource.org/">open source Initiative</a> | 
|  | (OSI).</p> | 
|  |  | 
|  | <h3>Planning</h3> | 
|  |  | 
|  | <p>As with any software endeavor, a little bit of planning will | 
|  | reduce your long-term frustration. With an open source project, | 
|  | you probably do not have a software manager and marketing | 
|  | department pushing you to release the new product, so you may | 
|  | actually have time for planning!</p> | 
|  |  | 
|  | <p>This is an outline of an open source project's lifecycle | 
|  | within the SFPDE:</p> | 
|  |  | 
|  | <ol> | 
|  |  | 
|  | <li>Understanding the SourceForge open source Software model</li> | 
|  |  | 
|  | <li>How to structure a SourceForge project</li> | 
|  |  | 
|  | <li>Naming the project</li> | 
|  |  | 
|  | <li>Naming the Java package</li> | 
|  |  | 
|  | <li>Choosing a license</li> | 
|  |  | 
|  | <li>Registering on SourceForge</li> | 
|  |  | 
|  | <li>Trove classification</li> | 
|  |  | 
|  | <li>Using SourceForge's CVS server for Eclipse projects</li> | 
|  |  | 
|  | <li>Secure services: private and public keys and SSH</li> | 
|  |  | 
|  | <li>Making a software release</li> | 
|  |  | 
|  | <li>Building a web site</li> | 
|  |  | 
|  | <li>Hosting an update site</li> | 
|  |  | 
|  | <li>Registering with a plug-in promotion site</li> | 
|  |  | 
|  | </ol> | 
|  |  | 
|  | <h3>Plugging In</h3> | 
|  |  | 
|  | <h4>Understanding the SourceForge open source Software model</h4> | 
|  |  | 
|  | <p>Before you begin an open source project on SourceForge, be sure | 
|  | you understand the SourceForge definition of open source and its | 
|  | requirements for hosted projects. You should read and grok the | 
|  | SourceForge | 
|  | <a href="http://sourceforge.net/docman/display_doc.php?docid=6048&group_id=1" | 
|  | >Terms of Use</a> , and be fully comfortable with the requirements | 
|  | outlined there. SourceForge users assume certain aspects | 
|  | of open source projects, so be sure you know what the open source and | 
|  | SourceForge communities will expect of you.</p> | 
|  |  | 
|  | <h4>How to structure a SourceForge project</h4> | 
|  |  | 
|  | <p>The next step in the planning process is to get your project in | 
|  | order before shipping it up to SourceForge. I have found that it | 
|  | is convenient to create four separate Eclipse projects. Below is | 
|  | the layout of my projects for my sample plug-in. I named the | 
|  | project based on the root Java package, net.sf.eclipseexeditor | 
|  | (described below).</p> | 
|  |  | 
|  | <table border="0" cellpadding="0" cellspacing="0" style="text-align: left; width: 600px;"> | 
|  |  | 
|  | <tbody> | 
|  |  | 
|  | <tr> | 
|  |  | 
|  | <th>Eclipse Project Description</th> | 
|  |  | 
|  | <th>Example</th> | 
|  |  | 
|  | </tr> | 
|  |  | 
|  | <tr> | 
|  |  | 
|  | <td>Your plug-in, as an Eclipse PDE project.</td> | 
|  |  | 
|  | <td>net.sf.eclipseexeditor</td> | 
|  |  | 
|  | </tr> | 
|  |  | 
|  | <tr> | 
|  |  | 
|  | <td>Your Plug-In Feature, created from the Eclipse feature | 
|  | wizard.</td> | 
|  |  | 
|  | <td>net.sf.eclipseexeditor-feature</td> | 
|  |  | 
|  | </tr> | 
|  |  | 
|  | <tr> | 
|  |  | 
|  | <td>Your update site, created from the Eclipse update site | 
|  | wizard.</td> | 
|  |  | 
|  | <td>net.sf.eclipseexeditor-update-site</td> | 
|  |  | 
|  | </tr> | 
|  |  | 
|  | <tr> | 
|  |  | 
|  | <td>Your web site, your public documentation.</td> | 
|  |  | 
|  | <td>net.sf.eclipseexeditor-web-site</td> | 
|  |  | 
|  | </tr> | 
|  |  | 
|  | </tbody> | 
|  |  | 
|  | </table> | 
|  |  | 
|  | <p>Some projects may have several plug-ins, each with its own PDE | 
|  | project. For example, solareclipse has the following project/file | 
|  | structure:</p> | 
|  |  | 
|  | <ul> | 
|  |  | 
|  | <li>net.sf.solareclipse-feature</li> | 
|  |  | 
|  | <li>net.sf.solareclipse-home</li> | 
|  |  | 
|  | <li>net.sf.solareclipse.jsp.ui</li> | 
|  |  | 
|  | <li>net.sf.solareclipse.ui</li> | 
|  |  | 
|  | <li>net.sf.solareclipse.xml.core</li> | 
|  |  | 
|  | <li>net.sf.solareclipse.xml.ui</li> | 
|  |  | 
|  | <li>net.sf.solareclipse.xslt.debug.core</li> | 
|  |  | 
|  | <li>net.sf.solareclipse.xslt.debug.ui</li> | 
|  |  | 
|  | <li>net.sourceforge.solareclipse.web.ui</li> | 
|  |  | 
|  | <li>net.sourceforge.solareclipse.xml.core</li> | 
|  |  | 
|  | </ul> | 
|  |  | 
|  | <p>Be sure to review your project's names before committing to | 
|  | CVS: the project name will become the CVS module name. The | 
|  | solareclipse project's | 
|  | <a href="http://cvs.sourceforge.net/viewcvs.py/solareclipse/"> | 
|  | CVS</a> tree has apparently obsolete modules named | 
|  | <code>org.sourceforge.solareclipse.web.ui</code> and a misspelled | 
|  | <code>net.courceforge.solareclipse.web.ui</code> module.</p> | 
|  |  | 
|  | <p>You may also find it convenient to define | 
|  | <a href="images/working-set.png">an Eclipse Working Set</a> that | 
|  | contains all your projects. This can help with restricted file | 
|  | searches in Eclipse, i.e. text/file searches for classes or package | 
|  | names in plugin.xml or web site content, in case you need to rename | 
|  | classes or packages. Note that you can host <strong>all</strong> | 
|  | your related Eclipse PDE projects within a single SFPDE project | 
|  | space.</p> | 
|  |  | 
|  | <h4>Naming the project</h4> | 
|  |  | 
|  | <p>Patterns, packages, projects have more in common than their | 
|  | first letter. In all cases, a good name cannot be beat. Sadly, | 
|  | my project name (eclipseexeditor) is not a good example. It was | 
|  | only after I had created my SourceForge project and worked on it | 
|  | significantly that I realized that ETEE — an acronym for | 
|  | Eclipse Text Editor Extensions — would have been a better | 
|  | choice.</p> | 
|  |  | 
|  | <p>Your SourceForge project name will be used everywhere in | 
|  | SourceForge: in the Unix file system as the directory name, as a | 
|  | CVS root, as a component of a domain name/URL — | 
|  | <a href="http://eclipseexeditor.sf.net"> | 
|  | http://eclipseexeditor.sf.net</a>, in your project's summary | 
|  | page url — <a href="http://sf.net/projects/eclipseexeditor"> | 
|  | http://sf.net/projects/eclipseexeditor</a> , in Mailman mailing | 
|  | lists names, etc. In other words, choose a name that is easy for | 
|  | your users to use and remember and that still conveys the purpose | 
|  | of your project. SourceForge does not support renaming projects | 
|  | after their creation.</p> | 
|  |  | 
|  | <p>Here are the SourceForge rules for a project name:</p> | 
|  |  | 
|  | <ul> | 
|  |  | 
|  | <li>It must begin with a letter</li> | 
|  |  | 
|  | <li>It must be between 3 and 15 characters in length</li> | 
|  |  | 
|  | <li>It can only contain only lowercase letters (a-z), numbers | 
|  | (0-9), and dashes ("-") or underscores | 
|  | ("_")</li> | 
|  |  | 
|  | <li>It cannot match the name of any other project or one of | 
|  | SourceForge's reserved names</li> | 
|  |  | 
|  | </ul> | 
|  |  | 
|  | <p>Once again, remember that you cannot change the project name after its creation... so | 
|  | be sure you are happy with the name!</p> | 
|  |  | 
|  | <h4>Naming the Java package</h4> | 
|  |  | 
|  | <p>Since we are talking naming, it is a good idea to | 
|  | consider carefully the Java packages names for your plug-ins.   If you are | 
|  | part of a commercial organization or org site that is sponsoring | 
|  | the plug-in development, you may wish to release the plug-in as a | 
|  | specific package within that name space, such as the veloedit | 
|  | Velocity editor: <a href="http://sourceforge.net/projects/veloedit/" | 
|  | ><code>org.vaulttec.velocity.ui</code></a> . Presumably, one should | 
|  | not use <code>org.eclipse</code> as a base package name, as that | 
|  | name space is reserved for official Eclipse projects at | 
|  | www.eclipse.org. I chose the pattern of <code>net.sf.</code> + | 
|  | <i><code>projectname</code></i> (i.e. | 
|  | <code>net.sf.eclipseexeditor</code> ) over something like | 
|  | <code>org.biesack</code> so that the code base will feel more | 
|  | "open" to other contributors. After all, a key aspect of | 
|  | an open source project is that potential collaborators feel | 
|  | welcome.</p> | 
|  |  | 
|  | <p>Other projects on SourceForge have followed this example, such | 
|  | as <a href="http://sourceforge.net/projects/solareclipse/"> | 
|  | net.sf.solareclipse</a> and | 
|  | <a href="http://sourceforge.net/projects/lunar-eclipse/"> | 
|  | net.sf.lunar_eclipse</a> . Note that if you wish to follow this | 
|  | pattern, you should avoid using a dash in your project name, which | 
|  | is illegal in Java. The biggest reason to use this format is that | 
|  | it follows | 
|  | <a href="http://java.sun.com/docs/books/jls/second_edition/html/packages.doc.html#40169" | 
|  | >Sun's recommended package naming convention</a> of reversing | 
|  | the domain name. Since your domain name will be | 
|  | <code><i>projectname</i>.sourceforge.net</code> or | 
|  | <code><i>projectname</i>.sf.net</code> , this leads to a Java | 
|  | package name space of <code>net.sf.<i>projectname</i></code>. Other | 
|  | projects do not follow Sun's recommendations. For | 
|  | example, <a href="http://sfutils.sourceforge.net/">sfutils</a> has | 
|  | packages like <code>sfutils.frs</code> with no <code>net</code> | 
|  | or <code>org</code> or <code>com</code> prefix.</p> | 
|  |  | 
|  | <h4>Choosing a license</h4> | 
|  |  | 
|  | <p>SourceForge has a well-defined specification | 
|  | for open source projects, including a license. SourceForge requires | 
|  | that you use either an approved an approved open source initiative | 
|  | license, or a license that complies with the | 
|  | <a href="http://www.opensource.org/docs/definition.php">open source definition</a>. See the | 
|  | <a href="http://sourceforge.net/docman/display_doc.php?docid=778&group_id=1" | 
|  | >B6. open source license overview</a> for more details: "<cite>It is vital that you read and | 
|  | understand all of the terms of a license, and verify that it meets | 
|  | the needs of your project, before deciding to use that license; | 
|  | this should not be a decision taken lightly.</cite> "</p> | 
|  |  | 
|  | <p>The license you select can also influence | 
|  | your ability to draw contributors to your plug-in. In addition, changing a license later often | 
|  | alienates your user and contributing developers' community. | 
|  | Eclipse plug-in developers may want | 
|  | to consider the | 
|  | <a href="http://www.opensource.org/licenses/eclipse-1.0.php"> | 
|  | Eclipse Public License</a> (EPL), an <a href="http://opensource.org" | 
|  | >OSI approved</a> and SourceForge acceptable license. By choosing | 
|  | EPL, you will be using the same license as the Eclipse.org | 
|  | projects, and your plug-in license will be compatible with future | 
|  | Eclipse developments.</p> | 
|  |  | 
|  | <h4>Registering on SourceForge</h4> | 
|  |  | 
|  | <p>Now that you have some of the planning done and your plug-in is | 
|  | complete enough for an initial code contribution, it is time to | 
|  | start your registration process. Naturally, SourceForge has an | 
|  | on-line web based registration process that guides you through the | 
|  | following steps:</p> | 
|  |  | 
|  | <ol> | 
|  |  | 
|  | <li>Hosting information</li> | 
|  |  | 
|  | <li>Registering a project</li> | 
|  |  | 
|  | <li>Terms of Use Agreement</li> | 
|  |  | 
|  | <li>Hosting requirements</li> | 
|  |  | 
|  | <li>Project license details</li> | 
|  |  | 
|  | <li>Project description details</li> | 
|  |  | 
|  | <li>Project name details</li> | 
|  |  | 
|  | <li>Final review</li> | 
|  |  | 
|  | <li>Submission completed</li> | 
|  |  | 
|  | </ol> | 
|  |  | 
|  | <p>There is plenty of documentation and help along the way. If | 
|  | you have done the suggested planning, this should only take 10 to | 
|  | 15 minutes. Once your new project submission is complete, it will | 
|  | take a few days for the SourceForge staff to process the request | 
|  | and create your project.</p> | 
|  |  | 
|  | <p>You start by logging into SourceForge. If you do not already | 
|  | have an account, simply click on the <strong> | 
|  | <a href="http://sourceforge.net/account/newuser_emailverify.php" | 
|  | >New User via SSL</a></strong> link on the front page and enter | 
|  | your email address and a create a password. SourceForge will send | 
|  | an email to the address you supply to confirm it is a valid | 
|  | address. (If you have some spam filtering enabled, configure it to | 
|  | allow mail from the domain "sourceforge.net" and any | 
|  | sub domains). You must visit the confirmation URL in that email | 
|  | message. At this point, you will be able to choose an account user | 
|  | name.</p> | 
|  |  | 
|  | <p>Next, log in using your userid and password, and then click the | 
|  | <strong><a href="http://sourceforge.net/register/">Register New | 
|  | Project</a></strong> link to begin the registration process. Review | 
|  | the Hosting information and the Terms of Use Agreement that you | 
|  | must accept before proceeding. You will need to supply some of the | 
|  | important information discussed above: your project name, | 
|  | license, a short public project description, and a longer project | 
|  | justification to help the SourceForge administrators understand how | 
|  | your project adds value or is different from existing solutions.</p> | 
|  |  | 
|  | <p>Once you complete your registration, you must wait a few days | 
|  | for the SourceForge administrators to review your request and set | 
|  | up the infrastructure. You should receive an email response | 
|  | informing you of the project's creation when it is ready. You | 
|  | can check the status of any of your project requests by visiting | 
|  | your SourceForge home page: | 
|  | <code>http://sourceforge.net/users/<i>your-userid</i>/</code> . | 
|  | There, you can view all of your SourceForge projects. Also, on the | 
|  | '<a href="https://sourceforge.net/my/myprojects.php">my | 
|  | projects</a>' page you can see all your projects regardless of | 
|  | their approval status.</p> | 
|  |  | 
|  | <p>When accepted, your project will also receive a unique numeric | 
|  | identifier, called a <i>group id</i>, used to access some project | 
|  | resources on SourceForge instead of the Unix project | 
|  | name.</p> | 
|  |  | 
|  | <p>Once your project is created, the next step is to verify your | 
|  | project's public information in the Public Info section, and | 
|  | to classify your project in the <a>Trove Software Map</a>.</p> | 
|  |  | 
|  | <h4>Understanding the Trove Classification</h4> | 
|  |  | 
|  | <p>The Trove — or <a href="http://sourceforge.net/softwaremap/"> | 
|  | software map</a> — is a software categorization and classification | 
|  | system to organize all SourceForge projects. The software map is | 
|  | one of the key links on the SourceForge front page. Together with | 
|  | your keywords and description, the Trove makes your | 
|  | plug-in easier to find.</p> | 
|  |  | 
|  | <p>Unfortunately, the Trove organization does not always fit | 
|  | everyone's model. For example, although there is a top-level | 
|  | category for | 
|  | <a href="http://sourceforge.net/softwaremap/trove_list.php?form_cat=45" | 
|  | >Software Development</a> , the topic | 
|  | <a href="http://sourceforge.net/softwaremap/trove_list.php?form_cat=65" | 
|  | >Integrated Development Environments (IDE)</a> — a good location | 
|  | for many Eclipse plug-ins — is instead under the main topic | 
|  | <a href="http://sourceforge.net/softwaremap/trove_list.php?form_cat=63" | 
|  | >Text Editors</a>.   I recommend placing Eclipse plug-ins that | 
|  | are un-related to Software Development — such as the | 
|  | <a href="http://sourceforge.net/projects/morphine/">Eclipse RSS | 
|  | Reader</a> — in Trove categories that reflect | 
|  | their use, not their implementation technology.</p> | 
|  |  | 
|  | <p>Using the software map, you will have the opportunity to select | 
|  | one to six, and sometimes more, project values in each of several | 
|  | categories: Topic, Operating System, Programming Language, License, | 
|  | Intended Audience, User Interface, Translations, Database | 
|  | Environment, and Development Status . Eclipse plug-in writers | 
|  | should include | 
|  | <a href="http://sourceforge.net/softwaremap/trove_list.php?form_cat=583" | 
|  | ><strong>User Interface :: Plugins :: Eclipse</strong></a> in the | 
|  | set of User Interface values, and under Operating Systems, you may | 
|  | want to choose | 
|  | <a href="http://sourceforge.net/softwaremap/trove_list.php?form_cat=235" | 
|  | ><strong>System :: Grouping and Descriptive Categories :: OS | 
|  | Portable (Source code to work with many OS platforms)</strong></a> | 
|  | . You can also use the | 
|  | <a href="http://sourceforge.net/softwaremap/trove_list.php?form_cat=472" | 
|  | ><strong>User Interface :: Graphical :: Java SWT</strong></a> | 
|  | category.</p> | 
|  |  | 
|  | <p>Review carefully all the options to help your users locate | 
|  | your plug-in while browsing projects categories. See | 
|  | <a href="http://sourceforge.net/docman/display_doc.php?docid=12973&group_id=1" | 
|  | >Software Search and the SourceForge.net Software Map</a> for | 
|  | details.</p> | 
|  |  | 
|  | <p>Note also that you must add each classification one by one by | 
|  | selecting the value in a drop down list then clicking the Add | 
|  | button to its right. You cannot select values for several | 
|  | categories and add them all at once.</p> | 
|  |  | 
|  | <h4>Using SourceForge's CVS server for Eclipse projects</h4> | 
|  |  | 
|  | <p>Now that you have a project that other's can find, | 
|  | it is time to put some content there. The most important | 
|  | content is the source code, managed in a | 
|  | <a href="http://www.cvshome.org/">Concurrent Versions System</a> | 
|  | (CVS) repository. Since Eclipse has built-in support for CVS | 
|  | repositories in the Team development plug-ins, it is | 
|  | straightforward to use within the SFPDE.</p> | 
|  |  | 
|  | <p>Once approved, your project will have a CVS repository dedicated | 
|  | for it at | 
|  | <code>cvs.sourceforge.net/cvsroot/<i>yourprojectname</i></code> . | 
|  | For example, the net.sf.eclipseexeditor project is at | 
|  | <code>cvs.sourceforge.net/cvsroot/eclipseexeditor</code>. | 
|  | Here is my project's CVS view:</p> | 
|  |  | 
|  | <p><img alt="Sample CVS project view" src="images/cvs-view.png" | 
|  | style="width: 407px; height: 222px;" | 
|  | title="Sample CVS project view"/></p> | 
|  |  | 
|  | <p>You can visualize the project partitioning here: I use one directory | 
|  | for the PDE project source, one for the plug-in feature project, | 
|  | one for the update site project, and one for the web site.</p> | 
|  |  | 
|  | <p>For each of your Eclipse projects, invoke the project's | 
|  | context menu from the Package Explorer view and select the menu | 
|  | Team ->Share Project. Chose CVS and complete the Share Project | 
|  | wizard (see the | 
|  | <a href="http://help.eclipse.org/help31/index.jsp?topic=/org.eclipse.platform.doc.user/gettingStarted/qs-61f_syncproject.htm" | 
|  | >Eclipse help</a> for more details) to attach it to the SourceForge | 
|  | CVS repository. If instead you are going to be joining a project | 
|  | that already resides in CVS, you can simply check the project out | 
|  | of CVS using the standard Eclipse Team operations.   Once your CVS | 
|  | repository is defined in Eclipse, you can use the normal Team | 
|  | operations to commit your source to CVS by invoking Team->Commit | 
|  | from each of the project folders. I recommend keeping Eclipse | 
|  | metadata files — <code>.project</code> and <code>.classpath</code> | 
|  | — under version control  so that others can simply checkout | 
|  | the projects from Eclipse's CVS client. Eclipse will | 
|  | automatically detect the project's Java nature, and build path | 
|  | configuration.</p> | 
|  |  | 
|  | <h4>Secure Services</h4> | 
|  |  | 
|  | <p>To commit files to SourceForge's CVS servers and access the | 
|  | shell, you must use SSH.</p> | 
|  |  | 
|  | <p>This means using the <code>extSSH</code> connection method if | 
|  | you want to use Eclipse's built-in CVS and SSH client, or | 
|  | using a properly configured <code>ext</code> method to rely on your | 
|  | favorite SSH client. SSH provides secure communication with the | 
|  | server through encryption.</p> | 
|  |  | 
|  | <p>If your system already has a SSH implementation, you should be | 
|  | able to use it. SSH implementations are available on Macs and most Unix | 
|  | variants, including Linux. Windows users of the Cygwin tool | 
|  | set can use <a href="http://www.openSSH.org/">OpenSSH</a> , or | 
|  | users without Cygwin and OpenSSH can try <a href="http://www.putty.nl/"> | 
|  | PUTTY</a> or another secure shell tool set.</p> | 
|  |  | 
|  | <p>If available, SourceForge recommends using a tool set that uses | 
|  | the SSH2 protocol for greater security, which is the version | 
|  | supported by Eclipse's built-in CVS SSH client.</p> | 
|  |  | 
|  | <p>You will also need SSH to copy files to your project's | 
|  | shell and web space. The SourceForge site help | 
|  | provides complete documentation to | 
|  | <a href="http://sourceforge.net/docman/display_doc.php?docid=6841&group_id=1" | 
|  | >configure SSH</a>.   Windows users may also consider | 
|  | <a href="http://www.winscp.net">WinSCP</a> , a SourceForge | 
|  | <a href="http://sourceforge.net/projects/winscp">project</a> that | 
|  | provides drag and drop integration with Windows. For example, after | 
|  | you update your web site in Eclipse, you can open WinSCP, authenticate, then jump via a WinSCP favorite to your SourceForge | 
|  | project web space and <a href="images/WinSCP.png">drag files | 
|  | from the Eclipse Package Explorer</a> to the WinSCP view.</p> | 
|  |  | 
|  | <h4>Making a software release</h4> | 
|  |  | 
|  | <p>Software releases are the primary mechanism that SourceForge | 
|  | users employ to make downloads available software to their users. | 
|  | SourceForge supports a robust system for releasing your software. | 
|  | Released files are preserved for the lifetime of the project, allowing | 
|  | anyone to download previous releases — although you can hide | 
|  | releases if needed. Making a software release on SourceForge is | 
|  | well documented in the | 
|  | <a href="http://sourceforge.net/docman/display_doc.php?docid=6445&group_id=1" | 
|  | >Guide to the File Release System (FRS)</a>.</p> | 
|  |  | 
|  | <p>SFPDE users can use the FRS to publish plug-in jar files. You | 
|  | should also release your plug-in source as part of each release. | 
|  | There are several ways to do this: you can include source in your | 
|  | jar file (to facilitate debugging in Eclipse) or you can use an | 
|  | Ant task to create a zip file of your source. The fewer the number | 
|  | of files in a release, the easier it is to manage, so it is best to | 
|  | minimize files by using archive files (jar files, zip files, tar.gz | 
|  | files, etc.) to collect the files for a release. Note that with open source projects, users often expect releases to | 
|  | contain the source. It is considered impolite to force users to fetch the | 
|  | source from CVS. Do not forget to include your license file in | 
|  | your release.</p> | 
|  |  | 
|  | <p>To create a release, follow these steps:</p> | 
|  |  | 
|  | <ol> | 
|  |  | 
|  | <li>Login to SourceForge</li> | 
|  |  | 
|  | <li>Select your project</li> | 
|  |  | 
|  | <li>Go to the Admin panel for your project and select the File | 
|  | Releases link from the navigation menu to enter the FRS.</li> | 
|  |  | 
|  | <li>Define a <em>FRS package</em> if none is defined. | 
|  | A FRS package a collection of files associated with a | 
|  | project; each plug-in can map to a FRS package. | 
|  | For my eclipseexeditor project, the FRS contains one package — | 
|  | eclipseexeditor — as shown in the | 
|  | <a href="http://sourceforge.net/project/showfiles.php?group_id=137861" | 
|  | >Files</a> page .</li> | 
|  |  | 
|  | <li>Use anonymous FTP to upload files to upload.sourceforge.net. | 
|  | You may use your favorite FTP client for this. SourceForge does | 
|  | not provide anonymous web upload.</li> | 
|  |  | 
|  | <li>Define a new release — typically named after the version | 
|  | number, such as 0.1, 1.0Beta2, 1.0, 2.0, etc. — for your package | 
|  | by using the SourceForge web interface.</li> | 
|  |  | 
|  | <li>Add files from the anonymous FTP site to the release. The | 
|  | SourceForge web interface provides all you need for this — you | 
|  | add a new file to the release, select that file from the set of all | 
|  | files in the upload area and select a file type. Remember that other SourceForge users are | 
|  | building releases at the same time, so you will see other files | 
|  | there.</li> | 
|  |  | 
|  | <li>Verify the release contents by downloading and installing the | 
|  | plug-in in a clean Eclipse installation.</li> | 
|  |  | 
|  | </ol> | 
|  |  | 
|  | <p>To create a new release, simply click the | 
|  | Add Release button and submit the web form to create a new release. | 
|  | You can then add the files from the anonymous upload site to the | 
|  | release.</p> | 
|  |  | 
|  | <div style="text-align: center;"> | 
|  |  | 
|  | <p><img alt="File Release System - Add a Release" | 
|  | src="images/frs.png" | 
|  | title="File Release System - Add a Release"/></p> | 
|  |  | 
|  | </div> | 
|  |  | 
|  | <p>SourceForge offers download statistics for each released file. | 
|  | You can monitor how many people have downloaded your source zip or | 
|  | Eclipse plug-in. </p> | 
|  |  | 
|  | <p>You may also want to have a look at the  <a href="http://sfutils.sourceforge.net">sfutils</a> package. | 
|  | It provides an Ant task and | 
|  | Java API to automate software releases on SourceForge. With | 
|  | sfutils, you can make a release directly from Eclipse by running | 
|  | Ant.</p> | 
|  |  | 
|  | <h4>Building a web site</h4> | 
|  |  | 
|  | <p>SourceForge provides enhanced web hosting for projects. In | 
|  | addition to basic HTML services, you get:</p> | 
|  |  | 
|  | <ol> | 
|  |  | 
|  | <li>DNS registration. The URL | 
|  | <code>http://yourprojectname.sourceforge.net</code> is reserved | 
|  | for your project web site. For example, my ETEE project is | 
|  | hosted at <a href="http://eclipseexeditor.sourceforge.net"> | 
|  | http://eclipseexeditor.sourceforge.net</a>. I emphasize again | 
|  | the importance of choosing a good project name from the | 
|  | beginning.</li> | 
|  |  | 
|  | <li><a href="http://php.net/">PHP</a>, | 
|  | <a href="http://perl.com/">Perl</a>, | 
|  | <a href="http://python.org/">Python</a> scripting.</li> | 
|  |  | 
|  | <li>MySQL database.</li> | 
|  |  | 
|  | </ol> | 
|  |  | 
|  | <p>You can of course use Eclipse to develop this content. For | 
|  | example, you may use the Eclipse Web Tools project to create your | 
|  | HTML content. There are also PHP authoring plug-ins.</p> | 
|  |  | 
|  | <p>To publish your content, you must use SSH secure copy. | 
|  | You must login under a | 
|  | project's administrator id, which gives you write access to | 
|  | the web page space. Due to the large number of hosted projects, | 
|  | SourceForge uses a branching directory structure to make it | 
|  | easier to navigate and so that clients do not have to download | 
|  | extremely large directory listings. For example, my eclipseexeditor | 
|  | project is stored at | 
|  | <code>/home/groups/e/ec/eclipseexeditor</code>. I use WinSCP to | 
|  | copy files from my home computer to the SourceForge server. In this | 
|  | <a href="images/WinSCP.png">screenshot</a>, I drag a file | 
|  | from the Eclipse package explorer to WinSCP's folder | 
|  | representing my SourceForge-hosted project web space.</p> | 
|  |  | 
|  | <p>Each project is required to | 
|  | <a href="http://sourceforge.net/docs/E07/en/#top">display the | 
|  | SourceForge logo</a> on their web pages hosted on the project web | 
|  | service. There are several logos available. You get the logo | 
|  | image from a special SourceForge URL that includes your project | 
|  | group id. The SourceForge server records a page hit for your project | 
|  | when a web browser displays the image. For example, the image URL | 
|  | <code>http://sourceforge.net/sflogo.php?group_id=137861&type=1</code> | 
|  | counts as a web hit for my ETEE project with the group id 137861. | 
|  | Be sure to use the correct logo image URL so your project gets | 
|  | accurate web statistics.</p> | 
|  |  | 
|  | <h4>Hosting an update site</h4> | 
|  |  | 
|  | <p>You may wonder if you can use the SourceForge web hosting | 
|  | service to host an Eclipse Plug-in update site. There is little | 
|  | guidance on this that I know of. Some people report that this is | 
|  | frowned upon because SourceForge encourages the use of the File | 
|  | Release System (FRS) for hosting binaries. The FRS uses mirror | 
|  | sites around the world to support scalable download services for | 
|  | SourceForge projects. In addition, if you use the FRS, you get the | 
|  | benefits of download statistics that show download counts. Such | 
|  | download counts can raise your project's activity rating and | 
|  | add some momentum to your project. Nevertheless, you have the following | 
|  | alternative for your update site:</p> | 
|  |  | 
|  | <ul> | 
|  |  | 
|  | <li>If you want to host an update site on your project web site | 
|  | instead of using the FRS, you should ask the SourceForge | 
|  | administrators first. It may be bad etiquette to | 
|  | place binary files on the project web site — if overused, binary | 
|  | file downloads could affect web page hosting performance for all | 
|  | SourceForge projects. To deploy your update, you will just need | 
|  | to copy the site to your project web space.</li> | 
|  |  | 
|  | <li>If you want to host an update site using the FRS, the | 
|  | procedure is a bit more complex. The FRS uses mirror sites, so | 
|  | you will need to design your update site so that it obtains files | 
|  | from one mirror only. In addition, the FRS is a flat structure | 
|  | with a single directory per project. Therefore any plug-in and feature | 
|  | you release must have a unique name — you cannot have a feature jar | 
|  | that has the same name as a plug-in jar. | 
|  | You then need to make a release for each feature | 
|  | and plug-in jars to the FRS. Then you need to create an enhanced | 
|  | site.xml file manually. You can find a good example | 
|  | <a href="http://eplug.sourceforge.net/site.xml">here</a> with | 
|  | some explanations at the bottom of the | 
|  | <a href="http://eplug.sourceforge.net/">eplug project home page</a>, which uses that approach. | 
|  | With a bit more | 
|  | work, it should even be possible to take advantage of the Sourceforge mirrors.</li> | 
|  | </ul> | 
|  |  | 
|  | <p>One additional option to consider is to bundle a full update | 
|  | site (the <code>site.xml</code> and jar files etc.) into an | 
|  | archive, and make that file part of your release. Then, users can | 
|  | download the update site and host it locally, for example on a | 
|  | local Eclipse update site on a corporate intranet. Since people | 
|  | will share binaries anyway, you can make it easier and help with | 
|  | wider adoption of your plug-in.</p> | 
|  |  | 
|  | <p>Since an update site can manage multiple plug-ins versions, you | 
|  | should consider defining a separate SourceForge FRS | 
|  | 'package' for your update site archive. If you simply | 
|  | include the update site (call it <code>update-site.zip</code> ) in | 
|  | the normal plug-in package, version 1.0 of | 
|  | <code>update-site.zip</code> will contain version 1.0 of your | 
|  | plug-in. Version 1.1 of <code>update-site.zip</code> will contain | 
|  | both 1.0 and 1.1 of your plug-in. Since SourceForge never deletes | 
|  | previous releases, this practice leads to a lot of unnecessary wasted | 
|  | server space and potential confusion. I find easier to maintain | 
|  | only one release of an update site package (with a release name of | 
|  | "updates" instead of a numbered release name). Then, each | 
|  | time you release a new version of the plug-in, simply replace the | 
|  | current <code>update-site.zip</code> — which contains whatever | 
|  | plug-in versions you wish — within that updated package's | 
|  | release.</p> | 
|  |  | 
|  | <h4>Registering with a plug-in promotion site</h4> | 
|  |  | 
|  | <p>Once you have your plug-in deployed via SFPDE, you need to tell | 
|  | the Eclipse community about it. In addition to the SourceForge | 
|  | Trove, you may wish to consider registering your Plug-in on one of | 
|  | several plug-in listing sites that you can find on the Eclipse.org | 
|  | <a href="http://www.eclipse.org/community/pluginsites.php">community | 
|  | page</a>.</p> | 
|  |  | 
|  | <p>If one of these sites does not drive enough traffic to your | 
|  | plug-in, you can always write and publish an article about Eclipse | 
|  | and figure out an interesting way to plug your plug-in in your | 
|  | article!</p> | 
|  |  | 
|  | <h3>Parting Thoughts</h3> | 
|  |  | 
|  | <p>Explore all the services the '<strong>SourceForge Plug-in | 
|  | Development Environment</strong>' has to offer. Once you have created, | 
|  | configured, and populated your project site, refer to your | 
|  | project's Admin link and the on-line SourceForge documentation | 
|  | to learn how to:</p> | 
|  |  | 
|  | <ul> | 
|  |  | 
|  | <li>Backup up your configuration</li> | 
|  |  | 
|  | <li>Use the compile farm</li> | 
|  |  | 
|  | <li>Choosing your support options</li> | 
|  |  | 
|  | <li>Creating Mailman mailing lists and hosting web discussion | 
|  | forums</li> | 
|  |  | 
|  | </ul> | 
|  |  | 
|  | <p>You will find that SourceForge is a tremendous resource for open | 
|  | source development and the project management of Eclipse plug-ins | 
|  | development projects — a web hosting equivalent of the Eclipse | 
|  | desktop experience. | 
|  | Plug into SourceForge today and see your plug-in reap the myriad | 
|  | benefits SFPDE — SourceForge + Eclipse PDE — has to offer.</p> | 
|  |  | 
|  | <h3>Resources</h3> | 
|  |  | 
|  | <ul> | 
|  |  | 
|  | <li><a href="http://sourceforge.net/">SourceForge.net</a></li> | 
|  |  | 
|  | <li>SourceForge.net | 
|  | <a href="http://sourceforge.net/docman/display_doc.php?docid=6048&group_id=1" | 
|  | >Terms of Use</a></li> | 
|  |  | 
|  | <li><a href="http://sourceforge.net/docs/">SourceForge End User | 
|  | documentation</a></li> | 
|  |  | 
|  | <li><a href="http://www.opensource.org/">opensource.org</a> (OSI)</li> | 
|  |  | 
|  | <li><a href="http://www.javaforge.com/">JavaForge (a SourceForge alternative)</a></li> | 
|  |  | 
|  | </ul> | 
|  |  | 
|  | <hr style="width: 100%; height: 2px;"/> | 
|  |  | 
|  | <h3>Revision History</h3> | 
|  |  | 
|  | <table border="1" cellpadding="2" cellspacing="2" style="width: 100%; text-align: left;"> | 
|  |  | 
|  | <tbody> | 
|  |  | 
|  | <tr> | 
|  |  | 
|  | <th style="vertical-align: top;">Date</th> | 
|  |  | 
|  | <th style="vertical-align: top;">Comment</th> | 
|  |  | 
|  | </tr> | 
|  |  | 
|  | <tr> | 
|  |  | 
|  | <td | 
|  | style="vertical-align: top; background-color: rgb(238, 238, 238);"> | 
|  | October 14, 2005</td> | 
|  |  | 
|  | <td | 
|  | style="vertical-align: top; background-color: rgb(238, 238, 238);"> | 
|  | Created; David J. Biesack, | 
|  | david_biesack@users.sourceforge.net</td> | 
|  |  | 
|  | </tr> | 
|  |  | 
|  | </tbody> | 
|  |  | 
|  | </table> | 
|  | <p>Copyright © 2005 by David J. Biesack</p> | 
|  | <p>To discuss or report problems in this article see <a | 
|  | href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=94940">bug 94940</a>.</p> | 
|  |  | 
|  | <p><small>VA Software and OSTG are trademarks of VA Software | 
|  | Corporation. SourceForge is a registered trademark of VA Software | 
|  | Corporation in the United States and other countries.</small></p> | 
|  |  | 
|  | <p><small>Java and all Java-based trademarks and logos are | 
|  | trademarks or registered trademarks of Sun Microsystems, Inc. in | 
|  | the United States, other countries, or both.</small></p> | 
|  |  | 
|  | <p /> | 
|  |  | 
|  | </body> | 
|  |  | 
|  | </html> | 
|  |  |