]> projects.mako.cc - fspm_howto/blobdiff - FreeSoftwareDevelopmentHOWTO.sgml
Finished going through and writing the "Starting a Project" general
[fspm_howto] / FreeSoftwareDevelopmentHOWTO.sgml
index 32091e727c2c5c6d96478118c8d9e73ff7baa8f3..8c83f39357851277b0acc5ddf0f583c74fe234e4 100644 (file)
     If you are reading this document, there's a good chance you
     already have an idea for a project in mind. Chances are pretty
     good, it fills a gap by doing something that no other free
-    software process does or or does something unique
+    software process does or or does it in a way that is unique
+    enought to necessitate a seperate project.
    </para>
 
+   <sect3 id=identifyidea>
+    <title>Indentify and Articulate Your Idea</title>
+    <para>
+     Eric S. Raymond writes about how free software projects start in
+     his paper, "The Cathedral and the Bazaar" which comes as required
+     reading for any free softare development. You can find it online
+     at <ulink url="http://www.tuxedo.org/!esr/writings/cathedral-bazaar/">
+     http://www.tuxedo.org/!esr/writings/cathedral-bazaar/</ulink>.
+    </para>
+
+    <para>
+     In "The Cathedral and Bazaar," Raymond tells us that:
+     <emphasis>Every good work of software starts by scratching a
+     developers itch.</emphasis> Raymond now widely accepted
+     hypothesis is that new free software programs are written, first
+     and foremost, to solve a specific problem facing the developer.
+    </para>
+
+    <para>
+     If you have an idea for a program in mind, chances are good that
+     it it is targetting a specific problem or itch you want to see
+     scratched. <emphasis>This idea is the project. Articulate it
+     clearly. Write it out. Describe the problem you will attack in
+     detail. The success of your project in tackling a particular
+     problem will be tied to your ability to identify that problem
+     early on. Find out exactly what it is that you want your project
+     to do.</emphasis>
+    </para>
+   </sect3>
+
+   <sect3 id=evalulateidea>
+    <title>Evaluate Your Idea</title>
+
+    <para>
+     In evaluating your idea, you need to ask yourself questions.
+     Before you move any further into this HOWTO, you need to
+     determine if the free software development model really is the
+     right one for your project. Obviously, since the program
+     scratches your itch, you are definately interested in seeing it
+     implemented in code. But, because one hacker coding alone fails
+     to qualify as a free software development effort, you need to ask
+     yourself the question: <emphasis>Is anybody else
+     interested?</emphasis>
+    </para>
+
+    <para>
+     Sometimes the answer is <emphasis>no</emphasis>. If you want to
+     write a set of scripts to sort <emphasis>your</emphasis> MP3
+     collection on your machine, maybe the free software development
+     model is not the best one to choose. However, if you want to
+     write a set of scripts to sort <emphasis>anyone's</emphasis>
+     MP3s, a free software project might fill a useful gap.
+    </para>
+
+    <para>
+     Luckily, The Internet is a place so big and diverse that, chances
+     are, there is someone, somewhere, who shares your interests and
+     how feels the same itch. It is the fact that there are so many
+     people with so many similar needs and desires that introduces the
+     second major question: <emphasis>Has somebody already had your
+     idea or a reasonably similar one?</emphasis>
+    </para>
+
+     <sect4 id=evalwhere>
+      <title>Finding Similar Projects</title>
+
+     <para>
+      There are places you can go on the web to try and answer this
+      question. If you have experience with the free software
+      community, you are probably already familiar with all of these
+      sites. All of the resources listed bellow offer searching of
+      their databases:
+     </para>
+
+     <para>
+     <variablelist>
+       <varlistentry>
+        <term>freshmeat.net</term>
+        <listitem>
+        <para>
+          Located at at <ulink url="http://freshmeat.net">
+          http://freshmeat.net</ulink>, freshmeat describes itself as,
+          <quote>the Web's largest index of Linux and Open Source
+          software</quote> and its reputation along these lines remains
+          unquestioned. If you can't find it on freshmeat, its doubtful
+          that you'll find it indexed anywhere else.
+         </para>
+        </listitem>
+       </varlistentry>
+
+       <varlistentry>
+        <term>Slashdot</term>
+        <listitem>
+        <para>
+          Located at <ulink url="http://slashdot.org">
+          http://slashdot.org</ulink>, Slashdot provides <quote>News
+          for Nerds: Stuff that Matters,</quote> which usually includes
+          discussion of free software, open source, technology, and
+          geek culture new and events. It is not unusual for an
+          particularly sexy develpment effort to be announced here so
+          it definately worth checking.
+         </para>
+        </listitem>
+       </varlistentry>
+
+       <varlistentry>
+        <term>SourceForge</term>
+        <listitem>
+        <para>
+          Located at <ulink url="http://sourceforge.net">
+          http://sourceforge.net</ulink>, SourceForge houses and
+          facilitates a growning number of open source and free
+          software projects, SourceForge is quickly becoming a nexus
+          and an necessary stop for free software
+          developers. SourceForge's 
+          <ulink url="http://sourceforge.net/softwaremap/trove_list.php">
+          software map</ulink> and <ulink
+          url="http://sourceforge.net/new/"> new releases</ulink>
+          pages. should be necessary stops before embarking on a new
+          free software project. SourceForge also provides a
+          <emphasis>Code Snippet Library</emphasis> at <ulink
+          url="http://sourceforge.net/snippet/">http://sourceforge.net/snippet/</ulink>
+          which contains useful reusuable chunks of code in an array
+          of langauges which can come in useful in any project.
+         </para>
+        </listitem>
+       </varlistentry>
+
+       <varlistentry>
+        <term>Google and Google's Linux Search</term>
+        <listitem>
+        <para>
+          Located at <ulink url="http://www.google.com">
+          http://www.google.com</ulink> and
+          <ulink url="http://www.google.com/linux">
+          http://www.google.com/linux</ulink>, provide prowerful web
+          searches that may reveal people working on similar
+          projects. It is not a catalog of software or news like
+          freshmeat or Slashdot, but it is worth checking before you
+          begin pouring your effort into a redundant project.
+         </para>
+        </listitem>
+       </varlistentry>
+
+      </variablelist>
+     </para>
+    </sect4>
+
+    <sect4 id=evalhow>
+     <title>Deciding to Proceed</title>
+     <para>
+      Once you have successfull charted the terrain and have an idea
+      bout what kinds of similar free software projects exist, every
+      developer needs to decide whether to proceed with their own
+      project. It is rare that a new project seeks to accomplish a
+      goal that is not similar to related to the goal of another
+      project. Anyone starting a new project needs to ask themselves:
+      <emphasis>Will the new project be duplicating work done by
+      another project? Will the new project be competing for
+      developers with an existing project? Can the goals of the new
+      project be accomplished by adding functionality to an existing
+      project?</emphasis>
+     </para>
+
+     <para>
+      If the answer to any of these questions is yes, try to contact
+      the developer of the existing project in question and see if he
+      or she might be willing to collaborate with you.
+     </para>
+
+     <para>
+      This may be the single most difficult aspect of free software
+      development for many developers but it is essential. It is easy
+      to become fired up by and idea and be caught up in the momentum
+      and excitement of a new project. It is often extremely difficult
+      but it is important that any free software developer rememeber
+      that the best interests of the of the free software community
+      and the quickest way to accomplish ones own project's goals and
+      the goals of similar project can often be accomplished by
+      <emphasis>not</emphasis> starting a new project.
+     </para>
+
+    </sect4>
+   </sect3>
   </sect2>
 
 <!-- Section2: chooselicense-->
 
  <sect1 id="developers">
   <title>Maintaining a Project: Interacting with Developers</title>
-
+></ulink>which
    <indexterm>
     <primary>fswd!developers</primary>
    </indexterm>
@@ -524,4 +709,4 @@ sgml-exposed-tags:nil
 sgml-local-catalogs:nil
 sgml-local-ecat-files:nil
 End:
--->
+-->
\ No newline at end of file

Benjamin Mako Hill || Want to submit a patch?