blob: e79ef499f1c497b1df192bcb055082926eda27d5 [file] [log] [blame]
<!doctype html>
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
See the License for the specific language governing permissions and
limitations under the License.
<html lang="en" prefix="og:">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Introduction to Development</title> <!-- Below Meta Tags Generated via -->
<!-- If you don't care about social media then remove this section -->
<!-- Values are set in -->
<!-- HTML Meta Tags -->
<meta name="description" content="The official developer website of the Apache OpenOffice open source project, home of OpenOffice Writer, Calc, Impress, Draw and Base.">
<meta name="keywords" content="">
<!-- Facebook Meta Tags -->
<meta property="og:url" content="">
<meta property="og:type" content="website">
<meta property="og:title" content="Apache OpenOffice">
<meta property="og:description" content="The official developer website of the Apache OpenOffice open source project, home of OpenOffice Writer, Calc, Impress, Draw and Base.">
<meta property="og:image" content="">
<!-- Twitter Meta Tags -->
<meta name="twitter:card" content="summary_large_image">
<meta property="twitter:domain" content="">
<meta property="twitter:url" content="">
<meta name="twitter:title" content="Apache OpenOffice">
<meta name="twitter:description" content="The official developer website of the Apache OpenOffice open source project, home of OpenOffice Writer, Calc, Impress, Draw and Base.">
<meta name="twitter:image" content="">
<!-- Above Meta Tags Generated via -->
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
<link rel="icon" href="/favicon.ico" type="image/x-icon" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<body id="index" class="home">
<div id="banner">
<div id="bannerleft"><a alt="Apache OpenOffice" href="/">
<img id="logo" alt="Apache OpenOffice" src="/images/AOO4_website_logo.png" height="60" width="161"/></a></div>
<div id="bannercenter">The Free and Open Productivity Suite</div>
<div id="clear"></div>
<nav class="navbar navbar-expand-sm navbar-dark bg-primary">
<button class="navbar-toggler" type="button"
data-toggle="collapse" data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
<!-- General menu -->
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<li class="nav-item active dropdown">
<a class="nav-link dropdown-toggle" href="#" id="generalDropdown" role="button" data-toggle="dropdown" aria-expanded="false">General</a>
<ul class="dropdown-menu" aria-labelledby="generalDropdown">
<li><a class="dropdown-item" href="/index.html">About</a></li>
<li><a class="dropdown-item" href="/downloads.html">Downloads</a></li>
<li><a class="dropdown-item" href="/license.html">License</a></li>
<li><a class="dropdown-item" href="/mission.html">Mission</a></li>
<li><a class="dropdown-item" href="/trademarks.html">Trademarks</a></li>
<li><a class="dropdown-item" href="/press.html">Press</a></li>
<li><a class="dropdown-item" href=""></a></li>
<!-- Community menu -->
<li class="nav-item active dropdown">
<a class="nav-link dropdown-toggle" href="#" id="communityDropdown" role="button" data-toggle="dropdown" aria-expanded="false">Community</a>
<ul class="dropdown-menu" aria-labelledby="communityDropdown">
<li><a class="dropdown-item" href="/get-involved.html">Get Involved</a></li>
<li><a class="dropdown-item" href="/orientation/index.html">Orientation</a></li>
<li><a class="dropdown-item" href="/mailing-lists.html">Mailing Lists</a></li>
<li><a class="dropdown-item" href="/social.html">Social Networking</a></li>
<li><a class="dropdown-item" href="/events.html">Events</a></li>
<li><a class="dropdown-item" href="">Support</a></li>
<li><a class="dropdown-item" href="/native-lang.html">Native Language</a></li>
<li><a class="dropdown-item" href="">Planning Wiki</a></li>
<li><a class="dropdown-item" href="/people.html">People</a></li>
<li><a class="dropdown-item" href="/community-faqs.html">Community FAQs</a></li>
<!-- Development menu -->
<li class="nav-item active dropdown">
<a class="nav-link dropdown-toggle" href="#" id="developmentDropdown" role="button" data-toggle="dropdown" aria-expanded="false">Development</a>
<ul class="dropdown-menu" aria-labelledby="developmentDropdown">
<li><a class="dropdown-item" href="/source.html">Source Code</a></li>
<li><a class="dropdown-item" href="/bug-tracking.html">Bug Tracking</a></li>
<li><a class="dropdown-item" href="/qa.html">Quality Assurance</a></li>
<li><a class="dropdown-item" href="/translate.html">Translation</a></li>
<li><a class="dropdown-item" href="/website-local.html">Website</a></li>
<li><a class="dropdown-item" href="/security.html">Security Reports</a></li>
<li><a class="dropdown-item" href="/contributing-code.html">Contributing Code</a></li>
<li><a class="dropdown-item" href="/developer-faqs.html">Developer FAQs</a></li>
<!-- Project menu -->
<li class="nav-item active dropdown">
<a class="nav-link dropdown-toggle" href="#" id="projectDropdown" role="button" data-toggle="dropdown" aria-expanded="false">Project</a>
<ul class="dropdown-menu" aria-labelledby="projectDropdown">
<li><a class="dropdown-item" href="/blogpage.html">Project Blog</a></li>
<li><a class="dropdown-item" href="/pmc-faqs.html">PMC FAQs</a></li>
<!-- The ASF menu -->
<div class="navbar-nav" style="padding-top: 0.5rem;">
<div class="nav-item dropdown dropdown-menu-right active">
<a class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<img src=""
width="32" height="32" class="d-inline-block align-top"
alt="Apache Feather">
<div class="dropdown-menu dropdown-menu-right">
<a class="dropdown-item" href="">Website</a>
<a class="dropdown-item" href="">License</a>
<a class="dropdown-item" href="">Security</a>
<a class="dropdown-item" href="">Events</a>
<a class="dropdown-item" href="">Donations</a>
<a class="dropdown-item" href="">Sponsorship</a>
<a class="dropdown-item" href="">Thanks</a>
</div> </nav>
<div id="contenta">
<h2 id="introduction">Introduction<a class="headerlink" href="#introduction" title="Permalink">&para;</a></h2>
<p>In this orientation module you will learn how to get started programming OpenOffice.</p>
<p>To complete this module, read through the material on this page, including the linked references. There will also be some start-up tasks for you to perform, such as signing up for an account in our defect tracking database.</p>
<p>Your first task is to subscribe to our Recruitment mailing list. You can subscribe by sending an email to <a href=""></a>.</p>
<p>Then you can introduce yourself by <a href="">sending an email to the list</a>. We'd love to hear who you are, where you are from, what your background is, etc. Also as you work through the items on this page, if you have questions or problems, please feel free to ask for help by sending a note to this same list.</p>
<p>Note: In parallel with the Dev-specific items on this page, you may want to also review the <a href="/orientation/index.html">Level 1 and Level 2 Orientation Modules</a>. They have useful background information on The Apache Way, mailing list etiquette, decision making in the project, etc. A quick review is a good idea, especially if you are new to working in Apache-style open source projects.</p>
<p>Now with the introductions out of the way, let's get started!</p>
<h2 id="openoffice-development-good-the-bad-and-the-ugly">OpenOffice Development: Good, the Bad and the Ugly<a class="headerlink" href="#openoffice-development-good-the-bad-and-the-ugly" title="Permalink">&para;</a></h2>
<p>Let's be honest. The size, age and complexity of OpenOffice's C++ codebase makes coding a challenge. This is not a trivial codebase to learn. But if you like a good challenge then you'll love this project! There are tasks suitable for programmers with a range of programming experience, and we have many veteran OpenOffice hackers in the project who are happy to answer your questions.</p>
<p>And in its favor, there are few other programs that you can help develop, that have the reach of OpenOffice. Many millions of users depend on OpenOffice, with another half a million downloads every week, from almost every country in the world. So the work you do, the bugs you fix, the features you add, will benefit millions of users around the world.</p>
<h2 id="building-openoffice">Building OpenOffice<a class="headerlink" href="#building-openoffice" title="Permalink">&para;</a></h2>
<p>It all starts by establishing a local build environment. Building OpenOffice on Linux or Mac is relatively easy, but expect the first attempt to require some trial and error. Every configuration is slightly different.</p>
<p>Building on Windows is more complicated, due to the need to install more prerequisite tools.</p>
<p>Our <a href="">Building Guide</a> on the wiki is your starting point. Follow the instructions there, step by step. Ask questions on the dev list if you get stuck. If you get an error it can be useful to search our <a href="">mailing list archives</a> to see if it is a known problem with a known solution.</p>
<p>Note also the current list of configuration flags used in building the development snapshot builds at the bottom of the <a href="">development snapshot builds page</a>.
Although there are many other combinations of flags you can use, some of which are very useful for development, the flags on that page are what we use in our official releases.</p>
<p>Once you have a successful build, <a href="!">post a note to the dev list</a> for some well-earned congratulations!</p>
<h2 id="orienting-yourself">Orienting Yourself<a class="headerlink" href="#orienting-yourself" title="Permalink">&para;</a></h2>
<p>A few suggestions to help you find your way around this massive codebase:</p>
<li>An explanation of the purpose/function of the various <a href="">source directories</a></li>
<li>We have an <a href="">instance of Atlassian Fisheye</a> which can be useful for browsing the code base and understanding dependencies.</li>
<h2 id="finding-easy-tasks">Finding Easy Tasks<a class="headerlink" href="#finding-easy-tasks" title="Permalink">&para;</a></h2>
<p>As a new developer you will want to find some easy coding tasks. These are tasks that generally can be done with good C++ skills, but do not require comprehensive knowledge of how OpenOffice is put together. The tasks are more localized. By doing easy tasks you gain experience and confidence hacking with the code base.</p>
<p>We use a <a href="">Bugzilla issue tracker</a> to track reported defects in OpenOffice. Some of us also use Bugzilla for tracking feature and enhancement tasks as well. The value of tracking all coding-related tasks in Bugzilla is that it helps our QA volunteers know which areas to test. Whether code was changed to fix a bug or enhance a feature -- the QA impact is pretty much the same.</p>
<p>If you have not done so already, please <a href="">sign up for a Bugzilla account</a>. This will allow you to enter new bugs or tasks, but also assign yourself existing ones.</p>
<p>Many tasks are classified in the "difficulty" field. The ones classified as "easy" or "simple" (one level harder than "easy") are good ones to start with. You can find these with the <a href=";o1=equals&amp;resolution=---&amp;query_format=advanced&amp;v1=easy&amp;list_id=42478">easy-hacks</a> and <a href=";o1=equals&amp;resolution=---&amp;query_format=advanced&amp;v1=simple&amp;list_id=42478">simple-hacks</a> queries.</p>
<p>Once you pick a bug and assign it to yourself, you might want to post a note to the dev list, letting us know. We might have some helpful hints to get you started.</p>
<h2 id="coding-standards">Coding Standards<a class="headerlink" href="#coding-standards" title="Permalink">&para;</a></h2>
<p>For reference note the following coding standards for the project:</p>
<li><a href="">Coding Standards</a></li>
<li><a href="">Writer/Code Conventions</a></li>
<p>The Geneva Convention prevents us from forcing you to read all of those rules, but know that they are there, and when your code is reviewed your reviewer might refer to some of those rules if there is an issue. So you'll absorb them over time.</p>
<h2 id="submitting-patches">Submitting Patches<a class="headerlink" href="#submitting-patches" title="Permalink">&para;</a></h2>
<p>As you read in the <a href="/orientation/intro-contributing.html">Introduction to Contributing to OpenOffice module</a>, contributors who have demonstrated merit via their project contributions can be voted in as Committers. Committers have the ability to check code into project's source control. Contributors who are not (yet) Committers must submit their patches and have them be reviewed first.</p>
<p>Please review these <a href="/svn-basics.html#creating_and_submitting_patches">guidelines for submitting patches</a>. A good practice is to attach the patch to the Bugzilla issue and then send a link to the issue to the Dev list, asking for someone to review and commit the patch.</p>
<p>##Other Useful Resources</p>
<li>The <a href=""> for Developers</a> web area has useful information for getting started.</li>
<li>The <a href=""> Development Wiki Area</a> has a lot of good general development information.</li>
<li>The <a href="/mailing-lists.html#commits-mailing-list">commits mailing list</a> echos every checkin made to the code base. Developers are encouraged to subscribe so they are aware of other changes, and can help review.</li>
<h2 id="module-completion">Module Completion<a class="headerlink" href="#module-completion" title="Permalink">&para;</a></h2>
<p>Once you have completed this Module, go to our our <a href="">Directory of Volunteers</a> wiki page and add or update your information. Congratulations! Please send a note to <a href=""></a> so we know.</p>
<footer class="navbar-expand-lg navbar-light bg-light">
<div class="footer" id="footer">
<div class="container-fluid">
Copyright &copy; 2011-2024 The Apache Software Foundation,
Licensed under the
<a href="">Apache License, Version 2.0.</a> | <a href="/contact.html">Contact Us</a> | <a href="/terms.html">Terms of Use</a> | <a href="">Privacy</a>
Apache, OpenOffice, and the seagull logo are registered trademarks of The Apache Software Foundation.
The Apache feather logo is a trademark of The Apache Software Foundation.
Other names appearing on the site may be trademarks of their respective owners.
</div><!-- #container-fluid -->
<div class="row container-fluid">
<div class="col-sm">
<a href="">
<img src="" alt="The Apache Software Foundation" style="border: 0; margin-top: 2px" width="200" height="82">
<div class="col-sm center-align">
<a href="">
<img src="" alt="Support The ASF" height="80" width="80">
<div class="col-sm right-align">
<a class="acevent" data-format="wide" data-mode="light" data-event="random"></a>
<!-- Start load of stylesheets (will need to upgrade periodically) -->
<link href="/theme/css/bootstrap.min.css" rel="stylesheet" type="text/css">
<link href="/theme/css/github-markdown.min.css" rel="stylesheet" type="text/css">
<link href="/theme/css/openoffice.css" rel="stylesheet" type="text/css">
<!-- End stylesheets -->
<!-- Start the loading of javascript frameworks (will need to upgrade periodically) -->
<script src=""></script>
<script src="/theme/js/jquery.slim.min.js"></script>
<script src="/theme/js/popper.min.js"></script>
<script src="/theme/js/bootstrap.min.js"></script>
<!-- End the loading of javascript frameworks -->
<!-- Source: pages/orientation/; Template: page; Url: pages/orientation/intro-development.html --></body>