<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="content-type" content=
  "text/html; charset=us-ascii" />

  <title>Marketing Project Strategy</title>
  <meta name="keywords" content=
  "Marketing, OpenOffice, OpenOffice.org" />
  <link rel="stylesheet" type="text/css" href="../marketing.css" />
</head>

<body>
  <div id="MyContent">
    <h1>Strategic Marketing Plan</h1>

    <h2>Why does OpenOffice.org need a Strategic Marketing
    Plan?</h2>

    <p>Since its inception, the Marketing Project has seen an
    amazing amount of creativity, discussion, and actual
    achievement. However, there have been frequent complaints that
    there has been no overall framework or context for this
    activity. This means it's not easy for newcomers to see where
    they can find a niche and make a contribution. There's also a
    danger that the same debates are repeated, rather than reaching
    an agreed position and being able to develop ideas in
    depth.</p>

    <p>In 2004, the Project Leads decided to facilitate the
    development of a Marketing Strategy and a high-level Plan to
    give focus and direction to the work of the project. This work
    created the Strategic Marketing Plan.</p>

    <h2>What did people say about the Plan?</h2>

    <p>The press gave the publication of the draft plan a good - if
    somewhat suprised - reaction. See:</p>

    <ul>
      <li><cite>OpenOffice.org reveals marketing ambitions</cite>
      Ingrid Marson <a href=
      "http://news.zdnet.co.uk/software/linuxunix/0,39020390,39167856,00.htm">
      ZDNet UK</a> September 24, 2004, 18:10 BST</li>

      <li><cite>Marketing OpenOffice.org</cite> Editorial in the
      <a href="http://lwn.net/Articles/104125/">Linux Weekly
      News</a></li>

      <li><cite>OpenOffice marketing for mainstream</cite> Matthew
      <a href=
      "http://www.geek.com/news/geeknews/2004Sep/gee20040927027118.htm">
      Geek.com 10:01am EST Mon Sep 27 2004</a></li>
    </ul>

    <h2>How was the Plan built?</h2>

    <p>The Plan was built in four stages:</p>

    <ol>
      <li>A limited number of key players in the Marketing Project
      prepared a draft. This work was carried out by the <a href=
      "http://marketing.openoffice.org/contacts.html">MarCons</a> -
      people recognised in the Project as having special expertise
      in a particular marketplace, and who would have a special
      role in delivering the Plan</li>

      <li>The draft was taken to <a href=
      "http://marketing.openoffice.org/conference/">OOoCon2004</a>
      - an ideal opportunity to <a href=
      "http://marketing.openoffice.org/strategy/ooocon2004/">present
      the plan</a>, get real discussions around a table and get
      instant feedback on whether the Plan was on the right
      lines.</li>

      <li>Further discussions took place with the wider
      community</li>

      <li>The Plan was moved to <a href=
      "http://wiki.services.openoffice.org/wiki/Strategic_Marketing_Plan">
      the wiki</a> to allow it to become a living doucment.</li>
    </ol>

    <h2>Where can I find the Plan?</h2>

    <p>Version 0.5 of the Plan was released at OOoConf 2004:</p>

    <table border="0" bordercolor="#000080" cellpadding="4"
    cellspacing="0">
      <tbody>
        <tr>
          <td><a href="exec.html"><img src="exec_thumbnail.gif"
          alt="Executive Summary (on-line)" border="1" height="148"
          width="100" /></a></td>

          <td><a href="http://www.lulu.com/ooo"><img src=
          "lulu_thumbnail.jpg" alt="Buy as a book from lulu.com"
          border="1" height="142" width="94" /></a></td>

          <td><a href="v0.5.pdf"><img src="plan_thumbnail.gif" alt=
          "Download Plan as a pdf 70 page A4" border="1" height=
          "140" width="100" /></a></td>
        </tr>

        <tr>
          <td>Read the<br />
          <a href="exec.html">Exec.Summary</a><br />
          on-line</td>

          <td><strong>Buy the Plan</strong><br />
          <a href="http://www.lulu.com/ooo">as a book</a><br />
          US Dollars 7.95</td>

          <td><a href="v0.5.pdf">Download the Plan</a><br />
          40 pages A4<br />
          504kb .pdf</td>
        </tr>
      </tbody>
    </table>

    <p>There is also an on-line copy of the Plan <a href=
    "http://wiki.services.openoffice.org/wiki/Strategic_Marketing_Plan">
    here</a> in wiki format, for interactive use and updating.</p>
    <hr />

    <p><em>Note: If you'd like to know more about the theory of
    Marketing Strategy, there's a good summary in <a href=
    "http://money.howstuffworks.com/marketing-plan.htm">How Stuff
    Works</a>.</em></p>
  </div>
</body>
</html>
