# MySQL dump 8.8 # # Host: localhost Database: sourceforge #-------------------------------------------------------- # Server version 3.23.22-beta # # Dumping data for table 'doc_groups' # INSERT INTO doc_groups VALUES (793,'About SourceForge',1); INSERT INTO doc_groups VALUES (794,'SourceForge Development',1); INSERT INTO doc_groups VALUES (801,'Account Information',1); INSERT INTO doc_groups VALUES (802,'CVS - General Information',1); INSERT INTO doc_groups VALUES (803,'CVS - OS Specific Information',1); INSERT INTO doc_groups VALUES (804,'Database Information',1); INSERT INTO doc_groups VALUES (805,'General Documentation',1); INSERT INTO doc_groups VALUES (806,'Project Administration',1); INSERT INTO doc_groups VALUES (807,'Translated Documentation',1); INSERT INTO doc_groups VALUES (808,'Website Hosting Information',1); # MySQL dump 8.8 # # Host: localhost Database: sourceforge #-------------------------------------------------------- # Server version 3.23.22-beta # # Dumping data for table 'doc_states' # INSERT INTO doc_states VALUES (1,'active'); INSERT INTO doc_states VALUES (2,'deleted'); INSERT INTO doc_states VALUES (3,'pending'); INSERT INTO doc_states VALUES (4,'hidden'); INSERT INTO doc_states VALUES (5,'private'); # MySQL dump 8.8 # # Host: localhost Database: sourceforge #-------------------------------------------------------- # Server version 3.23.22-beta # # Dumping data for table 'doc_data' # INSERT INTO doc_data VALUES (753,1,'SourceForge services','<H1>Summary of SourceForge Services</H1>\r\n\r\n<P>Following is a list of the services which \r\nwe currently provide to SourceForge projects.\r\nWe expect to continually add services and improve upon\r\nthe services on this list.\r\n\r\n<P><B>The SourceForge Team Development Environment (TDE)</B>\r\na\r\n<UL>\r\n<li><B>TDE Web Administrative Tools</B>\r\n<BR><I>Advanced web-based administrative tools\r\nprovide easy maintenance for all facets of your project.</I>\r\n<BR><li><B>Web Server</B>\r\n<BR><I><P>Each project receives its own Apache-style htdocs and cgi-bin directories.\r\nCGI can be executed only from the cgi-bin directory and is ScriptAliased to\r\nhttp://yourproject.SourceForge.net/cgi-bin/. Your domain is hosted on\r\na name-based VirtualHost on the main project web server.\r\n\r\n<P>The Apache server is compiled with PHP3/MySQL support and is able to\r\naccess your MySQL database.\r\n\r\n<P>There is a 100MB soft quota for your web site and anonymous FTP directory.\r\n(The high-capacity file server has no limit.) More space can be requested.\r\n</l>\r\n<LI><B>MySQL Database</B>\r\n<BR><I>Your shell account and web server have access to your project\'s own MySQL database.</I>\r\n<BR><A href="display_topic.php?topicid=11">[Details...]</A>\r\n<BR><LI><B>Your Own Domain</B>\r\n<BR><I>If you make the registration with Internic, we can\r\nanswer for your domain. That is, we can configure our webserver to respond for [whatevername.{com,net,org}. We currently\r\naren\'t providing primary/secondary DNS hosting.\r\nThis will affect all domains that would otherwise be\r\nreferenced by yourproject.SourceForge.net.</I>\r\n<!--<BR><LI><B>Mail Aliases</B>\r\n<BR><I>A web interface provides unlimited control over mail aliases at\r\nalias@yourproject.SourceForge.net.</I>-->\r\n<BR><li><B>E-mail Lists</B> (Public & Private)\r\n<BR><I>The Mailman mailing list manager and majordomo are available\r\nfor your mailing lists.</I>\r\n<BR><li><B>CVS Repository</B> \r\n<BR><I>Each project has its own CVS repository (with separate CVSROOT).\r\nDevelopers are granted secure access to the tree through SSH. Anonymous\r\nCVS/pserver access is granted to the general public.</I>\r\n\r\n<P>This means that your cvs logs, history files, and behavior\r\nare unique to your repository. This allows us to customize certain\r\nprojects on request. The old method of housing several directories\r\nin one CVS tree also led to the mixing of log files and inability\r\nto separate certain parts of projects easily.\r\n\r\n<P>We\'ve made custom changes to the CVS code to allow us to host\r\nthis many CVS Repositories through one access point, and to\r\nclean up the handling of anonymous CVS users.\r\n\r\n<P>We have chosen to allow developers to access the CVS reponsitories\r\nthrough SSH, which the CVS client can easily do by setting one\r\nenvironment variable (and installing SSH).\r\n\r\n<P>While normally this would open up the CVS box to shell access,\r\nan in-house developed custom shell ensures that only SSH/CVS access\r\nis allowed.\r\n\r\n<P>We open up the repositories for anonymous access through pserver.\r\nNo passwords are sent in anonymous CVS access.\r\n\r\n<li><B>High-capacity File Server</B>\r\n<BR><I>Released versions of your project are stored on our\r\nextreme-capacity fileserver. Current capacity for this server\r\nis 1000 concurrent ftp and 3000 concurrent http connections.</I>\r\n<BR><li><B>Mid-capacity FTP directory</I>\r\n<BR><I>Full read/write access to your own FTP directory, available\r\nanonymously to the outside world.</I>\r\n<BR><li><B>Project Management Software</B>\r\n<BR><li><B>Support system</B>\r\n<l>The support tools bundled with your project will allow you to help users in a recorded forum, so that your prior\r\nuser problems will be indexed for later tracking.\r\n<BR><li><B>Patch Manager</B>\r\n<l>The patch manager allows for people external to the project to submit patches, allowing you to accept external developer support.\r\n<BR><li><B>Bug-Tracking System</B> (Public & Private)\r\n<BR><li><B>Discussion Forums</B> (Public & Private)\r\n<BR><li><B>SSH Account</B>\r\n<BR><I>A restricted SSH account provides basic shell functions, your own crontab,\r\nand access to your HTTP account for you and all of your developers.</I>\r\n</p> ',968792095,968791939,1458,793,'aka \'What do I get?\''); INSERT INTO doc_data VALUES (754,1,'Harware behind SourceForge',' <p> <P><H1>SourceForge Hardware Summary</H1></P>\r\n\r\n<P>\r\n<TABLE>\r\n<TR valign=top>\r\n<TD><B>Load Balancing Firewall Server</B></TD>\r\n<TD>PII 350<BR>128MB RAM<BR> 4.5GB U2W SCSI HDD</TD>\r\n</TR>\r\n\r\n<TR valign=top>\r\n<TD><B>SourceForge Web Server 1</B></TD>\r\n<TD>Dual PIII 600<BR>512MB RAM<BR> 18GB U2W SCSI HDD</TD>\r\n</TR>\r\n\r\n<TR valign=top>\r\n<TD><B>SourceForge Web Server 2</B></TD>\r\n<TD>Dual PIII 600<BR>512MB RAM<BR> 18GB U2W SCSI HDD</TD>\r\n</TR>\r\n\r\n<TR valign=top>\r\n<TD><B>SourceForge Database Server</B></TD>\r\n<TD>Quad PII-Xeon 400<BR>2GB RAM<BR>75GB RAID-5</TD>\r\n</TR>\r\n\r\n<TR valign=top>\r\n<TD><B>SourceForge File Server</B></TD>\r\n<TD>Quad PII-Xeon 400<BR>2GB RAM<BR>850GB on 5 Mylex ExtremeRaid Controllers</TD>\r\n</TR>\r\n\r\n<TR valign=top>\r\n<TD><B>SourceForge Mail/DNS Server</B></TD>\r\n<TD>Dual PII-350<BR>512MB RAM<BR>54GB U2W SCSI HDD</TD>\r\n</TR>\r\n\r\n<TR valign=top>\r\n<TD><B>Geocrawler Mail Archiver</B></TD>\r\n<TD>Dual PIII-500<BR>1GB RAM<BR>154GB RAID-5</TD>\r\n</TR>\r\n\r\n<TR valign=top>\r\n<TD><B>Sitewide Backup Server</B></TD>\r\n<TD>PII-350<BR>128MB RAM<BR>18GB U2W SCSI HDD<BR>5 Seagate 25GB Native AIT Tape Drives</TD>\r\n</TR>\r\n\r\n<TR valign=top>\r\n<TD><B>Project CVS Server</B></TD>\r\n<TD>Dual PIII-600<BR>1GB RAM<BR>75GB RAID-5</TD>\r\n</TR>\r\n\r\n<TR valign=top>\r\n<TD><B>Project Web Server</B></TD>\r\n<TD>Dual PIII-600<BR>512MB RAM<BR>2 18GB U2W SCSI HDD</TD>\r\n</TR>\r\n\r\n<TR valign=top>\r\n<TD><B>Project Database Server</B></TD>\r\n<TD>Dual PIII-Xeon 500<BR>1GB RAM<BR>35GB RAID-5</TD>\r\n</TR>\r\n\r\n<TR valign=top>\r\n<TD><B>Totals (Rough)</B></TD>\r\n<TD>CPU: 11.4Gz<BR>RAM: 9.5GB<BR>Storage: 1.34TB (Formatted Storage, After RAID)</TD>\r\n</TR>\r\n\r\n</TABLE>\r\n',968792102,968792041,1458,793,'aka\' How many boxen ya got?\''); INSERT INTO doc_data VALUES (755,1,'Software behind SourceForge','<P>\r\n<h1>The Software behind SourceForge</h1>\r\n\r\n<P>In addition to writing much of our own software, we utilized the\r\nefforts of many great software developers, and would like to \r\nrecognize their products here. These are all fantastic products and\r\nwe would be happy to talk about how we have implemented them to any\r\ninterested parties. \r\n\r\n<HR>\r\n\r\n<table border=0 cellspacing=2 cellpadding=2 bgcolor="" valign="bottom">\r\n<tr valign=top>\r\n<td><a href="http://www.amanda.org/">Amanda</a></td>\r\n<td>AMANDA, the Advanced Maryland Automatic Network Disk Archiver, is a backup system that allows the administrator of a LAN to set up a single master backup server to back up multiple hosts to a single large capacity tape drive.</td>\r\n</tr>\r\n\r\n<tr valign=top>\r\n<td><a href="http://www.apache.org/">Apache</a></td>\r\n<td>Apache is an award winning webserver that made this site possible.</td>\r\n</tr>\r\n\r\n<tr valign=top>\r\n<td><a href="http://www.boa.org/">Boa</a>*</td>\r\n<td>Boa is a single-tasking HTTP server. That means that unlike traditional web servers, it does not fork for each incoming connection, nor does it fork many copies of itself to handle multiple connections.</td>\r\n</tr>\r\n\r\n<tr valign=top>\r\n<td><a href="http://www.cyclic.com/">CVS</a>*</td>\r\n<td>CVS is the Version Control system that we use, for both our development and that of the projects.</td>\r\n</tr>\r\n\r\n<tr valign=top>\r\n<td><a href="http://stud.fh-heilbronn.de/~zeller/cgi/cvsweb.cgi/">cvsweb</a>*</td>\r\n<td>A script to allow easy viewing of live CVS repositories.</td>\r\n</tr>\r\n\r\n<tr valign=top>\r\n<td><a href="http://www.leonine.com/~ltemplin/">Grap</a></td>\r\n<td>General execution wRAPper. Grap is a wrapper designed to verify commands before executing them.</td>\r\n</tr>\r\n\r\n<tr valign=top>\r\n<td><a href="http://www.linuxvirtualserver.org/">IPVS</a></td>\r\n<td>Virtual server is a scalable and highly available server built on a cluster of real servers. The architecture of the cluster is transparent to end users, and the users see only a single virtual server.</td>\r\n</td>\r\n\r\n<tr valign=top>\r\n<td><a href="http://www.list.org/">GNU MailMan</a>*</td>\r\n<td>Mailman is software to help manage email discussion lists, much like Majordomo and Smartmail. Unlike most similar products, Mailman gives each mailing list a web page, and allows users to subscribe, unsubscribe, etc. over the web.</td>\r\n</tr>\r\n\r\n<tr valign=top>\r\n<td><a href="http://www.modssl.org/">ModSSL</a></td>\r\n<td>The mod_ssl project provides strong cryptography for the Apache 1.3 webserver via the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) protocols by the help of the Open Source SSL/TLS toolkit OpenSSL, which is based on SSLeay from Eric A. Young and Tim J. Hudson.</td>\r\n</tr>\r\n\r\n<tr valign=top>\r\n<td><a href="http://www.mysql.com/">MySQL</a></td>\r\n<td>MySQL is a true multi-user, multi-threaded SQL database server. SQL (Structured Query Language) is the most popular and standardized database language in the world. MySQL is a client/server implementation that consists of a server daemon mysqld and many different client programs and libraries.</td>\r\n</tr>\r\n\r\n<tr valign=top>\r\n<td><a href="http://www.php.net/">PHP</a></td>\r\n<td>PHP is a server-side, cross-platform, HTML embedded scripting language.</td>\r\n</tr>\r\n\r\n<tr valign=top>\r\n<td><a href="http://www.redhat.com/">Redhat Linux</a></td>\r\n<td>Red Hat Linux is a powerful, extremely stable, next-generation computer operating system that provides a high performance computing environment for both server and desktop PCs.</td>\r\n</tr>\r\n\r\n<tr valign=top>\r\n<td><a href=http://sourceforge.net/project/?group_id=1>SourceForge</a></td>\r\n<td>A bundle of the home made software that runs www.sourceforge.net, distributed\r\nunder the GPL license.</td>\r\n</tr>\r\n\r\n<tr valign=top>\r\n<td><a href="http://www.ssh.fi/">SSH</a></td>\r\n<td>Secure Shell is a program that allows you to open an encrypted connection to another computer. It allows remote execution of command and copying of files from one machine to another.</td>\r\n</tr>\r\n\r\n</table>\r\n',968792386,968792185,1458,793,'Open Source is a good thing'); INSERT INTO doc_data VALUES (756,1,'Frequently Asked Questions','<P><H1>SourceForge Frequently Asked Questions (FAQ)</h1>\r\n\r\n<UL>\r\n<LI><A href="#what-main">What is SourceForge?</A>\r\n <UL>\r\n <LI><A href="#what-os">What is Open Source software?</A>\r\n <LI><A href="#what-beta">What is this "public beta"? When is your full release?</A>\r\n </UL>\r\n<LI><A href="#whodev-main">Who develops SourceForge?</A>\r\n <UL>\r\n <LI><A href="#whodev-why">Why did you create SourceForge?</A>\r\n <LI><A href="#whodev-pays">Who pays for SourceForge?</A>\r\n <LI><A href="#whodev-mot">What is the motivation to pay for something like this?</A>\r\n <LI><A href="#whodev-catch">This seems like an awful lot of free stuff. What\'s the catch?</A>\r\n <LI><A href="#whodev-help">That\'s cool! I\'d really like to help. Can I?</A>\r\n </UL>\r\n<LI><A href="#whohost-main">Who can host with SourceForge?</A>\r\n <UL>\r\n <LI><A href="#whohost-web">What if I don\'t have software, but wanted you to host my web site?</A>\r\n <LI><A href="#whohost-rest">Are there any restrictions on the types of software I can host here?</A>\r\n <LI><A href="#whohost-com">Can I host commercial software on SourceForge?</A>\r\n <LI><A href="#whohost-owns">Who owns the source code on SourceForge?</A>\r\n <LI><A href="#whohost-stop">What if I host with SourceForge, then decide to stop?</A>\r\n </UL>\r\n<LI><A href="#whyhost-main">Why should I host my software with SourceForge?</A>\r\n <UL>\r\n <LI><A href="#whyhost-secure">Is SourceForge secure?</A>\r\n <LI><A href="#whyhost-backup">What is your backup strategy?</A>\r\n <LI><A href="#whyhost-all">Do I have to use all of your services? Can I just use mailing lists, or bug tracking?</A>\r\n <LI><A href="#whyhost-root">Won\'t I lose a lot of control if I don\'t have root access?</A>\r\n <LI><A href="#whyhost-cvs">I already have a cvs tree. Can you import it?</A>\r\n <LI><A href="#whyhost-files">I have a lot of file releases already. Can I make them available on the main file server?</A>\r\n </UL>\r\n<LI><A href="#big-main">So how big is all this, really?</A>\r\n <UL>\r\n <LI><A href="#big-fad">Isn\'t Open Source a fad? Can it really work?</A>\r\n <LI><A href="#big-cap">How much capacity does SourceForge have right now?</A>\r\n <LI><A href="#big-scale">Wow. That\'s a lot. Can it scale?</A>\r\n <LI><A href="#big-mirror">Are you going to mirror SourceForge? (and can I pay for it?)</A>\r\n <LI><A href="#big-ready">I thought Linux wasn\'t ready for the enterprise. What was your setup experience like?</A>\r\n <LI><A href="#big-wait">What improvements in Linux/Open Source software are you still waiting for? </A>\r\n <LI><A href="#big-future">What is the future of SourceForge?</A>\r\n </UL>\r\n<LI><A href="#whowrote">Who wrote this FAQ? Are you available?</A>\r\n</UL>\r\n\r\n<HR noshade>\r\n\r\n<P><A name="what-main"> </A><B>What is SourceForge?</B>\r\n<P>SourceForge is a free hosting service for <A href="http://www.opensource.org">Open Source</A> \r\ndevelopers which offers, among other things, a CVS repository, mailing lists,\r\nbug tracking, message forums, task management software, web site hosting,\r\npermanent file archival, full backups, and total web-based administration.\r\nA more <A href="services.php">complete description of services</A> is\r\navailable. \r\n\r\n<P><A name="what-os"> </A><B>What is Open Source software?</B>\r\n<P>In short, Open Source software is software with source code made available to the public,\r\nwith no fees or royalties for use or distribution. The official definition, as well\r\nas the rationale and history behind open source software, can be found\r\nat <A href="http://www.opensource.org">The Open Source Initiative</A>\'s web site.\r\n<P>In the near future we will have an Open Source FAQ, with discussion\r\nabout the legalities of Open Source software, business justification,\r\nand market trends.\r\n\r\n<P><A name="what-beta"> </A><B>What is this "public beta"? When is your full release?</B>\r\n<P>SourceForge includes a lot of components, from the scripts that run behind\r\nthe scenes, to administrative pages for project leaders, to front-end material\r\nfor casual browsers. We have reached a stability point in most of the backend\r\ncode that we would like to start receiving input from developers on SourceForge.\r\n<P>SourceForge is now a very functional site/system, and in fact many developers\r\nare now working on projects from within the SourceForge framework. We now need\r\nyour help to mold SourceForge into a tool that will truly benefit\r\nOpen Source developers.\r\n<P>We will call ourselves a full release when we think the site is worthy of it.\r\nThe services are available now, however. The "full release" will be more of a\r\nsymbolic occasion than anything else.\r\n\r\n<P><A name="whodev-main"> </A><B>Who develops SourceForge?</B>\r\n<P>The <A href="http://sourceforge.net/staff.php">SourceForge admin staff</A>, Tony, Drew, Tim, and Uriah,\r\ndeveloped most of what you see on SourceForge now. We of course owe a lot of credit\r\nto the <A href="http://sourceforge.net/docs/site/software.php">software</A> that made our work a lot easier,\r\nand to the <A href="http://sourceforge.net/thanks.php">people and organizations</A> that donated time\r\nand hardware to make SourceForge possible. \r\n<P>SourceForge started out as a small idea that just refused to stop growing. \r\nMany people have been incredibly helpful along the way. We would like to thank\r\nthe entire open source community for the support that they are known for.\r\n\r\n<P><A name="whodev-why"> </A><B>Why did you create SourceForge?</B>\r\n<P>Strangely, a system this big wasn\'t our original intention. We really had no idea\r\nthat there would be such a reception for this kind of innovation in hosting\r\nopen source software.\r\n<P>As open source developers ourselves, we have run into the kinds of obstacles\r\nthat still plague many would-be developers. It was our intent to remove many\r\nof those obstacles and let developers focus on software development.\r\n(An odd concept, but easier to get used to than you\'d think.) \r\n<P>A suite of tools isn\'t enough, though. In the end, you need the hardware\r\npower for the whole setup, which might lead to your next question:\r\n\r\n<P><A name="whodev-pays"> </A><B>Who pays for SourceForge?</B>\r\n<P><A href="http://valinux.com">VA Linux Systems</A> has supported this project\r\nfrom the beginning. Some of us were employed by VA before the conception\r\nof SourceForge (although none had ever worked in the same department), others\r\nwere hired specifically for this project.\r\n<P>The <A href="hardware.php">hardware behind this site</A> is truly\r\nimpressive, and has proven to us VA\'s dedication to this project and to Open Source\r\ndevelopment.\r\n\r\n<P><A name="whodev-mot"> </A><B>What is the motivation to pay for something like this?</B>\r\n<P>Stop looking for ulterior motives or fantasies about world domination.\r\nThere are some good business reasons why a Linux company would\r\nbenefit from a site such as this.\r\n<P>VA Linux Systems thrives upon the success of Open Source software in\r\ngeneral. They sell Linux systems, installed with a myriad of Open Source\r\ntools and applications, to clients that require enterprise-ready\r\ncomponents and software. They also sell support for these systems.\r\nIf the selection and quality of Open Source\r\nsoftware improves, VA can offer its customers more competitive solutions.\r\n<P>On a more personal note, VA is not a behemoth with no sense\r\nof the community which made it grow. I joined VA because they would allow\r\nme to continue to spend significant amounts of my time in Open Source development.\r\nThey have never taken that freedom from me, and in fact have encouraged\r\nemployees to take part in community endeavors. This site is the real \r\nthing. -drew\r\n\r\n<P><A name="whodev-catch"> </A><B>This seems like an awful lot of free stuff. What\'s the catch?</B>\r\n<P>There\'s no catch.\r\n<P>I\'m an Open Source developer. I work on a project to aid other Open Source developers.\r\nSo do many other developers. An Open Source friendly company pays for it, and we thank them a lot.\r\n<P>Do you always ask this many questions?\r\n\r\n<P><A name="whodev-help"> </A><B>That\'s cool! I\'d really like to help. Can I?</B>\r\n<P>Of course.\r\n<P>We\'re working on a lot of ways that we can utilize the help of the\r\nrest of the community.\r\n<P>As soon as we can clean up some of this code and package it in some recognizable\r\nformat, we\'ll be releasing many of the SourceForge web-based tools as\r\nOpen Source projects in SourceForge. (That still confuses me, but\r\nsomehow the logic works.) This means that we can take on developers on \r\nthese projects, and as the tools improve, the new versions will automatically\r\nbe available to other SourceForge project developers.\r\n<P>There will also be a place for other users of SourceForge to help.\r\nWe expect to eventually have some sort of news system that will require maintenance,\r\nwe could definitely use help answering emails, and we could always\r\nuse help with site design. (Don\'t laugh. We\'re software developers, not artists.)\r\n<P>Everyone can help by answering the site surveys that we will\r\noccasionally post. Answers to these questions will directly influence\r\nthe direction of our development.\r\n\r\n<P><A name="whohost-main"> </A><B>Who can host with SourceForge?</B>\r\n<P>We\'re trying to keep it simple, and chose to rely on the work of a\r\nvery talented group, the <A href="http://www.opensource.org">Open Source Initiative</A>.\r\nIf your software utilizes one of the OSI\'s \r\n<A href="http://www.opensource.org/licenses/">approved licenses</A>, we\'d\r\nlove to offer you hosting at SourceForge. Software that falls under\r\nother licenses will require further scrutiny, but is not altogether ruled out.\r\nIn the end, we\'re looking to further Open Source software development,\r\nand will approve projects accordingly.\r\n\r\n<P><A name="whohost-web"> </A><B>What if I don\'t have software, but wanted you to host my web site?</B>\r\n<P>If you\'re site is oriented towards the Open Source community, we\'d\r\nprobably be happy to offer you hosting. Please be careful with this one, though.\r\nWe\'re not here to host personal homepages, or your Southpark picture\r\narchive (despite how much we all love Southpark). There are plenty of\r\nfree site hosting services for these sites. Our goal is the advancement\r\nof Open Source, and if your web site does that, we\'d love to have you.\r\n\r\n<P><A name="whohost-rest"> </A><B>Are there any restrictions on the types of software I can host here?</B>\r\n<P>For legal reasons, we can\'t host strong-encryption products with code\r\nthat originated outside of the US. We\'re working on a system to allow the hosting\r\nUS-originated strong-encryption, with restricted access to downloads.\r\n<P>We are also not set up with the right age-checking mechanisms to host\r\nmaterial/software of a pornographic nature. (As nice as a local connection\r\nto your porn archive might be to us, we just can\'t do it.) There is a more complete definition\r\nof these restrictions in the terms of service agreement, presented \r\nduring project registration.\r\n<P>Cut us some slack on this one. We\'re trying to keep ourselves and the\r\ncompany that provided all of this hardware and bandwidth out of trouble.\r\nWe\'re not here to start a political discussion.\r\n\r\n<P><A name="whohost-com"> </A><B>Can I host commercial software on SourceForge?</B>\r\n<P>Maybe.\r\n<P>If your commercially developed software is Open Source, then yes.\r\n<P>If your commercially developed software is not yet Open Source, but will be later, then probably yes.\r\n<P>If your commercially developed software is not Open Source, but may help\r\nto advance other Open Source software, then maybe.\r\n<P>If you just like our tools so much that you want to use them, then\r\ngo ahead. We\'ll be releasing many of them as Open Source soon. If this\r\n\r\nprospect overwhelms you, then contact VA Linux Professional\r\nServices, they\'ll be glad to help you. (Shameless plug for\r\nour sponsors.)\r\n\r\n<P><A name="whohost-owns"> </A><B>Who owns the source code on SourceForge?</B>\r\n<P>The individual authors hold the copyright on their own software. Because\r\nof the nature of Open Source licenses, we are allowed to give people access\r\nto that software; however, all license disputes and issues are the responsibilities\r\nof the individual authors.\r\n<P>There is often a misconception that Open Source software does not actually\r\nhave a license holder, because of its free nature. This is not the case, however,\r\nand software hosted on SourceForge is responsible for its own licensing.\r\n\r\n<P><A name="whohost-stop"> </A><B>What if I host with SourceForge, then decide to stop?</B>\r\n<P>We would of course like to solve any problems you were having before it came\r\nto this, but in the end, you are free to leave at anytime. After all, we\'re not\r\nthe copyright holders.\r\n<P>Because your software was/is Open Source, however, we will probably still\r\nhave the right to continue to make existing versions of your software available\r\nto the public. If we didn\'t, someone else probably would anyway.\r\n<P>We\'re happy people here. Can\'t we all just Open Source and be happy together?\r\n\r\n<P><A name="whyhost-main"> </A><B>Why should I host my software with SourceForge?</B>\r\n<P>...mumble...free...mumble...gift horse....\r\n<P>But seriously, we\'re not trying to force anything on anybody here. We would\r\nlove people to host with SourceForge because we are a superior hosting service.\r\nIn the spirit of Open Source, we want any popularity we gain to be merit-based.\r\n<P>As we grow, we will also be able to provide you with traffic to your project.\r\nThere is a lot of benefit to giving end-users a window into your development\r\nenvironment. There will be more peer review of your source, and potential developers\r\nwill be wandering by.\r\n\r\n<P><A name="whyhost-secure"> </A><B>Is SourceForge secure?</B>\r\n<P>Yes, we have taken extreme caution in the methods we use for SourceForge\r\nservices. No system is uncrackable, but we continuously monitor the software\r\nwe use for bugs and security holes, and audit our own software regularly.\r\n<P>Encryption is available and enforced on all parts of the SourceForge site\r\nexcept mailing lists. (These passwords should be different than your site\r\npasswords. We are in the process of modifying GNU Mailman to use our own \r\nsecure authentication system.)\r\n<P>We give SSH accounts rather than telnet, SCP rather than ftp, and\r\nCVS/SSH instead of pserver. Site logins are via SSL and site passwords\r\nare never stored nor communicated in plaintext. Because it is possible\r\nto change your site password by confirming your email address (via\r\na partial MD5 hash sent to your registered address), we recommend that\r\nyou also keep your own mail account secure.\r\n\r\n<P><A name="whyhost-backup"> </A><B>What is your backup strategy?</B>\r\n<P>We perform a full backup of all site and project data daily, and rotate\r\nbackups off-site weekly through a large company that specializes in\r\nstoring backup tapes. \r\nWe also have access to a fireproof safe for storage of\r\ndaily tapes.\r\n<P>The exception to this rotation is the mega-file-server, which cannot be fully\r\nbacked up (when full) by less than 34 25GB AIT tapes (our medium of\r\nchoice). It gets a full backup once per month and incrementals otherwise. \r\n\r\n<P><A name="whyhost-all"> </A><B>Do I have to use all of your services? \r\nCan I just use mailing lists, or bug tracking?</B>\r\n<P>You can use whatever you want. If you don\'t need all of the services now,\r\ndon\'t use them. They are there when you need them.\r\n\r\n<P><A name="whyhost-root"> </A><B>Won\'t I lose a lot of control if I don\'t have root access?</B>\r\n<P>Yes and no.\r\n<P>The tradeoff is the security and stability of a professionally managed server.\r\n<P>Once initial setup is through, there really isn\'t much need for root\r\naccess except for security and maintenance upgrades, which we are taking\r\ncare of. We would like to implement all other functions for which you would\r\nnormally require root access via a web interface.\r\n<P>Obviously we can\'t give root access to everyone, or your own security\r\nis at the disposal of any other project admin. We\'re trying to find a happy\r\nmedium. In general we\'ll try to give as much access as we can without damaging\r\nthe security of other projects within SourceForge.\r\n<P>In the end, we\'re here to serve you. VA Linux Systems now pays our salary to\r\noffer you these services. We\'re a pretty responsive bunch. We\'d like to work\r\nthrough any issues you have, just let us know what we need to do. We hope\r\nthat you\'ll find our web administration tools powerful and easy to use. We\'re \r\nconstantly continuing to develop and improve these tools.\r\nIf there is some feature we can add that you think we\'ve forgotten, \r\nplease let us know.\r\n\r\n<P><A name="whyhost-cvs"> </A><B>I already have a cvs tree. Can you import it?</B>\r\n<P>Yes. Register a new project normally and let us know you need to import a\r\nCVS tree. We\'ll need a tar/gzip of your entire document root, including CVSROOT\r\ndirectory. This will preserve your revision history.\r\n\r\n<P><A name="whyhost-files"> </A><B>I have a lot of file releases already. \r\nCan I make them available on the main file server?</B>\r\n<P>Yes, when releasing new files via the project admin interface, there\r\nis an option to set the release date of each file. You may back-populate\r\nyour release history in this manner. That way all previous revisions of your\r\nsoftware are available on the main file server.\r\n\r\n<P><A name="big-main"> </A><B>So how big is all this, really?</B>\r\n<P>We are all of course biased, but it is this writer\'s opinion that this is one\r\nof the best opportunities for Open Source developers in history.\r\n\r\n<P><A name="big-fad"> </A><B>Isn\'t Open Source a fad? Can it really work?</B>\r\n<P>Ack! \r\n<P>This site\'s developers and the company behind it believe deeply in the concepts\r\nof Open Source software.\r\n<P>Open Source is not a fad. Open Source can and does work. This site is proof of\r\nthat. We would not have been able to offer many of our functions without modifications\r\nto many programs we use. Their open source let us make these modifications (which\r\nwere sent back to the original authors for inclusion in the next versions of their\r\nsoftware).\r\n<P><RANT>I can\'t believe that after BIND, Apache, Samba, PERL, Linux, and the\r\nGNU toolset, you can still ask that question.</RANT>\r\n\r\n<P><A name="big-cap"> </A><B>How much capacity does SourceForge have right now?</B>\r\n<P>A quick look at our <A href="hardware.php">hardware list</A> will partially\r\nanswer that question.\r\n<P>We\'ve performed many real-world benchmarks of the various parts of our systems.\r\nWe are capable of handling many projects now, and will scale our systems\r\nto meet demand. Nobody likes a slow server, especially us.\r\n<P>If you want some quick stats on our current systems, here you go:\r\n<UL>\r\n<LI>At 100% usage, our main web servers can handle approximately 8.6 million PHP pageviews\r\ndaily. (Including all of the site authentication necessary for each view.)\r\n<LI>The project web server can handle about 12 million pageviews daily with simple PHP\r\npages, and some unknown (think large numbers) millions of static pages.\r\n<LI>We can\'t properly benchmark our main file server, because we keep saturating its\r\ncurrent 100Mbit connection. We\'ve managed to get 93.8Mbit with 5000 concurrent HTTP\r\nconnections with it though (using only one of its four processors). If we start\r\napproaching our facility bandwidth (a couple of DS-3\'s and a T-1 right now), then we\'ll start\r\nlooking at gigabit and more digital drops. (Don\'t tell the CFO.)\r\n<LI>The 1.3 terabytes of storage in the room gets very loud.\r\n<LI>We blew many circuit-breakers when we were building this thing. Dedicated\r\n220V/30A power circuits solved this problem.\r\n<LI>Our UPS weighs about as much as our entire team.\r\n<LI>VA systems rock. (Another shameless sponsor plug)\r\n</UL>\r\n\r\n<P><A name="big-scale"> </A><B>Wow. That\'s a lot. Can it scale?</B>\r\n<P>Yes, and don\'t threaten us or we\'ll do it.\r\n\r\n<P><A name="big-mirror"> </A><B>Are you going to mirror SourceForge? (and can I pay for it?)</B>\r\n<P>We will probably be mirroring the main file server sometime in the near\r\nfuture. The real problem is the databases behind the main website and synchronization\r\nof all the other servers in real-time.\r\n<P>For now, we\'re content to have good backups, and spare hardware to put\r\nin place if something should fail. \r\n<P>We do take reliability seriously, and a non-west-coast mirror does seem like\r\na good idea. In lieu of a realtime mirror, we\'re considering setting up a \r\nfailover mirror that would lag a few minutes behind the live site.\r\nWe\'re pursuing our options here and will keep you posted.\r\n<P>As for the second question... VA\'s CFO says, yes, you may pay for it.\r\n\r\n<P><A name="big-ready"> </A><B>I thought Linux wasn\'t ready for the \r\nenterprise. What was your setup experience like?</B>\r\n<P>We\'re working on a paper detailing our experience setting up this system.\r\nWe expect to publish it soon.\r\n<P>For those of you that can\'t wait, it can be summarized, "Yay Open Source."\r\n\r\n<P><A name="big-wait"> </A><B>What improvements in Linux/Open Source software are you still waiting for? </B>\r\n<P>We\'re especially anxious to see shared disk arrays over fibre channel,\r\na journalled file system (although we\'re looking at promising ones now),\r\n32-bit UIDs (should be fixed with the new file system),\r\nbetter scheduling (apparent in the development Linux kernels),\r\nand support for my Philips PC Camera.\r\n\r\n<P><A name="big-future"> </A><B>What is the future of SourceForge?</B>\r\n<P>It is looking good, my friend.\r\n<P>VA is committed, we\'re committed, and we\'ve already got ideas that will\r\ncontinue to drive us for months.\r\n<P>The rest is up to you. Help us to help you, and we can all help to advance\r\nOpen Source to new heights.\r\n\r\n<P><A name="whowrote"> </A><B>Who wrote this FAQ? Are you available?</B>\r\n<P>This FAQ was written by <A href="mailto:dtype@valinux.com">Drew Streib</A> (dtype),\r\nalthough I\'m sure it will be modified by many people in the future, especially\r\nafter they see what I\'ve written.\r\n<P>Yes.',968792394,968792324,1458,793,'FAQ'); INSERT INTO doc_data VALUES (757,1,'VA Linux Affiliate Underground','<h1>VA LINUX AFFILIATE UNDERGROUND </h1><P>VA Linux has rolled out a VA Linux/Community banner program. By displaying VA Linux and Open Source\r\nproject banners on your content pages (hosted on SourceForge or anywhere else), you can earn points redeemable for Debian T-shirts, Geek,\r\nGnome and Tux hats, a Tux Polo shirt, Quake III for Linux...and the much sought after VA Linux and Themes.org T-shirts. (It\'s not that hard, you get a\r\npoint per banner impression, and prizes start at 5000 points.) You can read more and sign up at: http://www.valinux.com/about/affiliates/affiliate.html ',968792399,968792373,1458,793,'Earn swag by displaying VA and Open Source banners'); INSERT INTO doc_data VALUES (782,1,'Local installation guide',' <B>Local installation guide</b>\r\n\r\n <p>This is an installation guide for the SourceForge software as found\r\non <a href=http://sourceforge.net/project/?group_id=1>SourceForge</a>.\r\nThis is not yet complete but allows to experiment everything not involving\r\nDNS, CVS, cvsweb, ftp.\r\n\r\n<pre>\r\n-------------------------------------------------------------------------------\r\nCreating the MySQL database (assuming MySQL version >= 3.22.25)\r\n\r\n1) Install MySQL from http://www.mysql.com/\r\n\r\n2) Choose a database name (let\'s say \'sourceforge\' for the rest of\r\n this document).\r\n\r\n mysql -e "create database sourceforge"\r\n\r\n3) Create the tables.\r\n\r\n mysql sourceforge < db/SourceForge.sql \r\n\r\n This script also populates the following tables\r\n\r\n bug_resolution\r\n bug_status\r\n patch_category\r\n patch_status\r\n project_status\r\n survey_question_types\r\n user\r\n\r\n-------------------------------------------------------------------------------\r\nConfiguring Apache with SSL (assuming Apache version >= 1.3.9 \r\n openssl version >= 0.9.4\r\n mod_ssl version >= 2.4.10-1.3.9)\r\n\r\nThe best starting point is http://www.modssl.org/. There is very\r\nlittle chance that your installed Apache server contains SSL, you\'ll\r\nhave to recompile and reinstall. I highly recommend to install Apache\r\nit in a non-standard place. It won\'t interfere with your working\r\nApache, if any. And, more important, the installation process will \r\ninstall sample configuration files instead of keeping them in the\r\nsource directory because you already have some installed. \r\n\r\n1) Install openssl\r\n\r\n2) Configure mod_ssl\r\n\r\n3) Install Apache\r\n\r\n-------------------------------------------------------------------------------\r\nConfiguring Apache with PHP (assuming Apache version >= 1.3.9 and \r\n php3 version >= 3.0.12) \r\n\r\n1) Create a file in the Apache document root named phpinfo.php\r\n\r\n echo \'<? phpinfo(); ?>\' > .../phpinfo.php \r\n\r\n Try to load it with your browser using http://localhost/phpinfo.php. \r\n If it shows an HTML page you already have php3 installed.\r\n If the page shown contains the word MySQL you have php3 compiled\r\n with MySQL support. \r\n If you see the page and find MySQL in it, you\'re finished with this\r\n chapter. Otherwise proceed to the following steps.\r\n\r\n2) Make sure php3 is compiled in.\r\n Try to access http://localhost/server-info and search for php3. If\r\n it\'s found somewhere in the page, the php3 module is available. \r\n If http://localhost/server-info does not work add the following lines to \r\n the access.conf file:\r\n\r\n #\r\n # Allow remote server configuration reports, with the URL of\r\n # http://servername/server-info (requires that mod_info.c be loaded).\r\n # Change the ".your_domain.com" to match your domain to enable.\r\n #\r\n <Location /server-info>\r\n SetHandler server-info\r\n Order deny,allow\r\n Deny from all\r\n Allow from localhost\r\n </Location>\r\n\r\n If you did not find php3 you\'ll have to recompile it yourself. See\r\n http://www.php.net/ and remember that you must re-compile php3 with\r\n MySQL support.\r\n\r\n3) Activate php3.\r\n\r\n In order to activate php3 the following lines must be found in the\r\n httpd.conf file:\r\n\r\n LoadModule php3_module modules/libphp3.so\r\n AddModule mod_php3.c\r\n\r\n4) Enable index.php as a directory index in srm.conf. \r\n\r\n DirectoryIndex index.html index.shtml index.cgi index.php\r\n\r\n5) Add .php extension to srm.conf.\r\n\r\n AddType application/x-httpd-php3 .php3 .php .phtml \r\n AddType application/x-httpd-php3-source .phps \r\n\r\n6) Try loading http://localhost/phpinfo.php again.\r\n\r\n-------------------------------------------------------------------------------\r\nConfiguring php3 and Apache for SourceForge\r\n\r\n1) Change the DocumentRoot\r\n\r\n Since some scripts assume that the document root starts at the\r\n www directory, just say that the document root is this directory.\r\n\r\n In srm.conf\r\n\r\n DocumentRoot /home/loic/local/ports/SourceForge/www\r\n\r\n In access.conf substitute/clone the <Directory> block for the\r\n new document root.\r\n\r\n2) Type the URL http://localhost/ in your navigator.\r\n\r\n You should see an error message like this:\r\n\r\n Fatal error: Failed opening required \'pre.php\' in /home/httpd/html/sf/index.php on line 9\r\n meaning that Apache is properly configured as far as php is concerned.\r\n\r\n3) Specify the include path.\r\n\r\n You must tell php where the include files are. Add the full path to\r\n ../SourceForge/www/include to the include_path variable of the\r\n php.ini file. Something like\r\n\r\n include_path = /home/php:/home/loic/local/ports/SourceForge/www/include\r\n\r\n Alternatively you can add the following lines in httpd.conf:\r\n\r\n <Directory /> \r\n php3_include_path /usr/local/htdocs/alexandria/www/include:. \r\n </Directory>\r\n\r\n4) Include magic in php.ini.\r\n\r\n magic_quotes_gpc = On ; magic quotes for incoming GET/POST/Cookie data \r\n magic_quotes_runtime = Off ; magic quotes for runtime-generated data, e.g. data from SQL, \r\n track_vars = On ; enable $HTTP_GET_VARS[], $HTTP_POST_VARS[] and $HTTP_COOKIE_VARS[] arrays \r\n\r\n5) Restart httpd\r\n\r\n6) Type the URL http://localhost/ in your navigator. Two things\r\n may happen at that point:\r\n\r\n a) You\'re redirected to http://sourceforge.net/ since that\'s what the library does\r\n when you\'re not using localhost in the URL.\r\n\r\n b) You see an error message like this:\r\n\r\n Fatal error: Failed opening required \'/etc/local.inc\' in database.php on line 11\r\n\r\n In either cases it means that the pre.php file was found and that the include\r\n path is correct. \r\n\r\n-------------------------------------------------------------------------------\r\nConfiguring SourceForge\r\n\r\n1) Copy the SourceForge/etc/local.inc sample to /etc/local.inc. Edit\r\n it to fit your system parameters. Variables should have self explanatory\r\n names or comments to make it clearer.\r\n\r\n2) Look at the home page http://localhost/\r\n It should display well.\r\n\r\n3) Create a user named admin\r\n\r\n This user will automatically be assigned server wide administration permissions.\r\n\r\n\r\n</pre>\r\n',968796599,968794910,1458,794,'How to setup SourceForge on your own box'); INSERT INTO doc_data VALUES (783,1,'Local administrator\'s guide','<b>Local administrator\'s guide</b>\r\n <p>This is an administrator guide to the SourceForge software as found\r\non <a href=http://sourceforge.net/project/?group_id=1>SourceForge</a>.\r\nIt gives hints to successfully create a SourceForge service on a machine.\r\nIt assumes that you\'ve successfully installed the software as described\r\nin SourceForge-1.0.4 Installation Guide\r\n\r\n<P><B>Prepare the testing environment</B><P>\r\n\r\nBefore doing anything run the <a href=sffakeenv.txt>Fake env. SQL script</a>.\r\nIt will create a user <b>admin</b> with password <b>admin1</b> and \r\na project <b>test1</b> owned by him. It will also minimaly populate\r\nthe <b>test1</b> patch/bug/task list. If you want to do all this manually\r\nread the following chapters.\r\n\r\n<P><B>Create the admin user</B><P>\r\n\r\n<I>This is not needed if you run the <a href=sffakeenv.txt>Fake env. SQL script</a>.</I><P>\r\n\r\nSome users are granted site wide administration permissions based on their\r\nuser id. \r\nYou can create a user named <b>admin</b> using the menus and afterwards set\r\nit\'s user id to <b>2</b>. \r\n\r\n<pre>\r\nmysql -e "update user set user_id = 2 where user_name = \'admin\'" sourceforge\r\n</pre>\r\n\r\nWhen you log in check that a <b>Site Administrator</b> menu shows on the \r\npage.\r\n\r\n<P><B>Create categories</B><P>\r\n<I>This is not needed if you run the <a href=sffakeenv.txt>Fake env. SQL script</a>.</I><P>\r\n\r\nUnless some categories exist in the software map you won\'t be able to create\r\na new project. Create one or two categories using the <b>Site Administrator</b> menu.\r\n\r\n<P><B>Create a test project</B><P>\r\n<I>This is not needed if you run the <a href=sffakeenv.txt>Fake env. SQL script</a>.</I><P>\r\n\r\nApply for a new project (test1 for instance), using the <b>Register\r\nNew Project</b> link. Once done, go to the <b>Site Admin</b> link on\r\nthe home page and approve the project using the links that display <b>groups</b>.\r\nA project is called a <b>group</b> in the database. When displaying the \r\ndescription of the project, use the <b>Status</b> popup menu and move the\r\nproject status from <b>Pending</b> to <b>Active</b>. Click on <b>Update</b>.\r\n\r\n<P><B>Default IDs</B><P>\r\n\r\nid=100 is used throughout the site as a default. user_id=100 is for a\r\nuser named "none", which is referenced a lot. bug_group_id=100 is a\r\ndefault adefault as well. There are instances throughout the patch\r\nmanager, surveys, bugs, and task manager where this is used, as an\r\nFYI. Also bug_status, patch_status, project_status are tables (maybe\r\nmore), that we need to include default data for.',968796609,968794955,1458,794,'How to administer your local installation'); INSERT INTO doc_data VALUES (794,1,'Additional contributor guidelines',' <p> <p>This is an contributor guide to the SourceForge software as found\r\non <a href=http://sourceforge.net/project/?group_id=1>SourceForge</a>.\r\nIt explains how contributors should behave in order to see their \r\npatches accepted by the administrators of the project.\r\nIt assumes that you\'ve successfully installed the software as described\r\nin <a href=sfinstall.php>SourceForge-1.0.4 Installation Guide</a> and\r\nthat you\'re running your own instance as explained in <a href=sfusage.php>SourceForge-1.0.4 Administrator Guide</a>\r\n\r\n<P>\r\nYou must understand that integration of any kind of modification to the\r\ncode is subject to carefull reviewing by the SourceForge team. They will\r\nultimately be responsible for bugs or security problems, not you. At\r\npresent patches are processed using the patch manager and it is expected\r\nthat <b>very</b> few people will have write access to the CVS repository.\r\n\r\n<P>\r\nAt present no software roadmap exists and no regression tests are implemented\r\nand therefore the following rules cannot apply fully. Hopefully a contributor\r\nwill make these two happen.\r\n\r\n<P><B>Etiquette</B><P>\r\n\r\n<UL>\r\n<LI> Whatever your coding style is, mimic exactly the existing\r\n style. Period. Here are some hints:\r\n <UL>\r\n <LI> Use tabulations instead of white space for indentation.\r\n <LI> Tabulations are 4 spaces wide.\r\n <LI> Indentation style is\r\n<pre>\r\nif (...) {\r\n ...\r\n} else if (...) {\r\n} else {\r\n ...\r\n}\r\n</pre>\r\n note the space after the if.\r\n When an if expression is too long wrap to the next line when the\r\n line is full. Do not wrap to next line for every boolean expression.\r\n Not good:\r\n<pre>\r\nif (condition ||\r\n condition ||\r\n condition) \r\n</pre>\r\n Good:\r\n<pre>\r\nif (condition || condition ||\r\n condition\r\n</pre>\r\n <LI> Array literals style is\r\n<pre>\r\narray(\'name\'=>\'value\',\'name\'=>\'value\')\r\n</pre>\r\n note that there are <b>no</b> spaces.\r\n <LI> Function arguments and definition style is\r\n<pre>\r\nfunction($arg, $arg, $arg)\r\n</pre>\r\n note the space after the comma.\r\n <LI> Comments are either marked with /* */ or //, never with #\r\n <LI> Comments are above the commented code and must <b>not</b> \r\n rephrase the code. Do not comment at all if just rephrasing.\r\n <LI> Function definitions use a prefix to desambiguate the name\r\n and are lower case words separated by underscore. Function names\r\n may be long but must be explicit. For instance:\r\n<pre>\r\nfunction group_getname($group_id = 0) {\r\n</pre>\r\n </UL>\r\n<LI> Fully review the code roadmap before modifying anything.\r\n If you discover things that are not in the roadmap, contribute to\r\n the roadmap document with updates or additions.\r\n<LI> Search carefully the forums and mailing list archives for discussions\r\n related to the contribution/bugfix you\'re willing to make.\r\n<LI> Read all the code in www/include at least once and understand its\r\n purpose. This is the library and you don\'t want to re-implement anything\r\n it contains.\r\n<LI> Always update the ChangeLog file and be very precise.\r\n</UL>\r\n\r\n<P><B>New functionalities</B><P>\r\n\r\nSo, you\'re absolutely sure the functionality is not already implemented, \r\nthat it\'s not a task in progress. You should now convince at least one\r\nperson in the developper community that it\'s worth doing.\r\n<P>\r\nDescribe what you\'re planning to do in the forum.\r\nPrecisely describe algorithms, functionalities. Wait for approval from \r\nanother developper. In the meantime you can implement what you have in \r\nmind.\r\n<P>\r\n\r\n<UL>\r\n<LI> Add the task in the task list and update daily.\r\n<LI> Implement the functionality.\r\n<LI> Write a non-regression test for it.\r\n<LI> Run the non-regression tests for all the software until it says ok.\r\n<LI> Update the SourceForge documentation and roadmap to describe the new functionality.\r\n</UL>\r\n\r\n<P><B>Bug Fixing</B><P>\r\n\r\n<UL>\r\n<LI> Assign the bug to yourself in the bug list. Never work on a bug\r\n assigned to someone else, unless you\'re talking to the other\r\n developper.\r\n<LI> Write a non-regression test for it. Should it pop again, the test\r\n must detect it.\r\n<LI> Fix the problem.\r\n<LI> Run the non-regression tests for all the software until it says ok.\r\n</UL>\r\n',968796616,968796441,1458,794,' '); INSERT INTO doc_data VALUES (759,1,'Your SourceForge Email Address','<b>Your SourceForge email address </b><P>\r\n\r\nWith the activation of your user account, you were given an email address at loginname@users.sourceforge.net. \r\n<P>\r\nThroughout the site, when your email address is displayed, the SourceForge address is given rather than the email address under which you\r\nregistered. Changing your personal email address under "Account Maintenance" will change where this mail forwards. \r\n<P>\r\nThis keeps your own email private, but allows easy access to all site users through their SourceForge addresses. We also filter blacklisted spammers\r\nfrom sending mail to this address. \r\n<P>\r\nYou may also use your SourceForge email address outside of the site. Mail will forward as you would expect it to. Your username will never change,\r\nso this email address is yours to keep. ',968796657,968792565,1458,801,'yourname@users.sourceforge.net forwards email'); INSERT INTO doc_data VALUES (760,1,'HELP! I\'ve lost my password!','<b>If you lose your password... </b>\r\n<P>\r\nIf you lose your password simply visit the login page and click "Lost Your Password?". A confirmation hash will be emailed to the address we have on\r\nfile for you. Load the URL in the email to reset your password. ',968796664,968792628,1458,801,'You\'re not the first...'); INSERT INTO doc_data VALUES (761,1,'SSH Keys and CVS/Shell Accounts','<b>SSH Keys and CVS/Shell Accounts </b><P>\r\n\r\nIf you wish to use your ssh keys with CVS/Shell accounts - this is no problem. For your shell account, simply copy your identity.pub file to\r\n"~username/.ssh/authorized_keys" on shell1. Also cut/paste it into the web based account manager to have it synced across to the CVS server. ',968796669,968792682,1458,801,'You don\'t have to re-type, we can store them'); INSERT INTO doc_data VALUES (762,1,'How do I use the compile farm?','<b>Accessing the compile farm</b><P>\r\n\r\n\r\nIf you have a account on our shell server then you have an account on the compile farm as the same username and password. Please be sure to\r\nread the /etc/motd when you log in. It has information you\'re going to need. If you have any problems please submit another support request. The\r\nhostnames for the current compile farm machines are listed on the CompileFarm page, along with more detailed instructions. Please see:\r\nhttp://sourceforge.net/compilefarm/',968796695,968792789,1458,801,'Build your software across distributions (and BSD)'); INSERT INTO doc_data VALUES (763,1,'CVS HOWTO',' <p> <P>This very basic right now, but it will get you up and running.\r\n<P>For all developer (read/write) access, you will be using SSH.\r\nSSH (1.x) client must be available to your local machine. The local\r\nenvironment variable CVS_RSH must also be set to the path to ssh.\r\nThis is done on most linux (bash) systems by typing:\r\n<UL><B><I>export CVS_RSH=ssh</I></B>\r\n</UL>\r\n\r\n<P>Anonymous CVS access uses CVS pserver and does not require SSH.\r\n\r\n<P>If you get \'permission denied\' errors with no prompt for a password,\r\nyou do not have this environment variable set properly or SSH is not\r\navailable to your system. Fix this before suspecting a password problem.\r\n\r\n<P><B>How to import source code into your repository</B>\r\n<UL>\r\n<LI>On your local machine, change to the directory whose files (and subdirectories) \r\nyou want to import. Everything now in the current directory\r\nand all subdirectories will be imported into the tree.\r\n<LI>Type the following, where loginname is your SourceForge login name,\r\nyourproject is the unix group name of your project, and\r\ndirectoryname is the name of the new CVS root level directory.\r\n<BR><B><I>cvs -dloginname@cvs.yourproject.sourceforge.net:/cvsroot/yourproject import directoryname vendor start</I></B>\r\n</UL>\r\n\r\n<P><B>How to check out source via SSH</B>\r\n<UL>\r\n<LI>Type the following, making necessary obvious substitutions for\r\nyour username and project.\r\n<BR><B><I>cvs -dloginname@cvs.yourproject.sourceforge.net:/cvsroot/yourproject co directoryname</I></B>\r\n<LI>After initial checkout, you can change into this directory and execute\r\ncvs commands without the -d tag. For example:\r\n<BR><B><I>cvs update<BR>cvs commit -m "comments for this commit"<BR>cvs add myfile.c</I></B>\r\n</UL>\r\n\r\n<P><B>How to check out source anonymously through pserver</B>\r\n<UL>\r\n<LI>Type the following, making necessary obvious substitutions for\r\nyour username and project.\r\n<BR><B><I>cvs -d:pserver:anonymous@cvs.yourproject.sourceforge.net:/cvsroot/yourproject login</I></B>\r\n<LI>After anonymously logging in:\r\n<BR><B><I>cvs -d:pserver:anonymous@cvs.yourproject.sourceforge.net:/cvsroot/yourproject co directoryname</I></B>\r\n<LI>After initial checkout, you can change into this directory and execute\r\ncvs commands without the -d tag. For example:\r\n<BR><B><I>cvs update</I></B>\r\n</UL>\r\n\r\n<P><B>How to use cvs when logged on shell.sourceforge.net</B>\r\n<UL>\r\n<LI>Type the following, making necessary obvious substitutions for username and project.\r\n<BR><B><I>cvs -dloginname@cvs1:/cvsroot/yourproject co directoryname</I></B>\r\n</UL>\r\n<DD>See <a href="/docman/display_doc.php?docid=765&group_id=1" >CVS/SSH FAQ</a> for more information.\r\n\r\n<P><B>How to import an existing CVS tree</B><P>\r\n\r\nThis must be done manually by the SourceForge staff. Proceed as follow:\r\n<UL>\r\n<LI> Prepare a tar/gzip of your entire CVS tree.\r\n<LI> Make sure you include the CVSROOT directory if it contains information\r\n you want to keep. If you\'re not sure, include it.\r\n<LI> Submit a support request asking them to include the tar/gzip in the CVS repository of your project.\r\n Make sure you provide the necessary information in your request:\r\n <UL>\r\n <LI> The exact name of the project or the URL of its home page.\r\n Something like <a href=http://sourceforge.net/project/?group_id=1695>\r\n http://sourceforge.net/project/?group_id=1695</a>.\r\n <LI> The ftp or http location of the tar/gzip file, or its location on shell1.\r\nDouble check with your navigator that the file is available.\r\n <LI> Your SourceForge login name.\r\n <LI> Your project\'s unixname\r\n <LI> Your mail address.\r\n </UL>\r\n<LI> You will be mailed by the SourceForge staff when the CVS tree is\r\n ready for use.\r\n</UL>\r\n\r\n<P><B>How to get your CVS tree back</B><P>\r\n\r\nDaily tarballs of entire project CVS Repositories are available\r\nfor backup or mirroring purposes. These are available at:\r\nhttp://cvs.sourceforge.net/cvstarballs/projectname-cvsroot.tar.gz.\r\nWhere <b>projectname</b> is the Unix name of your project.\r\n\r\n<P><B>Additional References</B>\r\n<UL>\r\n<LI><A href="/docman/display_doc.php?docid=765&group_id=1">SourceForge CVS/SSH FAQ</A>\r\n<LI><A href="http://cvsbook.red-bean.com/">The CVS Book</A>\r\n<LI><A href="http://www.loria.fr/~molli/cvs/doc/cvs_toc.html">CVS Docs at www.loria.fr</A>\r\n</UL>\r\n',968880603,968792962,1458,802,'The basics of CVS'); INSERT INTO doc_data VALUES (764,1,'Getting daily CVS snapshots','<B>Getting Daily Snapshots of a CVS Tree </b><P>\r\n\r\nDaily tarballs of entire project CVS Repositories are now available for backup or mirroring purposes. \r\n<P>\r\nThese tarballs are generated daily, and ar available at : <B>http://cvs.sourceforge.net/cvstarballs/projectname-cvsroot.tar.gz \r\n</b><P>\r\nwhere projectname is the UNIX name of the project you want to download. ',968797189,968793052,1458,802,'Backup your code'); INSERT INTO doc_data VALUES (765,1,'CVS/SSH FAQ','<B>CVS/SSH Frequently Asked Questions (FAQ)</B>\r\n<P>\r\nThis FAQ is intended to help using CVS with SSH without reading the\r\ncomplete CVS and SSH documentation.\r\n\r\n<UL>\r\n <LI><A href="#ssh">How does CVS/SSH work?</A>\r\n <LI><A href="#ssh-firewall">Why cvs hangs forever?</A>\r\n <LI><A href="#ssh-key">Am I forced to enter my password for every cvs command?</A>\r\n <LI><A href="#ssh-pass">I updated my CVS/SSH shared key but I\'m still asked for a passphrase?</A>\r\n <LI><A href="#ssh-shell">CVS does not work on shell.sourceforge.net?</A>\r\n</UL>\r\n\r\n<HR noshade>\r\n\r\n<P><A name="ssh"> </A><B>How does CVS/SSH work?</B>\r\n<P>SSH is the authentication mechanism used to allow authorized users to have\r\nread/write access to the CVS repository. The protocol used is ssh protocol version 1.\r\nYou must not try to use ssh protocol version 2. If you have both ssh1 and ssh2 installed\r\non your machine, the ssh1 commands are all suffixed with a 1. For instance use ssh1 instead\r\nof ssh or ssh-keygen1 instead of ssh-keygen.\r\n<P>\r\nCVS will use SSH for authentification if you set the environment variable CVS_RSH to ssh.\r\nCVS_RSH=ssh or CVS_RSH=ssh1.\r\n\r\n<P><A name="ssh-firewall"> </A><B>Why cvs hangs forever?</B>\r\n<P>If you\'re behind a firewall you may need to instruct ssh not to use a privileged port.\r\nInsert the \r\n<br><b>\r\nUsePrivilegedPort no\r\n</b><br>\r\nline in your ~/.ssh/config file. This is equivalent to\r\nspecifying the -P option on the command line. You need to do that since you can\'t simply\r\nset CVS_RSH=\'ssh -P\'.\r\n\r\n<P><A name="ssh-key"> </A><B>Am I forced to enter my password for every cvs command?</B>\r\n<P>No, you can upload a shared key that will allow SSH sessions to be established without\r\nthe need to enter you password every time. Go to your <b>Account Maintainance page</b>, click on\r\nthe <b>Edit Keys</b> link and follow the instructions.\r\n\r\n<P><A name="ssh-pass"> </A><B>I updated my CVS/SSH shared key but\r\nI\'m still asked for a passphrase?</B>\r\n<P>A passphrase is not a password. When you used ssh-keygen (or\r\nssh-keygen1) to produce your shared key, you were asked for a\r\npassphrase. There are two possibilities to avoid cvs passphrase\r\nprompts: you can use ssh-agent tool or you can generate key pair\r\nwithout passphrase.\r\n<P>To use ssh-agent edit your .xsession (or .xstart) script and change\r\nline where window manager is started into:\r\n\r\n<P> ssh-agent $WM\r\n\r\n<P>where $WM is your window manager. Logout-login to activate the\r\nssh-agent. Use ssh-add to add your key to the ssh-agent (you must\r\nenter the passphrase). As long as the ssh-agent runs you will not be\r\nprompted for the passphrase again. For more details see the man pages\r\nof ssh-agent and ssh-add.\r\n\r\n<P>To generate unprotected key pair just type return at the ssh-keygen\r\npassphrase prompt. The drawback of the unprotected key pair is that\r\neverybody who has your private key will have access to the cvs\r\nrepository.\r\n\r\n<P><A name="ssh-shell"> </A><B>CVS does not work on shell.sourceforge.net?</B>\r\n<P>\r\nWhen you\'re logged on shell.sourceforge.net using ssh1, you should use the\r\n<b>cvs1</b> hostname instead of the full host name. For instance:\r\n<P>\r\n<UL>\r\n<LI> <b>Not good:</b> cvs -dprecision@cvs.phpsysinfo.sourceforge.net:/cvsroot/phpsysinfo -z3 co phpsysinfo\r\n<LI> <b>Good:</b> cvs -dprecision@cvs1:/cvsroot/phpsysinfo -z3 co phpsysinfo\r\n</UL>\r\nThis has to do with the fact that both the shell\r\nservers and the cvs servers are firewalled behind the same firewall. Since you\'re inside\r\nthe firewall when you\'re logged on shell.sourceforge.net, the rules do not apply in the same\r\nway.',968797172,968793085,1458,802,'Basics of using CVS with SSH'); INSERT INTO doc_data VALUES (768,1,'Importing existing CVS trees','<b>Importing existing CVS trees </b><P>\r\n\r\nWe can import your existing CVS tree fairly easily. Just upload it using SCP/ssh to your project\'s home directory on the primary shell server.\r\nAlternatively, put it somewhere visible via anonymous ftp or http. \r\n<P>\r\nLet us know the details when you are done (in a <a href="http://sourceforge.net/support/?func=addsupport&group_id=1">support request</a>). That is, your unix name, the project\'s unix name and the file address. \r\n<P>\r\n(e.g. "Please import the CVS tree for project hal2000. My login is aphzen, the project\'s unix name is hal2000, and the CVS tree can be found on\r\nshell1, in /home/groups/hal2000/hal2000-cvs.tar.gz") Also see the CVS HowTo & FAQ. ',968797212,968793272,1458,802,'Bring your existing code to its new home'); INSERT INTO doc_data VALUES (772,1,'Getting email from CVS','<p> <b>Getting email from CVS</b>\r\n\r\n<p>\r\nIn any large project, keeping track of changes is difficult. CVS does\r\na reasonable job of allowing source changes to be controlled and\r\nmanaged, but does not provide tools to make it easier to work with a\r\nchanging code base. The hardest part of working on a dynamic project\r\nwith many changing modules is knowing when changes occur, and what\r\nthose changes are.\r\n\r\n<p>\r\nSoftware developers often are heavy email users, spending huge amounts\r\nof time working with their email software. Open source developers are\r\namong the most serious email addicts out there, sorting through\r\nhundreds of emails a day, since this is often the only way to stay in\r\ntouch with users and fellow developers.\r\n\r\n<p>\r\n<em>Clearly, we need more email.</em>\r\n\r\n\r\n<h2>Set up a mailing list</h2>\r\n\r\n<p>\r\nIf you haven\'t already created a mailing list to handle messages sent\r\nby CVS, follow these instructions to do so.\r\n\r\n<p>\r\nTo get started, surf to your project\'s "Project Page." If the "Public\r\nAreas" section of the page doesn\'t list "Mailing Lists," click over to\r\nthe <b>Project Admin</b> page, the to the <b>Edit Public Info</b>\r\npage. Make sure the "Use Mailing Lists:" checkbox is on, and click\r\n"Update." Now go back to your "Project Page."\r\n\r\n<p>\r\nGo to the <b>Mailing Lists</b> page and click through to the\r\n<b>Admin</b> page. Select <b>Add Mailing List</b> to get a really\r\neasy-to-use form that asks you only <em>two questions</em>:\r\n\r\n<ol>\r\n<li><b>What do you want to name your list?</b>\r\n<br>\r\nSince all SourceForge list names start with the Unix name of your\r\nproject and a hyphen, you don\'t even have to worry about that part!\r\nYou just decide on the hard part: "Do I call it\r\n<em>myproject-cvs</em>, or <em>myproject-checkins</em>?" You can\r\nchoose other names, but those are well-recognized by active open\r\nsource developers.\r\n<p>\r\n<li><b>Should I let just anyone subscribe?</b>\r\n<br>\r\n"Yes" will already be checked for you, so leave it that way. You want\r\nyour users to be able to subscribe so they\'ll know when you\'ve fixed\r\nthe bug they reported, because they want to try out the changes as\r\nsoon as they\'re in.\r\n</ol>\r\n\r\n<p>\r\nOk, so you really only had to decide one thing -- that\'s even better.\r\nNow, click the "Add This List" button, and wait for your list to be\r\ncreated.\r\n\r\n\r\n<h2>Set up syncmail</h2>\r\n\r\n<p>\r\n<b>syncmail</b> is a <a href="http://www.python.org/">Python</a>\r\nscript written by Barry Warsaw to send mail to the\r\n<tt>python-checkins</tt> list long ago, before the Python development\r\ntree moved to SourceForge. It\'s undergone a bit of evolution, but\r\nessentially does one thing: send email based on CVS activity. It\r\ntakes a little bit of information from CVS and generates messages that\r\ninclude useful information, such as the actual changes that happened\r\nto the modified files. It shoves all this into email that gets sent\r\nto an email address passed on the command line. For projects with\r\nenough developers that <b>syncmail</b> becomes interesting, this will\r\ntypically be a mailing list.\r\n\r\n<p>\r\nFor your project, this will be\r\n<tt>yourproject-checkins@lists.sourceforge.net</tt> or\r\n<tt>yourproject-cvs@lists.sourceforget.net</tt>, depending on the name\r\nyou chose in the first part of these instructions.\r\n\r\n<p>\r\nTo install <b>syncmail</b>, you need a working copy of the <font\r\n\r\nface="sans serif">CVSROOT</font> directory from your CVS repository.\r\nCheck it out just like you did for your project modules, but with the\r\nmodule name "CVSROOT".\r\n\r\n<p>\r\nNow, get the latest version of <b>syncmail</b>. The canonical copy is\r\nin the repository for the <a href="http://www.list.org/">GNU\r\nMailman</a> mailing list manager (the one you\'re using for the\r\ncheckins list you set up earlier). Get it from SourceForge:\r\n\r\n<p>\r\n<a\r\n\r\nhref="http://cvs.sourceforge.net/cgi-bin/cvsweb.cgi/CVSROOT/syncmail?cvsroot=mailman"\r\n>http://cvs.sourceforge.net/cgi-bin/cvsweb.cgi/CVSROOT/syncmail?cvsroot=mailman</a>\r\n\r\n<p>\r\nSave the most recent revision to your working copy of your project\'s\r\n<font face="sans serif">CVSROOT</font> directory. Use <b>chmod +x</b>\r\nto set the executable bit for all users, and then add the file to your\r\nproject: <b>cvs add syncmail</b>; <b>cvs commit syncmail</b>. You\r\nprobably want to mention in your comment message where the file came\r\nfrom and the revision number you picked up.\r\n\r\n<p>\r\nSend a support request to SourceForge asking the admin to check out a\r\nworking copy of <b>syncmail</b> into your <font face="sans\r\nserif">CVSROOT</font> directory and verify that it gets the proper\r\nexecutable permissions. The admin only needs to execute <b>cd\r\n/cvsroot/yourproject/CVSROOT</b>; <b>co syncmail</b> to get the\r\ndesired behavior. Copy those commands into your support request to\r\nmake it easy on the admin; they\'re busy people! Be sure to change\r\n"yourproject" to the real Unix name for your project.\r\n\r\n\r\n<h2>Configure CVS to use syncmail</h2>\r\n\r\n<p>\r\nNow that you\'ve spent the better part of a day (or night) reading\r\nthese instructions, and a few minutes following them, you have just a\r\ntiny bit more to do to get CVS to put <b>syncmail</b> to work.\r\n\r\n<p>\r\n<em>After</em> some stressed out, overworked SoruceForge administrator\r\nhas handled your request to checkout a working copy of <b>syncmail</b>\r\ninto the repository, you need to modify your <font face="sans\r\nserif">CVSROOT/loginfo</font> file to tell CVS to invoke\r\n<b>syncmail</b> for all the interesting events CVS is willing to tell\r\nus about.\r\n\r\n<p>\r\nIf you have not modified the <font face="sans serif"\r\n>CVSROOT/loginfo</font> file from the stock file provided by\r\nSourceForge (which is very useful, as the comments include\r\ndocumentation), what you need to do is very simple: just add stuff to\r\nthe end. Here\'s some example stuff to get you started:\r\n\r\n<pre>\r\nCVSROOT $CVSROOT/CVSROOT/syncmail %{sVv} you@someplace.else\r\n\r\nDEFAULT $CVSROOT/CVSROOT/syncmail %{sVv} myproject-checkins@lists.sourceforge.net\r\n</pre>\r\n\r\n<p>\r\nThis will cause email to be sent to two different places, with which\r\ndepending on what files in the repository are affected. For\r\nadministrative files in the <font face="sans serif">CVSROOT</font>\r\ndirectory, email will be sent to <tt>you@someplace.else</tt>; you\r\nshould probably list all your project administrators here. For all\r\nother files, email will be sent to your mailing list (remember to\r\nchange the list name to match <em>your</em> mailing list!).\r\n\r\n<p>\r\nIf you have several sub-products for which you want different checkin\r\nlists, you can change the "DEFAULT" label to match the subtree that\r\nyou want to go to each list, with a separate line for each distinct\r\nprefix. For example, if your project includes the products "one" and\r\n"two", you could use the following:\r\n\r\n<pre>\r\nCVSROOT $CVSROOT/CVSROOT/syncmail %{sVv} you@someplace.else\r\n\r\none/ $CVSROOT/CVSROOT/syncmail %{sVv} myproject-one-cvs@lists.sourceforge.net\r\ntwo/ $CVSROOT/CVSROOT/syncmail %{sVv} myproject-two-cvs@lists.sourceforge.net\r\n</pre>\r\n\r\n<p>\r\nYou can still have a "DEFAULT" line that gets used for any additional\r\nsubprojects.\r\n\r\n<p>\r\nIf you do <em>not</em> have a stock <font face="sans serif"\r\n>CVSROOT/loginfo</font> file, then you can probably figure out what\r\nyou need to do to combine the information above with your existing\r\nchanges. You might not have even needed any of these instructions!\r\n\r\n<p>\r\nCheck in your changes to <font face="sans serif">CVSROOT/loginfo</font>\r\nand check in some other change in your working directories to test your\r\nnew configuration.\r\n\r\n\r\n<h2>Read email!</h2>\r\n\r\n<p>\r\nNow for the real test. If you have started a successful Open Source\r\nproject, you will not be able to catch up with your email. If you can\r\nkeep up with it and still have time to hack, you need to make your\r\nproject more attractive to others, so you can get more developers\r\nchecking in more changes. Then you\'ll always have more email than you\r\nknow what to do with!',968797217,968793546,1458,802,'CVS can automatically send email updates '); INSERT INTO doc_data VALUES (766,1,'Win32/CVS/SSH Guide',' <p> <b>A Complete Guide to Using SourceForge for Windows Development<b>\r\n<h2>Introduction </h2>\r\n<p>This is a guide that will allow you to setup, configure and use SourceForge\r\nfor developing Windows based projects. </p>\r\n<p>OpenSource projects tend to usually be *NIX (any flavour of UNIX Linux,\r\nFreeBSD, etc.) based. This is great since UNIX provides a full set of tools for\r\ncommunicating with SourceForge, usually without having to install anything\r\nbeyond your normal system. If your project is firmly based in the Windows world,\r\nor has a Windows port to it, this may leave you scratching your head wondering\r\nhow to get CVS running, what SSH is and how you can upload your website right?\r\nThat\'s the purpose of this guide.</p>\r\n<p>This guide is compiled from my own experience and information scattered on\r\nSourceForges forums. I am indebted to Jay Key and Joel Utting for their work in\r\ncompiling information that was used as input into this document, as well as\r\neveryone who posted messages on SourceForge. While this\r\ndocument is as complete as possible, there may be some errors or omissions.\r\nPlease feel free to <a href="mailto:bsimser@home.com">email</a> me if you find\r\nanything. NOTE: This document does NOT cover generating or using an SSH keypair.\r\nThis is optional and doesn\'t work quite right under Windows.</p>\r\n<h2>Setup</h2>\r\n<p>This document assumes you\'ve done the following:</p>\r\n<ol>\r\n <li>Registered as a new user on SourceForge</li>\r\n <li>Created a project on SourceForge and received confirmation that the\r\n project is setup</li>\r\n</ol>\r\n<p>If you haven\'t already done this, please do so now before proceeding.</p>\r\n<h2>Tools of the Trade</h2>\r\n<p>Since when did you see Bob Vila build a house without his trusty Black &\r\n\r\nDecker tools? You\'ll need some tools of your own to get going with SourceForge\r\nas well.</p>\r\n<h3>CVS</h3>\r\n<p>CVS is the version control system used on SourceForge. This is where you\'ll\r\nstore your source code to all your revisions of your project. You use a CVS\r\nclient on your end to communicate with the CVS server (the repository) on the\r\nSourceForge end. </p>\r\n<p>CVS keeps a record of every change made to the source code, along with\r\ncomments about that change. At any time you can see any previous version of any\r\nfile in the repository. It allows multiple people to work on the same files at\r\nthe same time, merging the changes as they are "committed", and\r\nalarming the user if two changes conflict making sure the difference is resolved\r\nby a human being before allowing the new version of that file to be placed into\r\nthe repository.\r\n<p>This may take some getting used to however. Basically the development cycle\r\ngoes like this:</p>\r\n<ol>\r\n <li>Code is imported into the repository</li>\r\n <li>Everyone working on the project "checks out" a working copy of\r\n the source tree (or a portion thereof) to their local drives</li>\r\n <li>Each person works in the comfort of their own computer generated reality,\r\n and when they have a new feature working, they "update" their\r\n local copy to be as much in sync with the current version as possible, and\r\n then they "commit" the files that have changed, back into the\r\n repository.</li>\r\n</ol>\r\n<p>Any problems CVS has with commiting the files will be mentioned, and you must\r\nthen go through the problem files and resolve the differences manually. In the\r\nfiles, the changed section is highlighted with >>>>> and both\r\nversions are shown. Simply delete the old version (or edit to make it work how\r\nits supposed to), and re-commit the file. Once CVS has no problem, return to\r\nstep 2, and get back to work !</p>\r\n<p>The manual for CVS can be found here: <a href="http://www.fsf.org/manual/cvs-1.9/cvs.html">http://www.fsf.org/manual/cvs-1.9/cvs.html</a>.\r\nI suggest you take some time to read through it when you get a chance. It will\r\nhelp later.</p>\r\n<h3>SSH</h3>\r\n<p>SSH is a secure mechanism for connecting to SourceForge\'s servers. You can\r\nfind a copy of SSH for Windows <a href="ftp://ftp.cs.hut.fi/pub/ssh/contrib/ssh-1.2.14-win32bin.zip">here</a>.\r\nIt\'s just like telnet but provides a secure connection to SourceForge.\r\n</p>\r\n<h3>SCP</h3>\r\n<p>SCP is like a secure FTP client and allows you to put files onto SourceForges\r\nsystem. SCP is usually bundled with SSH so the link\r\nabove will get you both programs.</p>\r\n<h2>Setup</h2>\r\n<p>Once you have all the files you\'re ready to setup your environment to connect\r\nto SourceForge. There\'s only a few things that need to be done, but it\'s\r\nimportant you do them or else your connection will probably not work.</p>\r\n<h3>SSH</h3>\r\n<blockquote>\r\n<p>1. You\'ll need to unpack the SSH distribution files somewhere in your path.\r\nEither unzip them to a directory already in your path or create a new path and\r\nadd it to your AUTOEXEC.BAT file. For example, if you put them in C:\\BIN\r\nthen add this to your AUTOEXEC.BAT file: </p>\r\n<pre>SET PATH=%PATH%;C:\\BIN</pre>\r\n<p>2. You\'ll need a "home" directory where SSH will store settings for\r\nyou. This can be anywhere but set it up by adding an environmental variable to\r\nyour AUTOEXEC.BAT file like this:</p>\r\n<pre>SET HOME=D:\\HOME </pre>\r\n<p>(or wherever you want your home directory to be)</p>\r\n<p>3. You need to create an \\ETC directory on the same drive you set your HOME\r\ndirectory to. In the example above, create a directory on drive D: called ETC:</p>\r\n<pre>D:\r\nMD \\ETC</pre>\r\n<p>4. Create a text file in this new directory called PASSWD. The file should\r\nhave one line in it that looks something like this:</p>\r\n<pre>bsimser:x:1:10:Simser, Bil:d:/home:c:/windows/command.com</pre>\r\n<p>Each entry is separated by a colon (":"). The first entry is your\r\nSourceForge username. Make sure it\'s all in lower case. Don\'t worry about the\r\nnext 4 entries. The 6th entry is the path to your HOME directory you setup in\r\nstep 2. This can include a drive letter but remember to use the "/"\r\ncharacter instead of the normal DOS "\\". The next entry points to your\r\ncommand interpreter (command.com on Windows 95/98, cmd.exe on Windows NT). This\r\nisn\'t used but you need an entry here.\r\n<p>5. Restart your system so your environmental variables and path can be\r\nupdated.</p>\r\n <p>6. You\'re ready to test your connection to SourceForge. From a DOS prompt\r\n enter the following command:</p>\r\n <pre>ssh -l bsimser projectname.sourceforge.net</pre>\r\n <p>Replace bsimser with your SourceForge username. If this is your first time\r\n connecting you\'ll see a message saying SSH is adding the host to your known\r\n hosts. </p>\r\n <p>7. Enter your password at the prompt. Congratulations! You should now be\r\n logged into SourceForge through SSH.</p>\r\n <p>SSH will create a new directory the first time you log into SourceForge in\r\n your HOME directory called ".SSH". In this directory are two files.\r\n "random_seed" is just a binary file so don\'t worry about it (let me\r\n know if you know what it\'s used for). Each time you log into a project on\r\n SourceForge through SSH, an entry will be added to a binary file called "known_hosts"\r\n (remember the message when you logged in?). Again, I\'m not sure what this file\r\n is used for.</p>\r\n</blockquote>\r\n<h3>CVS </h3>\r\n<p>CVS comes in two flavours, command line version and Windows GUI. </p>\r\n<h4>Command Line</h4>\r\n<blockquote>\r\n<p>1. Download\r\nthe command line version of CVS for Windows <a href="http://download.cyclic.com/pub/cvs-1.10/windows/cvs-1.10-win.zip">here</a>. </p>\r\n<p>2. Unpack the command line version (CVS.EXE) to a pathed directory of your\r\nchoosing. You can put it in the same directory as SSH for convenience.</p>\r\n<p>3. Add the following environmental variables to your AUTOEXEC.BAT:</p>\r\n<pre>SET CVSROOT=username@cvs.projectname.sourceforge.net:/cvsroot/projectname\r\nSET USERNAME=username\r\nSET HOMEDRIVE=d:\r\nSET HOME=\\home\r\nSET HOMEPATH=\\home\r\nSET CVS_RSH=ssh</pre>\r\n <p>Change the context to your own SourceForge username and the HOME and\r\n HOMEPATH variables to the ones you used in the SSH setup. Change projectname\r\n to the short name for your SourceForge project.</p>\r\n <p>4. You can now import your local source code to CVS on SourceForge. Switch\r\n to the root directory of your project on your local hard drive like so:</p>\r\n <pre>CD \\SRC\\PROJECTNAME\r\ncvs -dusername@cvs.projectname.sourceforge.net:/cvsroot/projectname import directoryname vendor start</pre>\r\n <p>NOTE: The following has also been reported to work (let me know if it\r\n does):</p>\r\n <pre>cvs -d:ext:username@cvs.projectname.sourceforge.net:/cvsroot/projectname import directoryname vendor start</pre>\r\n <p>Substitute your username and projectname as before. Directoryname is the\r\n name of the new directory that will be created in your CVS repository -- you\'ll\r\n probably want to use your project name for this as well.</p>\r\n <p>5. To checkout a copy of the latest source use this command:</p>\r\n <pre>cvs -dusername@cvs.projectname.sourceforge.net:/cvsroot/projectname co projectname</pre>\r\n After the initial checkout, you can change into this directory and execute cvs\r\n commands without the -d tag. For example:\r\n <pre>cvs update\r\ncvs commit -m "comments for this commit"\r\ncvs add myfile.c</pre>\r\n</blockquote>\r\n<h4>Windows GUI</h4>\r\n<blockquote>\r\n<p>1. Download the Windows GUI client from <a href="http://www.wincvs.org">here</a>. </p>\r\n<p>2. Unzip the file into a temporary directory and run SETUP.EXE.</p>\r\n<p>3. Start the WinCvs client.</p>\r\n<p>4. Restart your system.</p>\r\n<p>4. Under Admin | Preferences enter the CVSROOT for your project:</p>\r\n<pre>username@cvs.projectname.sourceforge.net:/cvsroot/projectname</pre>\r\n<p>5. Under Admin | Login login to CVS. It will prompt you for your SourceForge password.</p>\r\n\r\n<p>6. You can now use the menu commands to check in/out source code from the\r\nGUI.</p>\r\n\r\n</blockquote>\r\n<h3>Website</h3>\r\n<p>So now that you have your source code imported and working how about setting\r\nup your projects website!</p>\r\n<blockquote>\r\n<p>1. Create your website locally using whatever HTML editor you want.</p>\r\n<p>2. Upload the file(s) with the following command:</p>\r\n<pre>scp filename.htm username@shell.sourceforge.net:/home/groups/projectname/htdocs</pre>\r\n</blockquote>\r\n<p>That\'s it! If you have a lot of files you might want to use gzip to compress\r\nthem into one file and upload them instead of doing it file by file. Follow\r\nthese instructions for this technique:</p>\r\n<blockquote>\r\n <p>1. You\'ll need to ZIP your files up with something like WinZip. Don\'t\r\n worry, gunzip on the Unix side can handle ZIP files (or at least it should).\r\n You can find WinZip <a href="http://www.winzip.com">here</a>. Create your ZIP\r\n file of all your HTML, GIF, etc. files.</p>\r\n<p>2. Upload the ZIP file to SourceForge:</p>\r\n<pre>scp filename.zip username@shell.sourceforge.net:/home/groups/projectname/htdocs</pre>\r\n<p>3. Login to SourceForge with the SSH command:</p>\r\n<pre>ssh -l username projectname.sourceforge.net</pre>\r\n<p>You will now be in your home directory. From here all group files are stored\r\nin /home/groups/projectname. Change to this directory. All your web pages are\r\nstored in the htdocs directory.</p>\r\n<p>4. Unzip the file on SourceForge:</p>\r\n<pre>gunzip -d filename.zip</pre>\r\n <p>5. Make sure your files were unzipped successfully with the command:</p>\r\n <pre>ls -l</pre>\r\n <p>6. Remove the ZIP file from SourceForge:</p>\r\n <pre>rm filename.zip</pre>\r\n</blockquote>\r\n<p>That\'s it! You now can import your source code, work with CVS and upload your\r\nwebsite. That should be enough to keep you going on SourceForge.</p>\r\n<h2>Links</h2>\r\n<ul>\r\n <li>Joel Utting\'s <a href="https://sourceforge.net/docs/site/user/newproject-howto.php">SourceForge New Project HOWTO</a></li>\r\n <li>Jay Andrew Key\'s <a href="http://akrip.sourceforge.net/cvs-ssh-win32-howto.txt">win32 on SourceForge HOWTO</a></li>\r\n</ul>\r\n',968797222,968793133,1458,803,'Open Source is for Windows too'); INSERT INTO doc_data VALUES (767,1,'Win32/CVS/SSH HowTo','<p> <pre>\r\nTitle: cvs/ssh/win32 on SourceForge HowTo\r\nVersion: 0.3\r\nDate: 03-Jan-2000\r\nAuthor: Jay A. Key, scsiprog@geocities.com\r\n\r\n\r\nI. Introduction\r\nThis document intends to provide a quick and dirty guide to using SSH and\r\nCVS on SourceForge in a Win32 environment. These steps worked for me, and\r\nit is my hope that they will provide a starting point for others as well.\r\nIt took a fair amount of trial and error to find two distributions of SSH\r\nand CVS that would work together to access the CVS repository on SourceForge.\r\nWith the setup described below, I am able to access the repository both\r\nthrough a permanent connection through a firewall and via a dialup connection.\r\n\r\n\r\nII. Files\r\nThese are the versions of cvs and ssh that I have made to work together:\r\n ssh: ftp://ftp.cs.hut.fi/pub/ssh/contrib/ssh-1.2.14-win32bin.zip\r\n cvs: http://download.cyclic.com/pub/cvs-1.10/windows/cvs-1.10-win.zip\r\nAdditionally, you may want to download a different SSH archive to be able\r\nto generate an SSH keypair (Optional). One such archive can be found at\r\n http://dome.weeg.uiowa.edu/sos/ssh-without-cygwin.html \r\n\r\n\r\nIII. Setup\r\n Setup for SSH\r\n 1. Create directories for the SSH executables and config files\r\n md c:\\usr\\local\\bin\r\n md c:\\etc\r\n 2. If you don\'t have a \'home\' directory for yourself, create it now. For\r\n example, my home directory is c:\\users\\ak. In the home directory, \r\n create a .ssh directory -- this is where your ssh keys will be stored.\r\n md c:\\users\r\n md c:\\users\\ak\r\n md c:\\users\\ak\\.ssh\r\n 3. Unpack the ssh-1.2.14-win32bin.zip archive into c:\\usr\\local\\bin\r\n 4. Add c:\\usr\\local\\bin to your path. You may wish to add this to your\r\n autoexec.bat:\r\n set path=%path%;c:\\usr\\local\\bin\r\n 5. Using your favorite text editor, create a PASSWD file in c:\\etc. The\r\n format of a line the file is:\r\n keyja:x:1:10:Key, Jay A.:/users/ak/:/windows/command.com\r\n The important items are #1, #6. #1 is the login name on the local\r\n machine. #6 is your home directory. #7 is the command shell on your\r\n system (command.com on Win95 and cmd.exe on NT) -- but since it is not\r\n a *NIX shell, it\'s probably useless to put it in there :-).\r\n 6. Set your HOME environment variable (again, remember to add it to\r\n autoexec.bat as well) to the same directory you entered as item #6 in\r\n the /etc/passwd file:\r\n set HOME=c:\\users\\ak\r\n 7. Optional: Generate an ssh keypair. Unfortunately, the ssh-keygen in \r\n the ssh-1.2.14-win32bin.zip archive doesn\'t appear to work. You can \r\n fortunately use the ssh-keygen executable from a different SSH archive.\r\n This step is not strictly necessary, since you\'ll have to type in\r\n either your password or your passphrase every time you use it.\r\n ssh-keygen\r\n After running this command, verify that identity and identity.pub are\r\n present in your .ssh directory.\r\n 8. Test your connection to SourceForge:\r\n ssh -l username projectname.sourceforge.net\r\n Of course, substitute your SourceForge username and projectname for\r\n username and projectname in the command above.\r\n 9. Accept the key from SourceForge, and when prompted, enter your \r\n password for SourceForge.\r\n\r\n If you have gotten this far, then SSH is now working and configured on\r\n your system.\r\n\r\n CVS setup:\r\n 1. Follow the instructions in the README file in the CVS distribution.\r\n\r\n Optional steps (not necessary nor even necessarily advantageous):\r\n 2. On your user page at SourceForge, you should find a place to upload\r\n your SSH public key. Copy the file identity.pub into the text entry\r\n box on the page -- be sure not to add any line breaks or it will not\r\n work.\r\n 3. After the requisite 6 hour wait, you should be able to use CVS with\r\n SSH without using your password. Of course, under windows I still\r\n haven\'t found a working ssh-agent for Win32, so you\'ll have to type\r\n your passphrase instead -- since my passphrase is *much* longer than\r\n my password, it\'s easier for me to use the password instead.\r\n\r\n\r\nIV. Importing your source code\r\n At this point, you should be able to check in your source following the \r\n instructions in the CVS documentation on SourceForge.\r\n\r\n 1. Switch to the root directory of your project on your local hard drive.\r\n 2. Check in the initial version of your software to CVS:\r\n cvs -d:ext:username@cvs.projectname.sourceforge.net:/cvsroot/projectname import directoryname vendor start\r\n Substitute your username and projectname as before. Directoryname is\r\n the name of the new directory that will be created in your CVS\r\n repository -- you\'ll probably want to use your project name for this\r\n as well.\r\n\r\n\r\nHistory:\r\nv0.3, 03-Jan-2000: Added ":ext:" to -d parameter for the cvs initial import.\r\n\r\nv0.2, 15-Dec-1999: Added missing HOME environment variable.\r\n\r\nv0.1, 15-Dec-1999: Initial version\r\n</pre>\r\n',968797226,968793182,1458,803,'A "quick & dirty" guide'); INSERT INTO doc_data VALUES (769,1,'Win32/CVS/SSH addendum for WinCVS','<b>Win32/CVS/SSH addendum for WinCVS</b> \r\n<p>\r\nThis note was written to expand a little more on the existing documents\r\n<a href="http://sfdocs.sourceforge.net/sfdocs/display_topic.php?topicid=19">Win32/CVS/SSH Guide</a> and\r\n<a href="http://sfdocs.sourceforge.net/sfdocs/display_topic.php?topicid=19">Win32/CVS/SSH HOW-TO</a>\r\nwith regard to using the WinCVS GUI front-end. (Disclaimer: my experiences were under WinNT. It is possible\r\nthat Win9x will misbehave in new strange and wonderful ways!)\r\n</p>\r\n\r\n<h2>Setting things up from scratch</h2>\r\n\r\n<p>\r\nLet us suppose you (with SourceForge username "<code>your-username</code>") have set\r\nSSH up successfully and are able to SSH to your SourceForge project (named\r\n"<code>your-project</code>".) You have also installed WinCVS, have started it up, and you want\r\nto get it to talk to your SourceForge CVS repository. This is not too difficult, although you might\r\nnot discover it straight away by trial and error.\r\n</p>\r\n\r\n<ul>\r\n<li>Select CVS Admin->Preferences ...</li>\r\n<li>In the \'General\' tab,\r\n <ul>\r\n <li>Set the \'CVSROOT\' to "<code>:ext:your-username@cvs.your-project.sourceforge.net:/cvsroot/your-project</code>".</li>\r\n <li>Set the \'Authentication\' to "SSH Server"</li>\r\n </ul></li>\r\n<li>In the \'Ports\' tab, set \'Check for an alternative rsh name\' to "<code>ssh</code>"</li>\r\n</ul>\r\n\r\n<p>\r\nYou will be tempted now to try to log in using the CVS Admin->Login\r\noption; however, this will just result in a misleading error message,\r\n"Set the password authentication first in the preferences !" We\'ve\r\nset up our preferences just fine, password authentification works\r\ndifferently for an SSH server. So <strong>don\'t</strong> use\r\nCVS Admin->Login.\r\n</p> \r\n\r\n<p>\r\nInstead, whenever you perform some CVS operation that requires authentification, WinCVS will invoke your SSH\r\nclient, albeit in a rather unhelpful way. The invocation of the SSH client is silent and may take a \r\nbit of time. Eventually (for me at least) it appears in a minimised blank DOS shell window and sits there silently\r\nwaiting for me to type in my SourceForge password without any echo... nonetheless it works if I do this.\r\nAfter a brief pause to authenticate WinCVS carries out its communications with the repository as usual.\r\n</p>\r\n\r\n<h2>Correcting an existing mess</h2>\r\n\r\n<p>\r\nThis seems simple enough (if a little awkward!) but if you have experimented with the various other options, you may have\r\nalready fallen foul of a gotcha that certainly gotch me. If you optimistically set your CVSROOT instead to\r\n<code>:pserver:your-username@cvs.your-project.sourceforge.net:/cvsroot/your-project</code> and selected ".passwd\r\nfile on the CVS server" for \'Authentication\', you will have found to your delight that you can then use CVS Admin->Login...,\r\nand then enter your SourceForge password just the once, after which you can talk successfully to the repository, doing such\r\npleasant read-only things as checking out existing modules, updating them, and diffing your changes. However,\r\nWinCVS has trapped you and is giggling. You will find that when you come to commit your changes back to the repository\r\nfor everyone to play with, you will not be able to do so: you will hear the complaint \'<code>cvs [server aborted]: "commit" requires write\r\naccess to the repository</code>\'.\r\n</p>\r\n\r\n<p>\r\nThe reason this can cause particular problems is that by this point, simply switching to the correct Preferences settings\r\ngiven above isn\'t enough. As a result of checking stuff out with different settings in place,\r\nyou now have lots of <code>CVS/Root</code> metadata files that know the material they control was\r\nchecked out from a <code>:pserver:</code> CVSROOT. As a result, even after changing your Preferences\r\nas required, WinCVS won\'t launch SSH and give you a chance to prove you have write permission since it thinks\r\nyou have already identified yourself; it will just continue to flake out with the "...<code>requires write access</code>..."\r\ncomplaint. The simplest solution is to undo your crimes completely, and start again by checking the stuff out with the\r\ncorrect <code>:ext:</code> CVSROOT. However, if you\'re feeling adventurous, you can edit all the existing\r\n<code>CVS/Root</code> metadata files to achieve the same effect without compromising your existing\r\nchanges. (It worked for me - the resulting change to the files\' modification dates seemed to do no harm.)\r\n</p>\r\n\r\n<dl>\r\n\r\n<dt>2000.07.07</dt>\r\n<dd>\r\nAdded warning about not using CVS Admin->Login and clarification of\r\nSSH invocation - thanks <a href="mailto:beman@esva.net">Beman Dawes</a>.\r\n</dd>\r\n\r\n<dt>2000.06.06</dt>\r\n<dd>Original document submitted</dd>\r\n\r\n</dl>\r\n',968797231,968793318,1458,803,'Read after the Win32 Guide & Howto'); INSERT INTO doc_data VALUES (770,1,'SourceForge setup tool for CVS/SSH/Win32','This is a tool written in Delphi that will set up all associated functions of WinCVS/ssh for SourceForge CVS usage (under Windows).\r\n<P>\r\n Visit: http://sfsetup.sourceforge.net/ for more information',968797238,968793383,1458,803,'There\'s a tool to help'); INSERT INTO doc_data VALUES (771,1,'CVS/SSH and OS/2','<b>CVS/SSH and OS/2</b><p> Details from a recent support posting:\r\n<br>\r\n<pre>\r\n I\'m working under OS/2, and for some strange reasons it seems to be impossible to use OS/2 CVS together \r\n with OS/2 SSH, so I have to use :pserver: instead (I verified this fact with some other developer working under \r\n OS/2 with CVS for years). I can do a checkout as well as an update this way (I use cvs login first), but \r\n unfortunately no commit - cvs responds with\r\n\r\n cvs [server aborted]: "commit" requires write access to the repository\r\n\r\n Is it impossible to commit via :pserver: on sourceforge? In this case, every OS/2 developer would have problems \r\n using cvs on sourceforge. Or is there something wrong with my account?\r\n--------------------\r\nand the followup:\r\n--------------------\r\n\r\nThis is due to some buggy behaviour of the cvs os/2 port. It still tries to call ssh with parameter "-b" \r\n which is not understood by the os/2 port of ssh. So the workaround would be something like this:\r\n\r\n set CVS_RSH=some\\path\\to\\ssh.cmd\r\n\r\n and in ssh.cmd:\r\n some\\path\\to\\ssh.exe %2 %3 %4 %5\r\n\r\n as long as cvs.exe keeps passing "-b" as first parameter. Very "safe method" (I used here):\r\n\r\n ssh cvs1.sourceforge.net cvs server\r\n\r\n works fine :)\r\n----------------\r\nWith thanks to Izzy.\r\n----------------\r\n<P>\r\nMore:\r\nto use CVS over SSH on OS/2 you need specific versions of both SSH and CVS:\r\nCVS: either 1.10 or 1.10.6 both available from http://hobbes.nmsu.edu, the 1.10.7 version will NOT work\r\n<P>\r\nSSH: os/2-1.2.13-03, available as sshos203.zip from http://hobbes.nmsu.edu\r\n<P>\r\nI had huge problems wiht SSH CVS access and they where only because of wrong versions, everything works fine now ',968797243,968793470,1458,803,'Open Source is for OS/2 too'); INSERT INTO doc_data VALUES (773,1,'Accessing & using databases at SourceForge',' <p> <b>Accessing & using batabases at SourceForge</b><P><UL>\r\n<EM>If you need to store regularly formatted data for your project...\r\nand you need it stored reliably...\r\nand wish to search it flexibly...\r\nthen you want to request a database;\r\nand SourceForge provides it!\r\n</EM>\r\n</UL></P>\r\n\r\n<P><B>On this page:</B></P>\r\n<P><UL>\r\n<LI><A HREF="#what">What is a Database?</A>\r\n<LI><A HREF="#mysql">What is MySQL?</A>\r\n<!-- pgqsql\r\n<LI><A HREF="#pgsql">What is PostgreSQL?</A>\r\n-->\r\n<LI><A HREF="#request">How to request a database at SourceForge?</A>\r\n<LI><A HREF="#php">How to access a database from a webpage?</A>\r\n<LI><A HREF="#tips">Tips and Tricks</A>\r\n<LI><A HREF="#ref">References</A>\r\n</UL></P>\r\n\r\n<A NAME="what">\r\n<P><B>What is a Database?</B></P>\r\n</A>\r\n\r\n<P>A database, or more precisely, a <EM>relational</EM> database, stores information in a number of tables.\r\nTables contain records, each of which represents a bit of information, shaped according to the format for that table.\r\nGo look up any book on SQL and see how simple it all is.</P>\r\n\r\n<P>Particularly interesting are so-called <EM>keys</EM>, which are unique values stored in a position of that database.\r\nIf these values are mentioned in a(nother) table in the database, they can be interpreted as a reference from one record to another, just like addresses serve as pointers in C and any of its crippled follow-ups.</P>\r\n\r\n<P>Databases are simply structured and can therefore be put to just about any use you can think of.\r\nThey are particularly useful in being <EM>persistent</EM>, that is, anything short of an atom bomb will not do to erase once-stored data.\r\nTo clearly mark the timing for this `once-stored\' notion, an important process concept in the database world is a <EM>transaction</EM>, which is particularly useful when many users concurrently access the same database but wish to pretend they access it one at a time.</P>\r\n\r\n\r\n<A NAME="mysql">\r\n<P><B>What is MySQL?</B></P>\r\n</A>\r\n\r\n<P>Ah, MySQL is a database... except that it\'s a <EM>crisp</EM> database.\r\nSure, it\'s fairly accepted in the GNU/Linux world, so it must be good. \r\nBut <EM>why</EM> is it so good?\r\nAnd why is it used so much more often under web services than that other, full-blown, Open Source database, PostgreSQL?</P>\r\n\r\n<P>Basically, the people that made MySQL don\'t implement a complete relational database.\r\nThey\'re very close, but left out a few concepts that slow down a complete SQL implementation.\r\nThe result: A crisp database which is in most situations quite usable for web applications.</P>\r\n\r\n<P>The MySQL people left out <EM>transactions</EM>.\r\nThis means that it is not possible to imagine all database operations as happening in sequence, but since most interactions deal with a combination of tables iterated over once in one SQL statement, this is not a problem.\r\nTransactions get useful if you first perform one SQL statement to request information, then another to process it somehow.\r\nBe a little smarter in writing your SQL queries, and you\'ll do fine (mostly, that is).\r\nAnd in case of trouble, you are supposed to be able to lock tables, but I never needed it, so I cannot tell you how.</P>\r\n\r\n<P>To avoid most chances of trouble with this lack of transactions, MySQL also doesn\'t allow you to nest one SQL query inside another.\r\nAnd that\'s the only true constraint on query expressiveness in MySQL --- But again, mostly you should be fine.</P>\r\n\r\n<P>Without transactions, MySQL can be an incredible lot faster in SQL query processing than any database that does offer transaction support.</P>\r\n\r\n<P>Without transactions, don\'t even think of e-commerce applications (don\'t think of it on SourceForge anyway, you promised to stay clear of such horrible habits).\r\nReason for not doing e-commerce with MySQL is that e-commerce usually requires <EM>distributed transactions</EM>, that ensure that all parties (like you, your bank, the selling party, the selling bank, any intermediaries) all agree on the success of failure of the deal.\r\nWithout transactions, let alone distributed ones, you cannot expect this stuff to reliably go right.</P>\r\n\r\n<P>Without transactions, there still are many SQL queries that may be utilised for all sorts of purposes on dynamic web pages and the underlying administration.\r\nSourceForge, for example, administers all its data in MySQL.\r\nHeck, you don\'t expect to need more complicated queries than those of SourceForge, do you?\r\nFor almost any purpose, MySQL fits the bill!</P>\r\n\r\n<!-- pgsql\r\n\r\n<A NAME="pgsql">\r\n<P><B>What is PostgreSQL?</B></P>\r\n</A>\r\n\r\n<P>PostgreSQL is another relational database, completely Open Source this time.\r\nIt is a complete implementation of SQL (as far as I know) and in comparison to MySQL it adds transactions, even distributed transactions if you want.\r\nFor most purposes, MySQL will do, but for some...\r\nAnyway, I think you can even request a PostgreSQL database if you want to!</P>\r\n\r\n-->\r\n\r\n\r\n<A NAME="request">\r\n<P><B>How to request a database at SourceForge?</B></P>\r\n</A>\r\n\r\n<P>Okay, remember the <A HREF="faq.php#whyhost-root">FAQ question</A> whether it was a good thing not to have root access and that the reply by the SourceForge folks was that in return you get professional sysadmin services? Here\'s where that\'s absolutely true.\r\nYou don\'t have to (or want to) get into user administration of MySQL, it is a small disaster.\r\nBelieve me, you should be glad some experienced guy is doing it for you!</P>\r\n\r\n<P>All you need to do is to request a database <EM>for your project</EM> (so, be sure to mention its name) on the <A HREF="http://sourceforge.net/support/?func=addsupport&group_id=1">request submission</A> page of the <A HREF="http://sourceforge.net/support/?group_id=1">support pages</A> of SourceForge.\r\nEnter a "Database Server" category query with a text like\r\n<PRE>\r\n Hi!\r\n\r\n Could you create a MySQL database for my project GeeksGoGroovy?\r\n\r\n Thanx,\r\n -ThisGeek.\r\n</PRE>\r\n<!-- pgsql\r\nThey\'ll even provide you with PostgreSQL if you want to, but the default is MySQL, because it\'s lighter and suitable for most purposes anyway.\r\n-->\r\nAfter requesting your database, just wait a few days or so, and then an email should poor into your mailbox.</P>\r\n\r\n<P>This email contains the hostname that runs your database, the username you should access the database with (not necessarily related to your SourceForge-login, but it usually equals your project name), the name of the database (usually also equals your project name) and a password.\r\nThe email therefore looks a bit like this:\r\n<PRE>\r\n Hostname: VAntastic\r\n Database: Dumpster\r\n Username: GeeksGoGroovy\r\n Password: Sekreet\r\n</PRE>\r\nPlus the usual amount of geek wisdom at the bottom <CODE>;-)</CODE>\r\nYou need this information to start up MySQL from your shell account at SourceForge:\r\n<PRE>\r\n bash$ mysql -h VAntastic -u GeeksGoGroovy Dumpster -p\r\n Password: Sekreet\r\n Welcome to the MySQL monitor. Commands end with ; or g.\r\n Your MySQL connection id is 2 to server version: 3.22.30\r\n\r\n Type \'help\' for help.\r\n\r\n mysql> \r\n</PRE>\r\nAt the <CODE>mysql></CODE> prompt, you may start entering SQl commands and end them with <CODE>;</CODE> plus return.</P>\r\n\r\n<P>For example, this is what you could do to create your first database table:\r\n<PRE>\r\n create table goosebumps\r\n ( id integer not null,\r\n country varchar(255),\r\n monster varchar(255),\r\n primary key (id)\r\n );\r\n</PRE>\r\nand more tables in a similar way.\r\nYou could inserted some entries in tables as follows:\r\n<PRE>\r\n insert into goosebumps\r\n values (1, \'Scotland\', \'Nessy\'),\r\n (2, \'USA\', \'Bill\'),\r\n (3, \'Transilvania\', \'Dracula\');\r\n</PRE>\r\nWe\'ll use this data in the example in the next section, but you can query it here too, with SQL queries like:\r\n<PRE>\r\n select country,monster\r\n from goosebumps\r\n where country<>\'USA\';\r\n</PRE>\r\nWhen entered in MySQL, this prints the following table:\r\n<PRE>\r\n +--------------+---------+\r\n | country | monster |\r\n +--------------+---------+\r\n | Scotland | Nessy |\r\n | Transilvania | Dracula |\r\n +--------------+---------+\r\n 2 rows in set (0.00 sec)\r\n</PRE>\r\nbut of course, such layout is <EM>not dun</EM> for commercial quality (find the contradiction) software, for which the following layout is often <EM>mission-critical</EM>:\r\n<UL>\r\n<TABLE BORDER=3>\r\n<TR><TH ALIGN=LEFT>country</TH><TH ALIGN=LEFT>monster</TH></TR>\r\n<TR><TD>Scotland</TD><TD>Nessy</TD></TR>\r\n<TR><TD>Transilvania</TD><TD>Dracula</TD>\r\n</TABLE>\r\n</UL>\r\nSo, we start wondering:</P>\r\n\r\n\r\n<A NAME="php">\r\n<P><B>How to access a database from a webpage?</B></P>\r\n</A>\r\n\r\n<P>Let\'s get to some real work now!\r\nThe previous section explained how to log in.\r\nYour favourite SQL book taught you how to create tables and insert initial data into it.\r\nLet\'s assume this all worked.\r\n(And no, it\'s not a shame if you make typo\'s in SQL syntax, people once stared at me in utter amazement for extending a table with a new attribute in one try, just to demonstrate how average SQL queries are formed: by trial and error.)</P>\r\n\r\n<P>Next to enjoying the pleasures of typing SQL commands manually and getting the results back in the format of tables that don\'t fit on a 80-char-wide terminal, there is the possibility to exploit PHP for this purpose.\r\nIt goes without saying that SourceForge provides PHP for anything you deem worthy, including even an <CODE>index.php</CODE> entrance page instead of <CODE>index.html</CODE>!</P>\r\n\r\n<P>The PHP language is a server-side scripting language that can directly access a database, without the need of complicated web structures like <CODE>cgi-bin</CODE> scripts.\r\nJust let your filenames end in <CODE>.php</CODE> or perhaps in <CODE>.php3</CODE> and the script is interpreted as PHP code.\r\nBasically, PHP is just HTML, but with the possibility (to name one of many) of intersecting dynamic sections of code, such as\r\n<PRE>\r\n <?php\r\n\r\n echo "<BLINK>This is blinking</BLINK>";\r\n ?>\r\n</PRE>\r\nor, of course, much more fancy material, such as database access.</P>\r\n\r\n<P>These are the steps you need to take to access a database from PHP scripts:\r\n<OL>\r\n<LI> <B>Open a MySQL connection:</B>\r\n First, we need to establish a connection to the database on the host that runs the MySQL daemon.\r\n In terms of PHP, this goes:\r\n <PRE>\r\n $db=mysql_connect ("VAntastic", "GeeksGoGroovy", "Sekreet");\r\n </PRE>\r\n<LI> <B>Select your database:</B>\r\n There now is a connection to MySQL, but since many databases may reside at the contacted host, we should specify which one to use, just like we did with <CODE>-h</CODE> on the command line; in PHP:\r\n <PRE>\r\n mysql_select_db ("Dumpster", $db);\r\n </PRE>\r\n<LI> <B>Send an SQL query:</B>\r\n We first have to specify what we want to ask the database.\r\n This is a plain query as you learned from your favourite SQL book, entered as a string.\r\n In PHP, this goes:\r\n <PRE>\r\n $result=mysql_query ("select country,monster from goosebumps", $db);\r\n </PRE>\r\n<LI> <B>Iterate over the rows:</B>\r\n The SQL query can return any number records, or in database terms, rows.\r\n To deal with this generally, we should iterate over the rows in the result.\r\n In PHP, this is done as follows:\r\n <PRE>\r\n while ($row=mysql_fetch_row ($result)) {\r\n ... process $row ...\r\n }\r\n </PRE>\r\n<LI> <B>Process each row:</B>\r\n Let\'s assume we lack any imagination, and just wish to print the data in the current row.\r\n This can be done with a PHP statement like:\r\n <PRE>\r\n print ("<TR><TD>$row[0]</TD><TD>$row[1]</TD>n");\r\n </PRE>\r\n<LI><B>Close the deal:</B>\r\n Being good Un*x community citizens, we have learnt to clean up after we\'re done.\r\n This habit is formulated in PHP with:\r\n <PRE>\r\n mysql_close ($db);\r\n </PRE>\r\n provided, of course, that <CODE>isset($db)</CODE> because otherwise, there was a fault in opening the database to start with.\r\n</OL>\r\n</P>\r\n\r\n\r\n<P>The whole PHP code with some table-embellishments now reads:\r\n<PRE>\r\n <?php\r\n\r\n $db=mysql_connect ("VAntastic", "GeeksGoGroovy", "Sekreet");\r\n mysql_select_db ("Dumpster", $db);\r\n $result=mysql_query ("select country,monster from goosebumps", $db);\r\n print ("<TABLE BORDER=3>n");\r\n print ("<TR><TH ALIGN=LEFT>country</TH><TH ALIGN=LEFT>monster</TH>n");\r\n while ($row=mysql_fetch_row ($result)) {\r\n print ("<TR><TD>$row[0]</TD><TD>$row[1]</TD>n");\r\n }\r\n print ("</TABLE>n");\r\n mysql_close ($db);\r\n ?>\r\n</PRE>\r\nPut all of this in a <CODE>.php</CODE> file in your project\'s <CODE>htdocs</CODE>, for example <CODE>/home/groups/GeeksGoGroovy/htdocs/tralala.php</CODE> and access its webpage <CODE>http://GeeksGoGroovy.sourceforge.net/tralala.php</CODE> to see the results.\r\nThat\'s all there is to it!</P>\r\n\r\n\r\n<A NAME="tips">\r\n<P><B>Tips and Tricks</B></P>\r\n</A>\r\n<P>\r\nOnce your database runs, find out how you can make one table refer to another (or to itself, for that matter) by naming the <EM>primary key</EM> in an attribute, much like you would use a pointer in a programming language.\r\nYou can pass those around between PHP scrips by generating references like <CODE><A HREF="HallOfGeeks.php?country=USA"></A></CODE> that pass a <CODE>country</CODE> parameter to the PHP script <CODE>HallOfGeeks.php</CODE>, that can use it as a normal variable, like in\r\n<PRE>\r\n $result=mysql_query ("select country,monster from goosebumps\r\n where country=\'$country\'", $db);\r\n</PRE>\r\nwhere you should mind the different use of quotes!</P>\r\n\r\n<P>If you don\'t want to pass around numbers, but prefer names, you should encode according to the HTTP standards for a URL, to handles spaces and so on well.\r\nDo this with the PHP function <CODE>urlencode</CODE> as follows:\r\n<PRE>\r\n echo "&lt;A HREF=\'HallOfGeeks.php?search=", urlencode($plaintext), "\'&gt;";\r\n</PRE>\r\nto turn a string &lt;CODE&gt\'n*s</CODE&gt; into a reference like\r\n<PRE>\r\n &lt;A HREF=\'HallOfGeeks.php?search=n%25s\'&gt;\r\n</PRE>\r\nThe asterisk is automatically recovered from these codes when PHP parses its script parameters.</P>\r\n\r\n<P>Parameters can be treated as optional.\r\nConsider this code as a replacement of the previous:\r\n<PRE>\r\n $cc="";\r\n if (isset ($search)) {\r\n $cc=" and monster regexp \'$search\'";\r\n }\r\n $result=mysql_query ("select country,monster from goosebumps\r\n where country=\'$country\'\r\n $cc", $db);\r\n</PRE>\r\nThis would add the new constraint only when the variable is defined; the variable will be defined if it occurs as a parameter to the script.</P>\r\n<P>One last tip: It is possible to make pages <EM>very</EM> dynamic.\r\nIf a browsing person visits the same page several times, make sure that it is clear what the goal for that page is.\r\nThere is no problem in using login interactions when a browsers accesses a privileged page, as long as it can eventually lead to the page longed for.\r\nThis lesson helped me to drastically improve the web structure of the LHSD project.</P>\r\n<P>Do you see how quick and easy this combination of MySQL+PHP works?\r\nThat\'s what I meant before with crispness of this stuff!\r\nPerhaps your fingers are starting to itch a tad bit?\r\nLook at the URLs in SourceForge, and it\'ll only get worse <CODE>:-)</CODE>\r\n<BR>\r\n<EM>Enjoy!</EM></P>\r\n\r\n\r\n<A NAME="ref">\r\n<P><B>References</B></P>\r\n</A>\r\n<P>\r\n<A HREF="http://sourceforge.net">SourceForge</A> is an incredible development platform for the <A HREF="http://www.opensource.org">Open Source</A> and <A HREF="http://www.gnu.org">GNU</A> community.\r\n<BR>\r\n<A HREF="http://www.mysql.com">MySQL</A> is freely <A HREF="http://www.mysql.com/download.html">downloadable</A> and has an online <A HREF="http://www.mysql.com/Manual_chapter/manual_toc.html">reference manual</A>.\r\n<BR>\r\n<A HREF="http://www.php.net">PHP</A> has online <A HREF="http://www.php.net/docs.php3">documentation</A>, also on <A HREF="http://www.php.net/manual/ref.mysql.php3">MySQL</A>\r\n<!-- pgsql\r\nand <A HREF="http://www.php.net/manual/ref.pgsql.php3">PostgreSQL</A>\r\n-->\r\n.\r\n<BR>\r\n<!-- pgsql\r\n<A HREF="http://www.postgresql.org">PostgreSQL</A> is freely <A HREF="http://www.postgresql.org/sites.html">downloadable</A> and has online <A HREF="http://www.postgresql.org/doxlist.html">documentation</A>.\r\n<BR>\r\n-->\r\n<A HREF="http://home.zonnet.nl/vanrein">Rick van Rein</A>, author of this page, is a <A HREF="http://www.cs.utwente.nl/~vanrein">PhD student</A> in the <A HREF="http://wwwis.cs.utwente.nl:8080">database group</A> of the <A HREF="http://www.cs.utwente.nl/eng">computer science</A> department at the <A HREF="http://www.utwente.nl/uk">University of Twente</A>.\r\n\r\n',968797253,968793885,1458,804,'A primer'); INSERT INTO doc_data VALUES (774,1,'Getting started with SourceForge',' <p> <b>Introduction</b>\r\n<P>Hello new SourceForge user ! I\'m writing this HOWTO in\r\nan effort to make it easier to setup a new project at SourceForge. This\r\ndocument is incomplete, (of course) and will hopefully be added to over\r\ntime as more features are added to SourceForge. My intention is for this\r\nto be a step-by-step guide for the initial setup of your new project. First\r\nI will outline what I think is the most common situation new developers\r\nwill face ; You have a directory of code, maybe even a current CVS repository,\r\nand you wish to use all the features of SourceForge to continue developing\r\nyour project in the public eye, free, and open sourced, and hopefully to\r\nattract some new developers to it, and, of course, users. So let\'s get\r\nstarted...\r\n<P><FONT SIZE=+2>Steps for setting up a new project</FONT>\r\n<P>Here is a brief overview of what is involved, details\r\nto follow ;\r\n<P><B>1. Register as a new user with SourceForge.\r\n<BR>2. Register a New Project, logged in as the user you\r\ncreated in step 1.\r\n<BR>3. Setup your group and project information.\r\n<BR>4. Create your CVS repository with the latest snapshot\r\nof your code.\r\n<BR>5. Setup your group\'s web site.\r\n<BR>6. Setup mailing lists for your project.\r\n<BR>7. Finally, get used to using CVS for development, and\r\nget to work !</b>\r\n<P>...and some other things that you may need ;\r\n<P><b>8. Release a file module so people can see your work !\r\n<BR>9. Read the SourceForge site documentation and the help\r\nmessage forums.</b>\r\n<P><FONT SIZE=+2>Now on to the business...</FONT>\r\n<P><B>1. Register as a new user with SourceForge.</b>\r\n<P>On the <A HREF="http://www.sourceforge.net">SourceForge\r\nhomepage</A>, click on the option New User via SSL. This will allow you\r\nto give your details to SourceForge, and it will then setup a user account\r\nfor you. To do just about anything involving interacting with SourceForge\r\nyou need to have a user account. Once this is done, you can login as this\r\nuser anytime using the Login via SSL option on the SourceForge homepage.\r\n<P>When you login you are presented with your personal page\r\n; any projects you are involved in are listed, along with some other info.\r\nAlong the side of the page are some options for you, including one which\r\nis of particular interest to us ; Register New Project...\r\n<P><b>2. Register a New Project, logged in as the user you created\r\nin step 1.</b>\r\n<P>Clicking on the Register New Project link takes you to\r\na set of pages which you must simply step through, providing all the information\r\nrequired. It is very straightforward and well setup, so no help here is\r\nreally needed\r\n<P>Once complete, it gets sent to the SourceForge staff,\r\nand they look over it to determine if your project would be suited to the\r\ngoals of SourceForge. I\'ve yet to hear of a project rejected, so don\'t\r\nworry ; if its open sourced and free, I think you\'ll get accepted quickly<P>Now you wait, and hopefully receive a reply within 24\r\nhours. (if it takes longer, mail them directly - there were some problems\r\nwith new projects, but I believe they have been corrected now) If all goes\r\nwell you will be informed of your new project being up, and so login via\r\nSSL and at the bottom of your personal page there will be a link to your\r\nnew project\'s group page\r\n<P><b>3. Setup your group and project information.</b>\r\n<P>Click on that link ! You will now see your group\'s SourceForge\r\npage (this is different from your web site), and a list of options allowing\r\nyou to change things, basically to administer your project.\r\n<P>What do you have now ? Well, you have all of the following\r\n<ul>\r\n<li>a website at http://yourproject.sourceforge.net\r\n<li>a CVS repository at <li>cvs.yourproject.sourceforge.net:/cvsroot/yourproject\r\n<li>anonymous FTP at yourproject.sourceforge.net,\r\n<li>and access to mailing lists, which we\'ll use later.\r\n</ul>\r\n<P>The first thing to do is to enter a description of your\r\nproject for your group page. Click on Project Admin, and then on Edit Group\r\npublic Information and Categorization. Insert the required info into the\r\nfields.\r\n<P>Next question ; Do you have any other developers already\r\n? If so, they must all register as users on SourceForge, and then give\r\nyou their user names. You can then add them by user name to your list of\r\ndevelopers, giving them write access to your group\'s CVS and web site.\r\nTo do this go back to Project Admin, and click on Add Group Member. Now\r\ntype in their user name, and they will be added.\r\n<P>The rest of your group page you can explore and see what\r\nelse is about. I think we\'ve done the most important things here.\r\nTime to get some code where everyone can see it...\r\n<P><b>4. Create your CVS repository with the latest snapshot\r\nof your code.</b>\r\n<P>For people new to internet development (as I am myself)\r\nCVS takes a little getting used to. For the newbies, here is a brief description\r\nof what it does and how ;\r\n<P>It keeps a record of every change made to the source code,\r\nalong with comments about that change. At any time you can see any previous\r\nversion of any file in the repository. It allows multiple people to work\r\non the same files at the same time, merging the changes as they are "committed",\r\nand alarming the user if two changes conflict (very clearly, I might add)\r\nmaking sure the difference is resolved by a human being before allowing\r\nthe new version of that file to be placed into the repository.\r\n<P>This is cool. It takes some getting used to however. Basically\r\nthe development cycle goes like this ;\r\n<ol>\r\n<li>You import all your code into the CVS, then everyone\r\n"checks out" a working copy of the source tree.\r\n<li>Each person works in the comfort of their own computer\r\ngenerated reality, and when they have a new feature working, they "update"\r\ntheir local copy to be as much in sync with the current version as possible,\r\nand then they "commit" the files that have changed, back into the repository.\r\n<li>Any problems CVS has with commiting the files will\r\nbe mentioned, and you must then go through the problem files and resolve\r\nthe differences manually. In the files, the changed section is highlighted\r\nwith >>>>> and both versions are shown. Simply delete the old version (or\r\nedit to make it work how its supposed to), and re-commit the file. Once\r\nCVS has no problem, return to step (2), and get back to work !\r\n</ol>\r\n<P>So, now to the details of importing your source tree into\r\nyour CVS repository at SourceForge. First read the site documentation on\r\nCVS. For more info read a bit of the free 180 page <A HREF="http://cvsbook.red-bean.com">CVS\r\nbook</A>. Then do the following ;\r\n<P>Get <A HREF="http://www.ssh.fi">SSH</A> and CVS for your\r\nplatform. Under linux using a Bash shell, type in the following ;\r\n<P>export CVS_RSH=ssh\r\n<BR>export CVSROOT=loginname@cvs.yourproject.sourceforge.net:/cvsroot/yourproject\r\n<P>The first line tells CVS to use SSH to connect to the\r\nrepository. This is for security purposes. The second line tells CVS where\r\nto look for its Repository.\r\n<P>Now, the most likely situation is that you have some source\r\ncode in a directory tree you wish to import into CVS. Go to the top directory\r\nyou wish to import, in your source code tree, and type in the following,\r\nfilling in the bits mentioned below ;\r\n<P>cvs import directoryname vendor start\r\n<P>directoryname is the name under which the repository\r\nwill be accessed. If all goes well it will ask for your SourceForge user\r\npassword, and then go on its merry way importing your whole source tree.\r\n<P>Next, backup your old code base somewhere, because you\r\ndon\'t want to work with it anymore, and checkout a fresh CVS version using\r\n;\r\n<P>cvs checkout directoryname\r\n<P>This will get you a "working copy" of the code, in CVS\r\nform, ready for you to hack on. You should remember, however, that any\r\nchanges such as adding/removing files and directories must be explicitly\r\nstated to CVS - see the above mentioned book for details.\r\n<P><b>5. Setup your group\'s web site.</b>\r\n<P>I\'ll assume that you have some sort of web page or site\r\nbuilt already that you wish to put up on SourceForge to give your group\r\na public face. Login to SourceForge using SSH, for example ;\r\n<P>ssh -l loginname yourproject.sourceforge.net\r\n<P>you will now be in your home directory. From here all\r\ngroup files are stored in /home/groups/yourproject. Change to this\r\ndirectory. All your web pages are stored in the htdocs directory. Going\r\nin here will contain index.php, which is a blank page that says you haven\'t\r\nuploaded a web page yet. Logout, and copy the files for your web page using\r\nscp, a program which comes with ssh. For example ;\r\n<P>scp localfile loginname@shell.sourceforge.net:/home/groups/yourproject/htdocs\r\n<P>I suggest you gzip up your site, send it in one go using\r\nscp, then login with ssh and gunzip it.\r\n<P>So what should be on the web page ? Perhaps you\'d like\r\nthe following, as well as your project\'s information ;\r\n<ol>\r\n<li>A link to the projects group page on SourceForge.\r\n<li>Mailing list links (we\'ll create them in a second)\r\n<li>A SourceForge icon and web counter - see the site\r\ndocumentation for this.\r\n<li>A link to the CVS web interface at http://cvs.sourceforge.net/cgi-bin/cvsweb.cgi/?cvsroot=yourproject\r\n<li>Some info about using CVS specific to your project.\r\n<li>Setup mailing lists for your project.</b>\r\n</ol>\r\n\r\n<P>If your project isn\'t that active yet (or only has one\r\nlonely developer) your mailing lists will be very quiet, however I still\r\nsuggest you look to the future and setup three standard lists for your\r\nproject ; a devel list for developers, a users list for users, and an announce\r\nlist for new version announcements.\r\n<P>Do this via your group page using the mailing list admin\r\nlink. Its quite simple so you shouldn\'t have any problems...\r\n<P><b>7. Finally, get used to using CVS for development, and\r\nget to work !</b>\r\n<P>I\'ll give you some quick details of the development cycle\r\nto get you started, but anything you\'ll have to look up yourself.\r\n<P>To update your working copy to be in sync with the CVS\r\nrepository one use ;\r\n<P>cvs -z3 update -Pd\r\n<P>(after setting up CVSROOT and CVS_RSH as outline previously)\r\n<BR>For commiting the changes to a file ;\r\n<P>cvs commit -m "comment about changes." filename\r\n<P>To add a new file to the CVS repository ;\r\n<P>cvs add filename\r\n<BR>cvs commit -m "added filename" filename\r\n<P>...and now you\'re ready to go !\r\n<P>Some other things that you may need ;\r\n<P><b>8. Release a file module so people can see your work !</b>\r\n<P><b>9. Read the SourceForge site documentation and the help\r\nmessage forums.</b>\r\n<P>From the homepage. Recommended.',968796731,968794021,1458,805,'An introduction'); INSERT INTO doc_data VALUES (775,1,'INTERNET EXPLORER USERS - PAGE NOT FOUND/DNS/SECURE CHANNEL ERRORS','<b>PAGE NOT FOUND/DNS/SECURE CHANNEL ERRORS \r\n<P></b>\r\nIf you receive this error, it is probably because you are using IE 4. This is due to IE having a problem understanding both Netscape and Microsoft\r\nSGS SSL certificates. It _should_ support both, but doesn\'t. While we\'re working toward getting a new cert enabled on the servers, the best action in\r\nthe mean time is to either: (1) use IE 5 128bit, or (2) use Netscape. ',968796806,968794080,1458,805,'It\'s not our fault...'); INSERT INTO doc_data VALUES (778,1,'Help Choosing an Open Source license','<b>Help Choosing an Open Source license</b><P>\r\n[Originally submitted by a user; updated] Because of the many open-source licensing options I found it helpful to link to discussions of the differences between and philosophies of many of the\r\nmain options. What follows is a short list, although I\'m sure there are others.<P>\r\n\r\n<a href="http://www.opensource.org/">Open Source Initiative: Perspectives on Open Source and licenses</a>\r\n<a href="http://www.fsf.org/philosophy/license-list.html">Free Software Foundation license commentary</a>\r\n<a href="http://www.daemonnews.org/199905/gpl.html">FreeBSD DaemonNews</a>\r\n<a href="http://www.stromian.com/Public_Licenses.html">Evaluation of Public Software Licenses </a>\r\n<a href="http://slashdot.org/interviews/99/07/30/2220240.shtml">Interview: Bruce Perens Answers Open Source License Questions </a>',968796795,968794418,1458,805,'Some links and resources'); INSERT INTO doc_data VALUES (788,1,'The 6 hour cron delay','<P>IMPORTANT: The 6 hour cron delay </b>\r\n<P>\r\nMany functions on the SourceForge web site affect accounts on other SourceForge machines. This includes all functions relating to mail aliases, shell\r\npasswords, user additions, group member changes, cvs repository creation, etc. \r\n<P>\r\nUpdates to these other systems happen via cron 4 times per day, so changes made on the web site will appear to be live, but will not take effect until\r\nthe next cron update. ',968796754,968795282,1458,805,'Important'); INSERT INTO doc_data VALUES (791,1,'Submitting bugs','<P><B>Submitting a bug for a Project \r\n<P></b>\r\nSubmitting a bug is something very important for developers. They are often in need of feedback on their projects. You can in SourceForge submit a\r\nbug for any project. For this, you just need to be logged in.\r\n<P><B>\r\nSubmitting a bug \r\n<P></b>\r\nJust go on the Bug Tracking system for a project, and then click on Submit. \r\n<P>\r\nFirst, you must choose a category and a group for the bug you will submit. Categories and groups are set up by a project administrator. Categories are\r\nequivalent to project parts (i.e : Server, Graphics, Engine , ...), and Bug groups define types of bugs (i.e : Unreproducible, Missing Feature ...). If no\r\ncategories or bug groups are defined, just let "none" and a project administrator will classify the bug himself. \r\n<P>\r\nAfter that, enter a quick description of the bug in the summary field. This description must be as clear as possible. \r\n<P>\r\nThen enter the details in the details Box. And click on the Submit button to end this bug report. You\'ll be noticed when the bug will be closed. ',968796777,968795560,1458,805,'A quick howto'); INSERT INTO doc_data VALUES (889,1,'Foundries for users and projects','<h2>How does the list of projects work?</h2>\r\n\r\n<p>The "featured projects" list is manually edited by\r\nthe foundry admin.\r\n\r\n<p>The other lists (most active, top downloads) come from\r\nthe Trove maps. Provided that you have characterized your\r\nproject correctly in the Trove software map,\r\nit should just be a question of\r\nwhether your project is active enough. Note that most active\r\nis based on the rating of the last week, not all time.\r\n\r\n<h2>How do I get my news into the foundry?</h2>\r\n\r\n<p>Submit it to your project. The foundry admin will see\r\na list of all news items submitted for projects in the\r\nrelevant software map categories and can approve the most\r\nnewsworthy for the foundry.\r\n\r\n<p>If you have questions, contact the foundry admin (just\r\nbe aware that most foundries have more news items available\r\nthan they have space to run).\r\n\r\n<h2>I want to help with a foundry or create one</h2>\r\n\r\n<p>For an existing foundry, contact the foundry admins.\r\nHelping with an existing one before creating one is\r\nencouraged (so you can get to know the tools) - you can\r\nsee a list of foundries under the "About Foundries" link.\r\n\r\n<h2>I still have questions</h2>\r\n\r\n<p>Contact the foundry admin. Their name is on the left\r\nside of the foundry page.\r\n',969418525,969418381,4527,805,'How can I get mentioned in a foundry, etc'); INSERT INTO doc_data VALUES (779,1,'Administering developers for your project',' <P><B>Site Documentation - Administering Developers for Your Project</B>\r\n\r\n<P>One of the most important and powerful features of the SourceForge\r\nTeam Development Environment is web-based user administration. As a project\r\nadmin, you have complete control over developer permissions in\r\nthe bug tracker, message forums, and task manager. \r\n\r\n<P>At this time, all\r\ndevelopers have write access to the CVS Repository and to your\r\ngroup directory (web site). There are plans to make these permissions\r\noptional as well.\r\n\r\n<P><B>Adding developers to your project</B>\r\n\r\n<P>As a project administrator, you will control the developer list for your\r\nproject. If someone wants to join your project as a developer, they\r\nmust first register on the site as a user, then they must contact you\r\nrequesting to join.\r\n\r\n<P>You control this membership list through the "Group Members" box\r\non the Project Admin page (available to you in the menu bar when you\r\nare logged in and at your project page).\r\n\r\n<UL>\r\n<LI> Go to the project page (https://sourceforge.net/project/admin/?group_id=89348\r\n for instance).\r\n<LI> Click on <B>Project Admin</B>\r\n<LI> Click on <B>Add Group Member</B>\r\n<LI> Fill one of the input box with either a SourceForge UID or a login name\r\n<LI> Click on <B>Submit</B>\r\n</UL>\r\n\r\n<P><B>Removing developers from your project</B>\r\n\r\n<P>Click "Remove from Group" from the "Project Admin" page to remove a\r\ngroup member. Project administrators cannot be removed in this\r\nmanner. To remove or add an administrator, email admin@sourceforge.net\r\nwith the request.\r\n\r\n<P>IMPORTANT: The cvs and shell account permissions will not be updated\r\nto reflect your changes immediately, but will take effect at the next\r\nsitewide cron update (once per 6 hours).\r\n\r\n<!-- <P><I>Group Members Box</I><BR> -->\r\n\r\n<P><B>Editing developer permissions</B>\r\n\r\n<P>To control developer permissions within your project, click\r\n"Edit Member Permissions" in the Group Members box, resulting in the\r\npage shown below, where each member\'s permissions may be set. Don\'t\r\nforget to click "Update Developer Permissions" after making any changes.\r\n\r\n',968797292,968794675,1458,806,'(How to be in charge)'); INSERT INTO doc_data VALUES (780,1,'File Modules','<B>File Modules \r\n</b><P>\r\nAny given project may want to release one or more file products under their project name. This will include any official released versions of their\r\nsource code, in any format. \r\n<P>\r\nBefore releasing files, you must first define a file module for your project. If your project has only one development tree, you will probably define only\r\none module. If your project will be releasing multiple filesets, then additional modules may be defined. \r\n<P>\r\nA file module defines an actual software product. When other projects choose to make references to your products, for dependencies or other\r\nreasons, it is your file modules that will be referenced. For this reason, when a file module is defined, it cannot be deleted in case it is referenced\r\nspecifically by other parts of the site. \r\n<P><B>\r\nIMPORTANT! \r\n<P></b>\r\nFile modules are always referenced through their parent project. People do not search for your modules, they search for your project. Modules will\r\nshare bug tracking, task management, forums, developers, web site, and cvs repository. \r\n<P><b><i>\r\nFor MOST projects, there will only be the need to define one file release module. \r\n<P></b></i>\r\nNew modules vs. New projects \r\n<P>\r\nProjects share administrators and developers, have one web site, and share a CVS repository. If it is conceivable that a new file module would ever\r\nspin off into its own development cycle, with a non-identical developer set or requiring an independent web site, it is probably best to assign the\r\nproduct a new project, rather than just a module. It is OK to have the same developer set on two projects, if they are releasing two different products. \r\n<P><b>\r\nExamples \r\n<P></b>\r\nFor a project I used to work on, ThorMail, we used to simultaneously maintain two file release modules. Every time we released a new version of\r\nThorMail, we would simultaneously release a ThorData module, which included some utility scripts and patches for additional programs that would\r\nwork with ThorMail. These two files were always dependent upon eachother, would always have the same set of developers, and would never be\r\nseparated. They would have been two modules under one project in SourceForge. \r\n',968797297,968794762,1458,806,'Important when releasing multiple file products under the same name'); INSERT INTO doc_data VALUES (781,1,'Making File Releases','<b>Making File Releases</b> \r\n<p> This text explains the steps to publish a release for a project.\r\nUsually a release for project foo is a file named foo-2.0.tar.gz\r\nthat you want to show in the <B>File Release</B> box of your project\r\nhome page. See <a href="modules.php">File Modules</a> for conceptual\r\nbackground. In the following we assume the most simple case:\r\n\r\n<UL>\r\n<LI> Your project is <B>foo</B>\r\n<LI> It has a <B>File Module</B> named <B>foo</B>\r\n<LI> You want to show <B>foo-2.0.tar.gz</B> in the <B>File Release</B> box.\r\n</UL>\r\n\r\n<P><B>Uploading to download.sourceforge.net</B><P>\r\n\r\nThe interactive method would be:\r\n\r\n<UL>\r\n<LI> ftp download.sourceforge.net\r\n<LI> user: ftp\r\n<LI> password: me@myself.org\r\n<LI> cd incoming\r\n<LI> bin\r\n<LI> put foo-2.0.tar.gz\r\n</UL>\r\n<P>\r\n\r\nThe command line method would be:\r\n\r\n<UL>\r\n<LI> ncftpput -V download.sourceforge.net /incoming foo-2.0.tar.gz\r\n</UL>\r\n\r\n<P><B>Accept the new release</B><P>\r\n\r\n<UL>\r\n<LI> Login as administrator of project <B>foo</B>\r\n<LI> Go to the <B>foo</B> project home page\r\n<LI> Click on <B>File Release</B>\r\n<LI> A popup menu shows all the files in the ftp://download.sourceforge.net/incoming/\r\n area. Choose your file. Be very carefull not to choose the distribution of \r\n someone else. \r\n<LI> Click on <B>Submit</B>\r\n</UL>\r\n\r\n<P><B>Fill information about the release</B><P>\r\n\r\nAlthough you should be carefull when filling these fields, you will \r\nhave the opportunity to fix mistakes later. \r\n\r\n<UL>\r\n<LI> Filling the version number is mandatory. In our example we\r\n put <B>2.0</B> in the <B>Release Version Number</B> input box.\r\n<LI> Unless you want another date than the current date, leave the\r\n <B>Release Date</B> input box empty. \r\n<LI> If your project contains more than one File Module, you must \r\n chose the one to which the release belongs. When handling a \r\n simple project like <B>foo</B> you have only one file module\r\n named <B>foo</B> and it is automatically selected. We leave\r\n the <B>Module Name</B> popup menu untouched for our example.\r\n<LI> The <B>Text Display Format</B> checkbox choose the display \r\n format of the ChangeLog and Release Notes text. \r\n<LI> The <B>Release Notes</B> text area is intended for compatibility\r\n information and synthetic description of the modifications. Basically\r\n it should be formated as a mail the users of the project would like\r\n to receive to know what\'s new in this release.\r\n<LI> The <B>ChangeLog</B> text area is intended for chronologicaly ordered\r\n technical change reports. It is intended for developpers to understand\r\n precisely what happened to the sources since the latest release. Be\r\n carefull: this box is not intended to contain the <b>full</b> ChangeLog\r\n content, only the diffs from the previous release.\r\n<LI> Click on the <B>Submit</B> button.\r\n</UL>\r\n\r\n<P><B>Modifying release information</B><P>\r\n\r\n<UL>\r\n<LI> Login as administrator of project <B>foo</B>\r\n<LI> Go to the <B>foo</B> project home page\r\n<LI> Click on <B>Project Admin</B>\r\n<LI> Click on <B>Edit File Releases</B>\r\n<LI> Choose the release for which you want to update information and\r\n click on the <B>Edit</B> next to it.\r\n<LI> The <B>File Status</B> popup menu allows you to delete a release.\r\n<LI> The <B>Filename</B> input box allows you to change the filename \r\n to which the release is related. Mainly usefull to fix mistakes.\r\n<LI> All the other fields are identical to the initial information form.\r\n<LI> Click on <B>Submit</B>\r\n</UL>\r\n\r\n',968797302,968794809,1458,806,'Release early, release often!'); INSERT INTO doc_data VALUES (784,1,'SourceForge getting started guide (GERMAN)',' <p> <meta name="description" content="Kurze Anleitung, wie man bei www.sourceforge.net ein neues Projekt einrichtet">\r\n<meta name="author" content="Michael Renzmann">\r\n<meta name="generator" content="Ulli Meybohms HTML EDITOR">\r\n\r\n<center>\r\n <h3>oder: Wie man bei SourceForge ein neues Projekt einrichtet</h3>\r\n</center>\r\n\r\n<hr noshade size="1">\r\n\r\n<p>\r\nÜbersetzung: <a href="mailto:otaku@users.sourceforge.net">otaku</a><br>\r\nOriginaltext: <a href="mailto:prettypoly@users.sourceforge.net">prettypoly</a><br>\r\nStand: 29.12.1999\r\n</p>\r\n\r\n<p>\r\n<font size=-2><u>Anmerkung des Übersetzers:</u><br>\r\nEs gibt mit Sicherheit Leute, deren Englisch besser ist als meines.\r\nVon daher sind Hinweise auf (grobe) Übersetzungsfehler o.ä. natürlich gerne willkommen. Ich\r\nhabe versucht, die Anleitung von prettypoly nicht wortwörtlich zu übersetzen, daß\r\nklingt sonst alles so gestelzt :-)<br>\r\nDiese Version der HOWTO geht auch noch davon aus, daß man im Notfall auch ein paar Brocken Englisch\r\nversteht, um sich auf der SourceForge-Homepage zurechtzufinden. Später (wenn die Entwicklung bei SF mal\r\netwas langsamer voranschreitet) werde ich diese Anleitung auch noch ein wenig erweitern. Vielleicht findet sich\r\nbis dahin ja auch jemand, der sich die Mühe macht und eine deutsche Bedienungsanleitung für SF\r\nschreibt...<br>\r\nMan möge mir Flüchtigkeitsfehler bitte nachsehen, da ich diese Übersetzung spontan mitten in der\r\nNacht geschrieben habe. Da kann sich schon mal der eine oder andere Vertipper einschleichen... :-)\r\n</font>\r\n</p>\r\n<hr noshade size="1"><br>\r\n\r\n<p><b><u>Vorwort</u></b></p>\r\n\r\n<p>Hallo SourceForge-Neulinge!</p>\r\n<p>Ich habe diese Anleitung geschrieben, um die Einrichtung eines neuen Projektes und die ersten Schritte bei\r\nSourceForge zu vereinfachen. Das ganze ist noch unvollständig und wird (hoffentlich) mit SourceForge\r\nmitwachsen.</p>\r\n<p>Die folgende Situation dürfte auf die meisten Programmierer zutreffen:<br>\r\nEs ist ein Verzeichnis vorhanden, in dem der geschriebene Code liegt, vielleicht sogar ein aktuelles CVS repository.\r\nDie Features von SourceForge sollen genutzt werden, um das Projekt effizient weiterzuentwickeln, der Öffentlichkeit\r\nvorzustellen, vielleicht ein paar Helfer zu finden und natürlich auch neue Benutzer. Ich gehe im folgenden daher\r\neinfach mal von dieser Situation aus. Also los...\r\n</p>\r\n\r\n<p><b><u>Überblick</u></b></p>\r\n\r\n<p>Die folgende Liste zeigt, was zum Einrichten eines neuen Projektes bei SourceForge gemacht werden muß. Die\r\nErklärung dazu kommt gleich.\r\n\r\n<ol>\r\n <li><a href="#one">Als neuer User bei SourceForge anmelden</a></li>\r\n <li><a href="#two">Mit diesem Account einloggen und das neue Projekt anmelden</a></li>\r\n <li><a href="#three">Gruppen- und Projektinformationen anpassen</a></li>\r\n <li><a href="#four">CVS repository mit dem aktuellen Schnappschuß des Quellcodes einrichten</a></li>\r\n <li><a href="#five">Webseiten für das Projekt auf den Webserver laden</a></li>\r\n <li><a href="#six">Mailinglisten anlegen</a></li>\r\n <li><a href="#seven">ggf. mit CVS vertraut machen und mit der Arbeit loslegen (bzw. weitermachen)!</a></li>\r\n</ol>\r\n... außerdem könnte man noch folgendes brauchen:\r\n<ol start=8>\r\n <li>Ein Filemodul freigeben, damit man sich den Fortschritt des Projekts ansehen kann</li>\r\n <li>SourceForge "Site Documentation" und das Hilfe-Forum durchlesen</li>\r\n</ol></p>\r\n\r\n<p><b><u>An die Arbeit...</u></b></p>\r\n\r\n<p><b><a name="one">1. Als neuer User bei SourceForge anmelden</a></b></p>\r\n<p>Dazu muß man auf der <a href="http://www.sourceforge.net">SourceForge-Homepage</a> die Option\r\n"New User via SSL" anklicken. Damit der neue Account eingerichtet werden kann, werden einige persönliche\r\nDaten abgefragt. Hat man das hinter sich gebracht, kann man sich ab jetzt immer ¨ber die Option "Login via\r\nSSL" anmelden.</p>\r\n<p>Nach dem Login befindet man sich auf seiner persönlichen Seite. Hier wird beispielsweise aufgelistet, an\r\nwelchen Projekten man teilnimmt. Am linken Rand dieser Seite findet man einige Optionen, von denen uns vor allem\r\n"Register New Project" interessiert.</p>\r\n\r\n<p><b><a name="two">2. Das neue Projekt anmelden</a></b></p>\r\n<p>Nun muß man sich durch eine Reihe Seiten durcharbeiten und die gewünschten Informationen angeben. Das\r\nganze ist eigentlich recht verständlich geschrieben und einfach zu handhaben, daher gehe ich auf die einzelnen\r\nAngaben hier nicht weiter ein.</p>\r\n<p>Wenn man alle Angaben gemacht hat, schickt man die Beschreibung des Projekt an das SourceForge-Team. Das Projekt\r\nwird dann begutachtet und überprüft, ob es den Zielen von SourceForge entspricht. Keine Sorge, ich habe\r\nbis jetzt nicht gehört, daß ein Projekt abgelehnt wurde... wenn es unter einer OpenSource-Lizenz steht\r\nund frei verfügbar ist, sollte es klappen.</p>\r\n<p>Nun muß man ein wenig warten. In der Regel bekommt man innerhalb von 24 Stunden eine Mail mit dem Hinweis,\r\ndaß das Projekt eingerichtet wurde. Wenn man sich nun wieder einloggt, findet man am unteren Ende seiner\r\npersönlichen Seite einen Link zum Verwaltungsbereich des neuen Projekts.</p>\r\n\r\n<p><b><a name="three">3. Gruppen- und Projektinformationen anpassen</a></b></p>\r\n<p>Hat man den Link auf seiner persönlichen Seite angeklickt, kommt man also zum Verwaltungsbereich des neuen\r\nProjektes. Hier kann man zahlreiche Einstellungen vornehmen.</p>\r\n<p>Bis jetzt hat mal also folgendes:\r\n<ul>\r\n <li>eine Website unter http://<i>Projektname</i>.sourceforge.net</li>\r\n <li>ein CVS repository unter cvs.<i>Projektname</i>.sourceforge.net:/cvsroot/<i>Projektname</i></li>\r\n <li>einen anonymous FTP-Zugang unter ftp.<i>Projektname</i>.sourceforge.net</li>\r\n <li>und Zugriff auf einen Mailinglisten-Server</li>\r\n</ul>\r\n</p>\r\n<p>Als erstes sollte man eine Beschreibung des neuen Projektes angeben. Dazu klickt man auf "Project\r\nAdmin", dann auf "Edit Group Public Information and Categorization". Hier werden die gewünschten\r\nInformationen in die entsprechenden Felder eingegeben. Die Beschreibung und die Zielplattform(en) werden in der\r\nSoftware Map angezeigt, in der alle Projekte bestimmten Kategorien zugeordnet und beschrieben werden. Ein Link zur\r\nSoftware Map ist am linken Rand oben zu finden.</p>\r\n<p>Die nächste Frage, die interessiert, ist: gibt es weitere Entwickler, die an diesem Projekt mitarbeiten?\r\nWenn ja, dann müssen sie sich alle bei SourceForge wie unter 1. beschrieben anmelden und Ihnen die Usernamen\r\nmitteilen. Sie können dann die Namen in die Liste der Entwickler aufnehmen und ihnen Schreibzugriff auf den\r\nCVS-Server und die Website geben. Dazu wählt man im Verwaltungsbereich des Projektes "Add Group\r\nMember" und gibt die entsprechenden Namen ein.</p>\r\n<p>Der Rest der Einstellungen im Verwaltungsbereich wird später interessant. Nun sollte man erstmal etwas Code\r\nbereitstellen...</p>\r\n\r\n<p><b><a name="four">4. CVS repository mit dem aktuellen Schnappschuß des Quellcodes einrichten</a></b></p>\r\n<p>Wenn man mit CVS (wie ich) noch keine Erfahrung hat, braucht man ein bisschen Eingewöhnungszeit. Den\r\nNeulingen möchte ich kurz beschreiben, was CVS überhaupt macht:</p>\r\n<p>CVS führt Buch über die Veränderungen, die am Sourcecode vorgenommen wurden, zusammen mit einer\r\nBeschreibung dessen, was verändert wurde. Man kann sich zu jeder Zeit jede vorangegangene Version jeder\r\nDatei im repository ansehen. Durch CVS können mehrere Entwickler zur gleichen Zeit an der gleichen Datei\r\narbeiten und ihre Änderungen zusammenführen. Wenn zwei Änderungen sich gegenseitig beeinflussen,\r\nwerden die Entwickler darauf hingewiesen und sichergestellt, daß der Konflikt behoben wird, bevor die neue\r\nVersion der Datei im repository aufgenommen wird.</p>\r\n<p>Das ist eine schöne Sache, an die man sich zwar erst ein wenig gewöhnen muß, die man aber bald\r\nschätzen wird. Im Wesentlichen besteht der Entwicklungszyklus aus:</p>\r\n\r\n<ol>\r\n <li>\r\n Man importiert den kompletten Sourcecode ins repository; anschließend checkt jeder Entwickler eine\r\n Arbeitskopie aus dem Entwicklungsbaum aus.\r\n </li>\r\n <li>\r\n Nun arbeitet jeder Entwickler in seiner gewohnten Umgebung am Programm. Sobald ein neues Feature fertig ist,\r\n aktualisiert man zunächst die lokale Kopie, um auf dem laufenden zu sein und schreibt die veränderten\r\n Files zurück in den Entwicklungsbaum.\r\n </li>\r\n <li>\r\n Sollten beim zurückschreiben der Veränderungen irgendwelche Konflikte auftauchen, wird man darauf\r\n hingewiesen und muß anschließend manuell entsprechende Änderungen vornehmen. In den Dateien\r\n werden die veränderten Bereiche mit ">>>>>" hervorgehoben und beide Versionen angezeigt. Hier\r\n löscht man entweder einfach die alte Version oder paßt den Bereich an, damit er wie gewünscht\r\n arbeitet. Wenn alle Konflikte beseitigt sind, geht man wieder zurück zu Punkt 2 und setzt die Arbeit fort.\r\n </li>\r\n</ol>\r\n\r\n<p>Gut. Nun zu den Details, wie man den eigenen Source-Baum auf den CVS-Server von SourceForge lädt. Als erstes\r\nsollte man sich die "Site Documentation" zum Thema CVS ansehen. Will man mehr wissen, ist der Griff zum\r\n180 Seiten starken (und frei verfügbaren) CVS-Handbuch angesagt. Dann geht man wie folgt vor:</p>\r\n<p>SSH und CVS für das benutzte Betriebssystem besorgen. Für die Kombination Linux und bash gibt man nun\r\nein:</p>\r\n<code>\r\nexport CVS_RSH=ssh<br>\r\nexport CVSROOT=<i>Username</i>@cvs.<i>Projektname</i>.sourceforge.net:/cvsroot/<i>Projektname</i><br>\r\n</code>\r\n<p>Mit der ersten Zeile sagt man CVS, daß es mit Hilfe von SSH die Verbindung zum repository aufnehmen\r\nsoll. Das wird aus Sicherheitsgründen so gemacht. Die zweite Zeile teilt CVS mit, wo das repository genau zu\r\nfinden ist. Die kursiven Teile (Username und Projektname) müssen entsprechend angepaßt werden!</p>\r\n<p>Oft wird man nun den Sourcecode aus einem Verzeichnis-Baum in den CVS-Server importieren wollen. Dazu\r\nwechselt man in das Verzeichnis, daß übertragen werden soll, und gibt folgende Zeile ein:</p>\r\n<code>\r\ncvs import <i>Verzeichnisname</i> vendor start\r\n</code>\r\n<p><i>Verzeichnisname</i> ist der Name, unter dem das repository angesprochen werden soll. Wenn alles klappt, wird\r\nman nun nach seinem SourceForge User-Paßwort gefragt. Anschließend wird das Verzeichnis in den\r\nCVS-Server importiert, was ggf. ein Weilchen dauern kann.</p>\r\n<p>Jetzt legt man ein Backup des "alten" Codes an, den man gerade auf den CVS-Server kopiert hat. In\r\nZukunft arbeitet man nicht mehr mit dieser Version, sondern mit einer frisch ausgecheckten CVS-Version. Die\r\nerhält man mit</p>\r\n<code>\r\ncvs checkout <i>Verzeichnisname</i>\r\n</code>\r\n<p>Dadurch bekommt man eine Arbeitskopie des Sources in für CVS verdaulicher Form. Man sollte auf keinen Fall\r\nvergessen, daß jede neue oder gelöschte Datei bzw. Verzeichnis CVS bekanntgegeben werden muß.\r\nWeitere Informationen dazu gibts im oben genannten Buch.</p>\r\n\r\n<p><b><a name="five">5. Webseiten für das Projekt auf den Webserver laden</a></b></p>\r\n<p>Ich gehe davon aus, daß bereits ein paar Seiten zum Projekt existieren, die nun auch auf SourceForge\r\nzur Verfügung stehen sollen, damit man einen Eindruck von Ihrem Projekt gewinnen kann. Sollten Sie noch\r\nkeine Seiten erstellt haben und auch nicht wissen, wie Sie das am besten anstellen, dann ist\r\n<a href="http://www.teamone.de/selfhtml">SelfHTML</a> von Stefan Münz die richtige Adresse für Sie.</p>\r\n<p>Um auf dem Projektaccount zu arbeiten, loggt man sich per SSH auf SourceForge ein, z.B. mit</p>\r\n<code>\r\nssh -l <i>Username</i> <i>Projektname</i>.sourceforge.net\r\n</code>\r\n<p>Anschließend findet man sich im Home-Verzeichnis des Projektes wieder. Von hier aus werden alle\r\nProjektdateien im Verzeichnis <samp>/home/groups/<i>Projektname</i></samp> abgelegt. Dort sind alle Webseiten im\r\nVerzeichnis <samp>ht_docs</samp> untergebracht. Bisher befindet sich in diesem Verzeichnis nur eine Datei\r\n<samp>index.php</samp>, die besagt, daß bisher noch keine Webseiten zur Verfügung stehen.</p>\r\n<p>Die Webseiten werden mit dem Kommando <samp>scp</samp> übertragen, da&azlig; mit ssh ausgeliefert wird.\r\nEs wird folgendermaßen benutzt:</p>\r\n<code>\r\nscp <i>lokale_Dateien_zum_übertragen</i> <i>Username</i>@shell.sourceforge.net:/home/groups/<i>Projektname</i>/ht_docs\r\n</code>\r\n<p>Ich empfehle Ihnen, die Dateien mit gzip zu packen und mit scp zu übertragen. Loggen Sie sich\r\nanschlie&zlig;end mit ssh auf SourceForge ein und entpacken Sie das Archiv mit gunzip.</p>\r\n<p>Sie fragen Sich vielleicht, was Sie auf Ihre Webseiten schreiben sollen. Neben einer Beschreibung des\r\nProjekt könnten Sie folgendes unterbringen:</p>\r\n<ol>\r\n <li>ein Link auf die SourceForge-Projektseite</li>\r\n <li>Links zu den Mailinglisten (die wir gleich anlegen)</li>\r\n <li>ein SourceForge-Icon und einen Zugriffszähler; Informationen dazu gibts bei der "Site\r\n Documentation" von SourceForge</li>\r\n <li>ein Link zum Webinterface des CVS-Servers unter http://cvs.sourceforge.net/cgi-bin/cvsweb.cgi/?cvsroot=<i>Projektname</i></li>\r\n <li>einige für Ihr Projekt spezifische Informationen, wie CVS benutzt werden kann/soll</li>\r\n</ol>\r\n<p>Das sind natürlich nur einige Anregungen. Lassen Sie Ihre Fantasie spielen und versuchen Sie sich\r\nvorzustellen, was Besucher Ihrer Seiten interessieren könnte.</p>\r\n\r\n<p><b><a name="six">6. Mailinglisten anlegen</a></b></p>\r\n<p>Auch, wenn sich bei einem Projekt noch nicht viel tut oder nur ein einzelner Entwickler daran arbeitet, sollte\r\nman in die Zukunft denken. Ich empfehle, drei Standardlisten für jedes Projekt anzulegen. Eine\r\n<i>devel</i>-Liste für Entwickler, eine <i>users</i>-Liste für die Benutzer und eine\r\n<i>announce</i>-Liste, auf der neue Versionen angekündigt werden.</p>\r\n<p>Die Listen können im Verwaltungsbereich des Projektes mit der Option "Mailing List Admin"\r\nangelegt werden. Das sollte keine Probleme bereiten, daher gehe ich darauf nicht weiter ein.</p>\r\n\r\n<p><b><a name="seven">7. Mit CVS vertraut machen</a></b></p>\r\n<p>Hier sind die wichtigsten Kommandos, die man eigentlich ständig braucht. Alles weitere muß man im\r\nschon genannten Handbuch nachschlagen.</p>\r\n<p>Die lokale Arbeitskopie des Sources mit der aktuellen Version auf dem Server zu synchronisieren:</p>\r\n<code>\r\ncvs -z3 update -Pd\r\n</code>\r\n<p>(dazu muß man CVSROOT und CVS_RSH wie oben beschrieben eingestellt haben).</p>\r\n<p>Die Änderungen an einer Datei auf den CVS-Server einspielen: </p>\r\n<code>\r\ncvs commit -m "Beschreibung der Veränderungen." <i>Dateiname</i>\r\n</code>\r\n<p>Eine neue Datei in das CVS repository aufnehmen:</p>\r\n<code>\r\ncvs add <i>Dateiname</i><br>\r\ncvs commit -m "<i>Dateiname</i> hinzugefügt" <i>Dateiname</i>\r\n</code>\r\n<p>... und nun kanns losgehen!</p>\r\n',968797312,968795045,1458,807,' '); INSERT INTO doc_data VALUES (785,1,'CVS HowTo (FRENCH)','<p> <B>Documentation CVS de SourceForge</B>\r\n\r\n<P>Cette documentation est vraiment limitée pour le moment, mais elle va déja vous permettre de démarrer.\r\n<P>Pour tout les accčs développeurs (lecture/ecriture), vous devrez utiliser SSH.\r\nUn client SSH (1.x) doit etre disponible sur votre machine locale. La variable d\'environnement CVS_RSH doit contenir le chemin de ssh.\r\nCeci peut etre réalisé sur la plupart des systčmes Linux (bash) en tapant :\r\n<UL><B><I>export CVS_RSH=ssh</I></B>\r\n</UL>\r\n\r\n<P>L\'accčs anonyme ŕ CVS utilise le pserver CVS, et ne requiert pas SSH.\r\n\r\n<P>Si vous obtenez des erreurs du type \'permission denied\' sans qu\'on vous demande de saisir un mot de passe,\r\nla variable ne doit pas etre correctement initialisée, ou SSH n\'est pas disponible sur votre systčme.\r\nArrangez ceci, avant de suspecter un problčme de mot de passe.\r\n\r\n<P><B>Comment importer du code source dans votre dépôt (repository)</B>\r\n<UL>\r\n<LI>Sur votre machine locale, allez dans le répertoire dans lequel se situent les fichiers (et sous répertoires) que vous\r\nvoulez importer.\r\nTout les fichiers qui se situent actuellement dans ce répertoire, ainsi que les sous répertoires, vont ętre importés dans l\'arbre CVS.\r\n<LI>Tapez ce qui suit oů nomutilisateur est votre nom d\'utilisateur SourceForge,\r\nvotreprojet est le nom unix de votre projet, et\r\nnomrepertoire est le nom du nouveau repertoire racine pour CVS (ex : . pour le repertoire dans lequel vous vous situez.)\r\n<BR><B><I>cvs -dnomutilisateur@cvs.votreprojet.sourceforge.net:/cvsroot/votreprojet import nomrepertoire constructeur debut</I></B>\r\n</UL>\r\n\r\n<P><B>Comment récupérer les sources via SSH</B>\r\n<UL>\r\n<LI>Tapez ce qui suit, en effectuant les modifications nécessaires pour votre nom d\'utilisateur, et votre projet.\r\n<BR><B><I>cvs -dnomutilisateur@cvs.votreprojet.sourceforge.net:/cvsroot/votreprojet co nomrepertoire</I></B>\r\n<LI>Aprčs la récupération intiale des fichiers sources, vous pouvez aller dans ce répertoire et éxecuter\r\nles commandes cvs, sans le marqueur -d. Par exemple :\r\n<BR><B><I>cvs update<BR>cvs commit -m "commentaires pour cette modification"<BR>cvs add monfichier.c</I></B>\r\n</UL>\r\n\r\n<P><B>Comment récupérer les sources de maničre anonyme en passant par le pserver.</B>\r\n<UL>\r\n<LI>Tapez ce qui suit, en effectuant les modifications nécessaires pour votre nom d\'utilisateur, et votre projet.\r\n<BR><B><I>cvs -d:pserver:anonymous@cvs.votreprojet.sourceforge.net:/cvsroot/votreprojet login</I></B>\r\n<LI>Aprčs vous ętre connecté de maničre anonyme :\r\n<BR><B><I>cvs -d:pserver:anonymous@cvs.votreprojet.sourceforge.net:/cvsroot/votreprojet co nomrepertoire</I></B>\r\n<LI>Aprčs la récupération intiale des fichiers sources, vous pouvez aller dans ce répertoire et éxecuter\r\nles commandes cvs, sans le marqueur -d. Par exemple :\r\n<BR><B><I>cvs update</I></B>\r\n</UL>\r\n\r\n<P><B>Comment utiliser CVS lorsque l\'on est connecté sur shell.sourceforge.net</B>\r\n<UL>\r\n<LI>Tapez ce qui suit, en effectuant les modifications nécessaires pour votre nom d\'utilisateur, et votre projet.\r\n<BR><B><I>cvs -dnomutilisateur@cvs1:/cvsroot/votreprojet login</I></B>\r\n</UL>\r\n<DD>Allez voire <a href=user/cvssshfaq.php#ssh-shell>CVS/SSH FAQ</a> pour plus dínformations.\r\n\r\n<P><B>Comment importer un "arbre CVS" existant</B>\r\n\r\nCeci doit ętre fait manuellement par un membre de l\'équipe SourceForge. Procédez comme ceci:\r\n<UL>\r\n<LI> Préparez un fichier tar/gzip de votre arbre CVS entier.\r\n<LI> Assurez vous que celui-ci contienne le répertoire CVSROOT si il contient des informations que vous désirez conserver. Si vous n\'en ętes pas sur, incluez le.\r\n<LI> Envoyez un mail ŕ <a href=mailto:admin@sourceforge.net>admin@sourceforge.net</a> en demandant d\'inclure votre fichier tar/gzip au dépot CVS de votre projet. \r\nAssurez vous d\'avoir fourni les informations nécessaires dans votre mail:\r\n <UL>\r\n <LI> Le nom exact de votre projet, oů l\'adresse de sa page principale.\r\nQuelque chose comme <a href=http://sourceforge.net/project/?group_id=1695>\r\n http://sourceforge.net/project/?group_id=1695</a>.\r\n <LI> La localisation ftp ou http du fichier tar/gzip, si vous ne l\'avez pas envoyé en fichier attaché ŕ votre mail. Vérifiez avec votre navigateur que le fichier est bien accessible.\r\n <LI> Votre nom d\'utilisateur SourceForge.\r\n <LI> Votre adresse email.\r\n </UL>\r\n<LI> Vous recevrez un mail de l\'équipe SourceForge lorsque votre arbre CVS sera pręt ŕ utiliser.\r\n</UL>\r\n\r\n<P><B>Comment récupérer votre arbre CVS.</B><P>\r\nDes archives tar/gzip quotidiennes du dépot CVS complet de votre projet \r\nsont disponibles pour archive ou duplicata. Ils sont disponibles ŕ \r\nl\'adresse suivante :\r\nhttp://cvs.sourceforge.net/cvstarballs/nomprojet-cvsroot.tar.gz.\r\nOu <b>nomprojet</b> est le nom UNIX de votre projet.\r\n\r\n<P><B>Documentations complémentaires</B>\r\n<UL>\r\n<LI><A href="http://cvsbook.red-bean.com/">The CVS Book</A>\r\n<LI><A href="http://www.loria.fr/~molli/cvs/doc/cvs_toc.html">Docs CVS sur www.loria.fr</A>\r\n</UL>\r\n',968797324,968795068,1458,807,' '); INSERT INTO doc_data VALUES (786,1,'CVS HowTo (GERMAN)',' <p> <META NAME="description" CONTENT="Kurze Anleitung wie man CVS bei SourceForge benutzt">\r\n <META NAME="author" CONTENT="Uwe Hermann">\r\n <META NAME="generator" CONTENT="me and my vi :-)">\r\n\r\n\r\n <H1>Sourceforge CVS Dokumentation</H1>\r\n\r\n <SMALL>\r\n Originaltext: SourceForge Crew<BR>\r\n Übersetzung:\r\n <A HREF="mailto:uh1763@users.sourceforge.net">Uwe Hermann</A><BR>\r\n Stand: 3.2.2000\r\n </SMALL>\r\n\r\n <P>\r\n\r\n Das hier ist nur eine Anleitung für die grundlegendsten Dinge, sollte aber\r\n für den Anfang reichen.<P>\r\n\r\n Alle Entwickler mit Read/Write-Rechten werden SSH(Secure Shell) benutzen.\r\n Der SSH(1.x) Client muss auf deinem lokalen Rechner verfügbar sein.<BR>\r\n Die Umgebungsvariable CVS_RSH muss den Pfad zu ssh enthalten. Dies kann\r\n man auf den meisten Linux-systemen(mit bash) folgendermaßen erreichen:\r\n\r\n <PRE>\r\n export CVS_RSH=ssh\r\n </PRE>\r\n\r\n Für anonymen CVS-Zugang wird CVS pserver verwendet und kein SSH benötigt.<P>\r\n\r\n Wenn du eine \'permission denied\'-Meldung bekommst, ohne dass du nach einem\r\n Passwort gefragt worden bist, hast du die CVS_SSH Umgebungsvariable nicht\r\n richtig gesetzt oder ssh ist auf deinem System nicht verfügbar.\r\n Das solltest du zuerst prüfen, bevor du ein Passwort-Problem vermutest.<P>\r\n \r\n \r\n <H1>Wie du deinen Quellcode ins repository <CODE>import</CODE>ierst</H1>\r\n\r\n Auf deiner lokalen Maschine wechselst du in das Verzeichnis dessen Dateien\r\n und Unterverzeichnisse du importieren möchstest. Alles was jetzt im aktuellen\r\n Verzeichnis und in allen Unterverzeichnissen ist wird ins repository\r\n importiert werden.<P>\r\n\r\n Tippe folgendes ein, um den Code zu importieren:<BR>\r\n\r\n <PRE>\r\n cvs -dloginname@cvs.deinprojekt.sourceforge.net:/cvsroot/deinprojekt import verzeichnisname vendor start\r\n </PRE>\r\n\r\n Du musst natürlich \'loginname\' durch deinen SourceForge Login-Namen,\r\n \'deinprojekt\' durch den Unix-Namen deines Projektes, und \'verzeichnisname\'\r\n durch den Namen des neuen CVS-Verzeichnisses ersetzen.\r\n\r\n\r\n <H1>Wie man einen Quellcode <CODE>checkout</CODE> mit SSH durchführt</H1>\r\n\r\n Tippe folgendes ein, wobei du natürlich wieder \'loginname\', \'deinprojekt\'\r\n und \'verzeichnisname\' ersetzt:\r\n\r\n <PRE>\r\n cvs -dloginname@cvs.deinprojekt.sourceforge.net:/cvsroot/deinprojekt co verzeichnisname \r\n </PRE>\r\n\r\n Nach dem ersten <CODE>checkout</CODE> kannst du in dieses Verzeichnis\r\n wechseln und CVS-Kommandos ohne den <CODE>-d</CODE> Parameter ausführen,\r\n zum Beispiel:\r\n\r\n <PRE>\r\n cvs update\r\n cvs commit -m "Kommentare für dieses commit"\r\n cvs add datei.c \r\n </PRE>\r\n\r\n\r\n <H1>Wie man einen anonymen Quellcode <CODE>checkout</CODE> durchführt</H1>\r\n\r\n Tippe folgendes ein, wobei du natürlich wieder \'loginname\', \'deinprojekt\'\r\n und \'verzeichnisname\' ersetzt:\r\n\r\n <PRE>\r\n cvs -d:pserver:anonymous@cvs.deinprojekt.sourceforge.net:/cvsroot/deinprojekt login\r\n </PRE>\r\n\r\n Nachdem du dich nun als \'anonymous\' eingeloggt hast, tippe folgendes:\r\n\r\n <PRE>\r\n cvs -d:pserver:anonymous@cvs.deinprojekt.sourceforge.net:/cvsroot/deinprojekt co verzeichnisname \r\n </PRE>\r\n\r\n Nach dem ersten <CODE>checkout</CODE> kannst du in dieses Verzeichnis \r\n wechseln und CVS-Kommandos ohne den <CODE>-d</CODE> Parameter ausführen,\r\n zum Beispiel:\r\n\r\n <PRE>\r\n cvs update\r\n </PRE>\r\n\r\n\r\n <H1>Wie man CVS benutzt wenn man auf shell.sourceforge.net eingeloggt ist</H1>\r\n\r\n Tippe folgendes ein, wobei du natürlich wieder \'loginname\' und \'deinprojekt\'\r\n ersetzt:\r\n\r\n <PRE>\r\n cvs -dloginname@cvs1:/cvsroot/deinprojekt login\r\n </PRE>\r\n\r\n Lies die <A HREF=user/cvssshfaq.php#ssh-shell>CVS/SSH FAQ</A> für nähere\r\n Informationen.\r\n\r\n\r\n <H1>Wie man einen schon existierenden CVS-tree <CODE>import</CODE>iert</H1>\r\n\r\n Diese Aufgabe muss von der SourceForge-crew manuell erledigt werden.\r\n Gehe wie folgt vor:\r\n\r\n <UL>\r\n <LI>erzeuge ein tar/gzip deines kompletten CVS-trees</LI>\r\n <LI>\r\n stelle sicher, dass du dein CVSROOT Verzeichnis mit in das Archiv packst,\r\n wenn es Informationen enthält, die du behalten möchtest. Wenn du dir\r\n nicht sicher bist, pack es sicherheitshalber mit ins tar/gzip.\r\n </LI>\r\n <LI>\r\n Sende eine mail an\r\n <A HREF=mailto:admin@sourceforge.net>admin@sourceforge.net</A> und bitte\r\n die Admins dort, das tar/gzip in das CVS repository deines Projektes\r\n einzuspielen. Stelle jedoch sicher, dass du folgende Informationen in\r\n deiner Mail angibst:\r\n <UL>\r\n <LI>\r\n Den exakten Namen deines Projektes oder die URL der Homepage, z.B.\r\n <A HREF=http://sourceforge.net/project/?group_id=1695>\r\n http://sourceforge.net/project/?group_id=1695\r\n </A>\r\n </LI>\r\n <LI>\r\n Die FTP- oder HTTP- Adresse deiner tar/gzip Datei, wenn du sie nicht\r\n als attachment mitgeschickt hast. Prüfe allerdings vorher ob man die\r\n Datei auch wirklich per FTP/HTTP downloaden kann!\r\n </LI>\r\n <LI>Deinen SourceForge Login-Namen</LI>\r\n <LI>Deine eMail-Adresse</LI>\r\n </UL>\r\n </LI>\r\n <LI>\r\n Du wirst eine eMail von den SourceForge Admins erhalten, sobald der\r\n CVS-tree zur Benutzung bereit steht.\r\n </LI>\r\n </UL>\r\n\r\n\r\n <H1>Wie du deinen CVS-tree downloaden kannst</H1>\r\n\r\n Täglich erstellte tarballs deines kompletten CVS-repository\'s sind auf\r\n http://cvs.sourceforge.net/cvstarballs/projektname-cvsroot.tar.gz für\r\n Backup- oder Mirroring-Zwecke erhältlich. \'projektname\' muss natürlich\r\n durch den Unix-Namen deines Projektes ersetzt werden.\r\n\r\n\r\n <H1>Weitere CVS-Dokumentation</H1>\r\n\r\n <UL>\r\n <LI><A HREF="user/cvssshfaq.php">SourceForge CVS/SSH FAQ</A>\r\n <LI><A HREF="http://cvsbook.red-bean.com/">Das CVS Buch</A></LI>\r\n <LI>\r\n <A HREF="http://www.loria.fr/~molli/cvs/doc/cvs_toc.html">\r\n CVS Dokumentation auf www.loria.fr\r\n </A>\r\n </LI>\r\n </UL>\r\n',968797318,968795114,1458,807,' '); INSERT INTO doc_data VALUES (787,1,'SourceForge Gettin Started Guide (HUNGARIAN)',' <p> \r\nÍrta (fordította): <A\r\n\r\nhref="http://sourceforge.net/developer/?form_dev=21822">Gyöngyösi Péter</A><br>\r\nEredeti szerző: <A href="http://sourceforge.net/developer/?form_dev=801">Joel Utting</A>\r\n<P>\r\n<FONT SIZE=+2>Bevezetés</FONT>\r\n<P><FONT SIZE=+1>Üdv új SourceForge-használó ! Ez a HOWTO azért\r\nszületett, hogy egyszerűbb legyen egy új projectet összehozni itt a\r\nSourceForge-on. Természetesen ez az írás nem teljes, és remélhetöleg\r\ntovább fog bővülni, ahogy egyre újabb lehetőségek kerülnek a SourceForge-ba\r\n. A terv az, hogy lépésről-lépésre vezessen végig egy project\r\nlétrehozásának a kezdetein.\r\nElőször is, nézzük a legtipikusabb szituációt amivel egy új fejlesztő\r\nszembesül: \r\nVan egy könyvtárnyi kódod, talán egy létező CVS-ed, és a SourceForge\r\nösszes lehetőségét ki akarod használni, hogy itt folytasd a\r\nfejlesztést a nagyközönség előtt, szabadon, nyílt forrással, és\r\nremélhetőleg hogy idevonzz néhány új fejlesztőt, meg persze\r\nfelhasználót. Nos, vágjunk bele!\r\n<FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+2>Egy új project létrehozásának lépései</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>Nagyjából ezekre fogunk kitérni:\r\n</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>1. Egy új felhasználó létrehozása a SourceForge-on. </FONT>\r\n<BR><FONT SIZE=+1>2. Egy új project létrehozása az első lépésben\r\nlétrehozott userrel. \r\n</FONT>\r\n<BR><FONT SIZE=+1>3. A csapat- és projectinformációk beállítása.</FONT>\r\n<BR><FONT SIZE=+1>4. Egy CVS repository (nem tudok erre használható\r\nmagyar fordítást, az angol eredetit fogom használni ezután is)\r\nlétrehozása a forrásod legújabb változatával. \r\n</FONT>\r\n<BR><FONT SIZE=+1>5. A project weboldalának a létrehozása. </FONT>\r\n<BR><FONT SIZE=+1>6. Levelezőlista létrehozása.</FONT>\r\n<BR><FONT SIZE=+1>7. És vegül, szokjad meg a CVS használatát a\r\nfejleszésben, és láss munkához! \r\n</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>...és néhány dolog, amire még szükséged lehet:</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>8. Hozz létre egy file modult, hogy láthassák a\r\nmunkád!</FONT>\r\n<BR><FONT SIZE=+1>9. Olvasd végig a SourceForge dokumentációt és a\r\nhelp-fórumokat!\r\n</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+2>Kezdjünk hát neki...</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>1. Egy új felhasználó létrehozása a SourceForge-on.</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>A <A HREF="http://www.sourceforge.net">SourceForge\r\nfőoldalon</A> klikkelj a "New User via SSL" linkre. Itt aztán\r\nmeg kell adnod pár adatot, információt, és létrehoz egy accountot\r\nneked. Gyakorlatilag minden interaktív tevékenységhez a SourceForge-on\r\nszükséged lesz rá. \r\nMiután ez megvan, bármikor bejelentkezhetsz ezzel a felhasználóval a\r\nfőoldalon a "Login via SSL" link segítségével.\r\n</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>Miután bejelentkeztél, kapsz egy személyes lapot: az\r\nösszes projectet kilistázza, amiben benne vagy, néhány egyéb infóval\r\negyütt.\r\nAz oldal szélén fel van sorolva pár lehetőség, és ott van egy, ami\r\nmost minket különösen érdekel: a "Register New Project"...\r\n</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>2. Egy új project létrehozása az első lépésben\r\nlétrehozott userrel. </FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>A "Register New Project" linkre klikkelve egy\r\nlapsorozathoz jutsz, amin csak szimplán végig kell menned, megadva az\r\nösszes kért információt. Eléggé magától értetődő és jól megcsinált ez a rész, \r\nehhez nem nagyon kell további magyarázat.\r\n</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>Ha ezzel megvagy, az adatokat megkapja valaki a\r\nSourceForge-tól, átnézik, hogy a projected belefér-e a SourceForge\r\ncéljaiba. Még nem hallottam olyanról, amit visszautasítottak volna, szóval\r\nne aggódj, ha nyílt forrású és szabad licenszelésű, szerintem hamar el\r\nfogják fogadni.\r\n</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>Most várj, és remélhetőleg 24 órán belül választ\r\nkapsz. (Ha több időbe kerülne, írj nekik - volt pár probléma az új\r\nprojectekkel, de szerintem már kijavították őket.)\r\nHa minden jól megy, értesítenek, hogy a projected felrakták,\r\njelentkezz hát be SSL-el, és a személyes lapod alján ott lesz a link\r\naz új projected lapjára.\r\n</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>3. A csapat- és projectinformációk beállítása.</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>Klikkelj arra a linkre! A csapat SourceForge lapjára\r\njutsz (ez nem egyezik meg a weboldalával), itt lesz egy sor opció,\r\namelyekkel meg tudsz változtatni dolgokat, gyakorlatilag így tudod\r\nadminisztrálni a projected.\r\n</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>Mid van eddig?\r\n;</FONT>\r\n<BR><FONT SIZE=+1>egy weboldal a http://ateprojected.sourceforge.net\r\ncímen,</FONT>\r\n<BR><FONT SIZE=+1>egy CVS repository a\r\ncvs.ateprojected.sourceforge.net:/cvsroot/ateprojected címen\r\n,</FONT>\r\n<BR><FONT SIZE=+1>anonymous FTP az ateprojected.sourceforge.net címen,</FONT>\r\n<BR><FONT SIZE=+1>és hozzáférés levelezőlistákhoz, amivel majd később\r\nfoglalkozunk.</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>Az első beírandó dolog, az a projected leírása a\r\ncsapat oldalához. Klikkelj a "Project Admin", utána meg az "Edit Group\r\npublic Information and Categorisation" linkre! Írd be a megfelelő\r\ndolgokat a mezőkbe!\r\n</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>A következő kérdés, hogy vannak-e már magadon kívül\r\nfejlesztőid? Ha igen, mindannyiukniak be kell jelentkezniük\r\nfelhasználóként a SourceForge-ra, és szükséged lesz a\r\nfelhasználó-nevükre. A nevek alapján tudod hozzáadni őket a fejleszőid\r\nlistájához, írási jogosultságot adva ezzel a csapat CVS és\r\nweboldalára. Ehhez menj vissza a "Project Admin"\r\nrészhez, klikkelj az "Add Group Member" linkre, írd be a neveiket, és\r\nezzel kész is vagy.\r\n</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>A csapat oldalán körbenézhetsz, hogy mi minden van\r\nmég, szerintem a legfontosabbakkal már megvagyunk. Itt az idő, hogy\r\nkirakjuk a forrást valahova, ahol mindenki elérheti...\r\n</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>4. Egy CVS repository \r\nlétrehozása a forrásod legújabb változatával.\r\n</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>Azoknak (mint én is), akiknek az internetes fejleszés\r\nmég új dolog, egy kis időbe fog telni a CVS-hez hozzászokni. A\r\nkezdőknek itt van egy rövid leírás, hogy mit csinál és hogyan:\r\n</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>Egy recordot őriz az összes változtatásáról a\r\nforráskódnak, a változtatáshoz kapcsolódó megjegyzésekkel együtt.\r\nBármikor megtalálhatod bármelyik korábbi verziót a repository-ban.\r\nLehetővé teszi, hogy több ember dolgozzon ugyanazokon a fileokon\r\negyidőben, egyesítve a változtatásokat, amiket hozzáadnak.\r\nFigyelmeztet (elég világosan, hozzá kell tennem), ha a változások valamiért \r\nütköznek, és így biztos, hogy a különbséget valaki fejlesztő\r\nészreveszi, mielőtt a file újabb verziója a repository-ba kerülhetne. \r\n</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>Ez király egy dolog, de beletelik egy kis időbe, mire\r\nhozzászokik az ember. Alapvetően így megy a fejlesztés:\r\n</FONT>\r\n<BR><FONT SIZE=+1>(1) Beimportálod az összes forrásod a CVS-be, aztán\r\nmindenki leszed ("check out"-ol) egy másolatot belőle, amin \r\ndolgozni fog.\r\n</FONT>\r\n<BR><FONT SIZE=+1>(2) Minden fejlesztő a saját gépén, kényelmesen\r\ndolgozik, és ha van egy működő, új hozzáadandó dolguk, frissítik\r\n("update"-elik) a helyi változatukat, hogy a központi, legfrissebb\r\nváltozattal annyira összhangban legyen, amennyire csak lehet, és utána\r\nvisszaküldik ("commit"-olják) a file-t, amit megváltoztattak a\r\nrepository-ba.\r\n</FONT>\r\n<BR><FONT SIZE=+1>(3) Bármilyen gondja van a CVS-nek az új változat\r\nfelküldésekor, szól, és akkor végig kell menned a problémás fileokon,\r\nés el kell döntened a változtatásokat kézzel. A fileokban a\r\nmegváltoztatott rész >>>>> -el van kiemelve, és mindkét verziót\r\nmutatja. Egyszerűen csak töröld ki a régit (vagy módosítsd, hogy úgy\r\nműködjön, ahogy kell), és újra küldd föl a filet. Ha a CVS-nek már\r\nnincsenek további gondjai, térj vissza a kettes ponthoz, és\r\nfolytasd a programozást!\r\n</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>Nos, tehát a forrásod a SourceForge-os CVS-be való\r\nfeltöltésének a részletei... Először is, olvasd el a CVS-ről szóló SF\r\nleírást. Ha valami nem tiszta, beleolvashatsz az ingyenes 180 oldalas\r\n<A HREF="http://cvsbook.red-bean.com">CVS\r\nkönyvbe</A>. Aztán lássunk hozzá:</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>Keríts <A HREF="http://www.ssh.fi">SSH-t</A> és CVS-t\r\naz általad használt platformra. Ha Linuxot es Bash-t használsz, ezeket\r\nírd be:\r\n</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>export CVS_RSH=ssh</FONT>\r\n<BR><FONT SIZE=+1>export\r\nCVSROOT=loginname@cvs.ateprojected.sourceforge.net:/cvsroot/ateprojected</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>Az első sor mondja meg a CVS-nek, hogy SSH-t\r\nhasználjon a CVS-hez való kapcsolódáshoz. Erre biztonsági okokból van\r\nszükség. A második sor meg azt adja meg neki, hogy hol keresse a\r\nrepository-ját.\r\n</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>Nos, a legvalószínűbb szituáció az, hogy van pár\r\nforrásod egy könyvtárfában, amit fel akarsz tölteni (importálni) a\r\nCVS-be. Ment a legfelső könyvtárba, amit fel akarsz tölteni, és írd be\r\na következőt (értelemszerűen módosítva) :\r\n</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>cvs import konyvtarnev vendor start</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>A könyvtárnév az a név, amivel ezt a forrásfát később\r\na CVS-ben elérheted. Ha minden jól megy, meg fogja kérdezni a\r\nSourceForge user-jelszavad, és utána szépen sorban feltölti az egész\r\nforrásfád.\r\n</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>Következőnek, mentsd el a régi kódot valahova, mert\r\nnem akarsz már többet azzal dolgozni, és szedjél le ("chekout" -olj)\r\negy friss változatot a CVS-ből a \r\n</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>cvs checkout konyvtarnev</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>parancs segítségével. Ezzel kapsz egy "munkapéldányt"\r\na forrásból, CVS formában, amin aztán dolgozhatsz. Amire figyelned\r\nkell azért, hogy minden változtatást, új file vagy könyvtár\r\nhozzáadását vagy törlését külön meg kell mondanod a CVS-nek - olvasd\r\nel a fent említett könyvet a részletekhez.\r\n</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>5. A project weboldalának a létrehozása.</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>Tegyük fel, hogy már van valamilyen weboldalad készen,\r\namit felrakhatsz a SourceForge-ra, hogy legyen valamiféle külső arca a\r\nprojectnek. Jelentkezz be a SourceForge-ra SSH-val, pl.:\r\n</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>ssh -l loginnev ateprojected.sourceforge.net</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>A saját home könyvtáradba kerülsz így. Innen az\r\nösszes csapat-file-t a /home/groups/ateprojected könyvtárban érheted\r\nel. Lépj át ide! Az összes weboldalad a htdocs könyvtárban van. Oda\r\nbenézve, csak az index.php-t tartalmazza, ami egy üres oldal, ami\r\nközli, hogy még nem töltöttél fel weboldalt. Jelentkezz ki, és másold\r\nfel a fileokat a weboldaladhoz scp-vel (egy program, az ssh-val együtt\r\nfelraktad valószínűleg). \r\nPl.:</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>scp helyifile&nbsp;&nbsp;\r\nloginnev@shell.sourceforge.net:/home/groups/ateprojected/htdocs</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>A legcélszerűbb, ha össze-gzippeled az oldalad, egy\r\nmenetben feltöltöd scp-vel, aztán bejelentkezel ssh-val és ott\r\nhelyben kibontod. \r\n</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>Nos, mi is legyen a weboldalon? A projectről szóló információkon kívül talán még ezek: \r\n</FONT>\r\n<BR><FONT SIZE=+1>(1) Egy link a csapat SourceForge oldalára </FONT>\r\n<BR><FONT SIZE=+1>(2) Link a levelezőlistá(k)ra (mindjárt létrehozzuk őket)</FONT>\r\n<BR><FONT SIZE=+1>(3) Egy SourceForge ikon és web-számláló - ezzel kapcsolatban lásd a SF dokumentációt. \r\n</FONT>\r\n<BR><FONT SIZE=+1>(4) Egy link a webes CVS felületre (http://cvs.sourceforge.net/cgi-bin/cvsweb.cgi/?cvsroot=ateprojected) </FONT>\r\n<BR><FONT SIZE=+1>(5) Pár infó a CVS használatáról a projectedre vonatkozóan. </FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>6. Levelezőlista létrehozása.</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>Ha a projected még nem túl aktív (vagy csak egy magányos fejleszője van), a levelezőlistáid nagyon csendesek lesznek, de azért az javaslom, gondolj a jővőre, és hozz létre három sztandard listát a projectednek: egy fejleszői listát a fejlesztőknek, egy felhasználói listát a usereknek, és egy hirdetési listát az új verziók meghirdetésére.\r\n</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>Ezt a csapat oldalán keresztül teheted meg a "Mailing list Admin" link segítségével. Ez elég egyszerű, nem hiszem hogy lenne bármi gond vele...\r\n</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>7. És végül, szokd meg a CVS használatát a fejlesztésben, és láss munkához! \r\n</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>Adok pár tippet a fejleszés menetéről, hogy hogyan láss neki, de persze lesznek dolgok, amiknek neked kell utánajárnod.\r\n</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>A munkapéldányod frissítéséhez, a CVS repository-val való összhangba hozásához:\r\n</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>cvs -z3 update -Pd</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>(persze miután a leírtak szerint beállítottad a CVSROOT és CVS_RSH változókat)</FONT>\r\n<BR><FONT SIZE=+1>A változtatások hozzáadásához:</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>cvs commit -m "megjegyzés a változtatásokról" filenév</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>Egy új file hozzáadásához:</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>cvs add filenév</FONT>\r\n<BR><FONT SIZE=+1>cvs commit -m "filenév hozzáadva" filenév</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>...és már készen is állsz!</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+2>És még pár dolog, amire szükséged lehet:</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>8. Hozz létre egy file modult, hogy láthassák a munkádat!</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>9. Olvasd végig a SourceForge dokumentációt és a help-fórumokat!\r\n</FONT><FONT SIZE=+1></FONT>\r\n<P><FONT SIZE=+1>A homepage-ről. Erősen javasolt.</FONT><br>\r\n<A HREF="http://gyp.dunanet.hu/newproject-howto-hun.php">Alternate URL</A>\r\n\r\n',968797330,968795156,1458,807,' '); INSERT INTO doc_data VALUES (776,1,'Hosting Primary / Secondary DNS','<b>Hosting Primary / Secondary DNS</b><P>\r\nHosting Primary/Secondary DNS SourceForge is not hosting the Primary/Secondary DNS servers for projects just yet. We can arrange the\r\nwebserver to answer for your domain via HTTP. Point a CNAME for the hosts that you wish the webserver to respond for to shell1.sourceforge.net.\r\nAfter this is done, submit a support request to have the webserver respond for this domain. \r\n<P>\r\nIf you have any problems, please let the SourceForge staff <a href="http://sourceforge.net/support/?func=addsupport&group_id=1">know. </a>',968796850,968794153,1458,808,'We can answer for your domain via HTTP'); INSERT INTO doc_data VALUES (777,1,'Responding for www.mydomain.org','<b>Responding for www.mydomain.org \r\n<P></b>\r\nThe httpd.conf on our end can be configured to answer for your domain. Ensure that yourdomain.org or www.yourdomain.org is a CNAME to\r\nshell1.sourceforge.net (198.186.203.36) NOT your projectname.sourceforge.net (198.186.203.44). Then submit a support request to have this added to\r\nour configuration. \r\n<P>\r\nFTP.yourdomain.org may point to download.sourceforge.net at any time. \r\n<P>\r\ncvs.yourdomain.org may point to cvs1.sourceforge.net at any time. \r\n<P>\r\nYou may <a href="http://sourceforge.net/support/?func=addsupport&group_id=1">request</a> to have the server answer for the domain, prior to you delegating the hosts to us to ensure minimal downtime. ',968796857,968794208,1458,808,'We can do this'); INSERT INTO doc_data VALUES (789,1,'Using Webalizer','You can use webalizer on your subdomain web server logs.\r\n<P>\r\nFor more information, visit: http://mars.bingo-ev.de/webalizer-howto/webalizer-howto.html',968796883,968795449,1458,808,'Crunch your project\'s apache logs '); INSERT INTO doc_data VALUES (790,1,'Displaying the SourceForge logo on your web page',' <p> <B>Displaying the SourceForge Logo</B>\r\n\r\n<P>We ask that all projects hosted on SourceForge display a small\r\nSourceForge logo on their homepage.\r\n\r\n<P>The display of this logo serves two purposes. First, it drives\r\ntraffic to SourceForge, and ultimately back to the Open Source\r\nprojects that we host. SourceForge has a lot of potential for\r\n"cross linking" many OpenSource projects, and the logo display\r\nfacilitates this.\r\n\r\n<P>Second, when the logo is displayed, a log entry is generated\r\nfor your project that allows us to track hits to each of our hosted\r\nprojects. This information will be compiled and presented to\r\nour users in "top" activity lists for hosted projects. This will\r\nalso help us to identify projects that may require additional hosting\r\nresources due to large amounts of activity. \r\n\r\n<P>Please use the following URL to place the graphic on your page:\r\n<BR><B>http://sourceforge.net/sflogo.php?group_id=0&type=1</B>\r\n\r\n\r\n<P>In anchor and image tags, this would appear as follows:\r\n<BR><B>&lt;A href="http://sourceforge.net"&gt;\r\n<BR>&lt;IMG src="http://sourceforge.net/sflogo.php?group_id=0&type=1"\r\n\r\nwidth="88" height="31" border="0" alt="SourceForge Logo"&gt; &lt;/A&gt;\r\n</B>\r\n\r\n<P><B><I>Important!</I></B> Substitute the number after "group_id"\r\n(currently 0)\r\nwith your own project/group number, which is displayed at the top\r\nof your project page on SourceForge.\r\n\r\n<P>This is the image that we now display:\r\n<P><IMG src="/sflogo.php?group_id=873&type=1"\r\nwidth="88" height="31" alt="SourceForge Logo">\r\n<P>Please email <A href="mailto:staff@sourceforge.net">staff@sourceforge.net</A>\r\nwith any questions you may have.',968879782,968795499,1458,808,'If we host your subdomain, please display our logo'); INSERT INTO doc_data VALUES (792,1,'Using anonymous FTP space','<b>Using anonymous FTP space \r\n<P></b>\r\nAnonymous FTP access is available for all projects on SourceForge. This is generally to be used for stuff like developer-only releases, etc. which\r\ncannot be released as a module. Heck, you can put anything here. \r\n<P>\r\nIt\'s easy to use this space. Your project\'s public FTP directory is on shell1.sourceforge.net at: /home/groups/ftp/pub/yourprojectname and everything\r\nin that directory is available to anonymous FTP users. \r\n<P>\r\nPeople can FTP anonymously (login as "ftp" or "anonymous" and give your e-mail address as the password) to yourprojectname.sourceforge.net and\r\ndownload files from the /pub/yourprojectname directory, i.e., \r\n<P>\r\nftp://yourproject.sourceforge.net/pub/yourprojectname \r\n<P>\r\nHow to put stuff in the directory? Simple! SCP your files to shell1. \r\n<P>\r\nscp filename.tar.gz yourusername@shell1.sourceforge.net:/home/groups/ftp/pub/yourprojectname \r\n\r\n',968796877,968795601,1458,808,'Share your files');