<head>
<title>OpenOffice.org Art Project</title>


<style type="text/css">
.galleriestable {
        border: 1px solid #0E72A4;
        background-color: #FFFFFF;
        margin-top: 1px;
        margin-bottom: 1px;
}

.tableh1 {
        background : #00315a ;
        color : #FFFFFF;
        padding-top: 3px;
        padding-right: 10px;
        padding-bottom: 3px;
        padding-left: 10px;
}

.tableh1_compact {
        background : #0E72A4 ;
        color : #FFFFFF;
        padding-top: 2px;
        padding-right: 5px;
        padding-bottom: 2px;
        padding-left: 5px;
}

.tableh2 {
        background: #d8dee3 ;
        color : #000000;
        padding-top: 3px;
        padding-right: 10px;
        padding-bottom: 3px;
        padding-left: 10px;
}

.tableh2_compact {
        background: #D1D7DC ;
        color : #000000;
        padding-top: 2px;
        padding-right: 5px;
        padding-bottom: 2px;
        padding-left: 5px;
}

.tableb {
        background: #EFEFEF ;
        padding-top: 3px;
        padding-right: 10px;
        padding-bottom: 3px;
        padding-left: 10px;
}

.tableb_compact {
        background: #EFEFEF ;
        padding-top: 2px;
        padding-right: 5px;
        padding-bottom: 2px;
        padding-left: 5px;
}

.tablef {
        background: #d8dee3;
        padding-top: 10px;
        padding-right: 10px;
        padding-bottom: 10px;
        padding-left: 10px;
}

</style>

</head>

<H2>The OpenOffice.org Art Project</H2>

<!-- Project menu -->
<div align="right">
    <a href="index.html">Index</a> 
 :: <a href="index.html#galleries">Galleries</a>
 :: <a href="to-do-artwork.html"><b>Artwork To-Do</b></a>    
 :: <a href="to-do-maintenance.html"><b>Project Maintenance To-Do</b></a>     
 <br>
 
 <a href="about-participation.html">How to participate</a>
  :: <a href="about-request-graphics.html">Request graphics</a>
  :: <a href="about-issuezilla.html">IssueZilla</a>
  :: <a href="about-issuezilla-uploading_files.html"><b>Sending us files</b></a>
  :: <a href="about-legal.html">Licenses</a>
  :: <a href="about-project.html">About the project</a>  
 <br><br>
</div>
<!-- end of project menu -->


<!-- Galleries entry table -->
<table style="border-style:solid; border-color:#06338b; border-width:5px"  cellpadding="2" cellspacing="3" width="100%" bgcolor="#9bc0f5">
	<tr>
		<td>
		<strong>The OpenOffice.org Art Project is updating its web site. </strong>
		<br />
		This page is outdated, but most of its content is being worked on at the <a href="http://wiki.services.openoffice.org/wiki/Art">OpenOffice.org wiki</a>:
		<br />
		Please follow <a href="http://wiki.services.openoffice.org/wiki/Art">this link</a> 
		and use the wiki subpages to find the information you're looking for.
		<br />
		If you can't find what you want to know, please contact our mailing list <a href="mailto:art&#64;marketing.openoffice.org">art@marketing.openoffice.org</a>.
		<br />
		<br />		
		Sorry for any inconvenience, we hope to finish the update as soon as possible. 
		<br />		
		- And you are welcome to help us in this area too... - 
		</td>
	</tr>
</table>
<br />


<TABLE border="0" cellpadding="1" cellspacing="0" width="100%" bgcolor="#ffffff">
<TR>
<TD valign="top"  width="85%">	<!-- Begin contents of page -->
	<TABLE class="galleriestable" width="100%">
	<TR>
	<td class="tableh1">
	<strong>About the Art Project:</strong>
	</TD>
	</TR>
	<TR>
	<TD class="tableb">
		<strong>Mission statement:</strong> To create and maintain a central repository of 
		OpenOffice.org related graphics and artwork	and to provide dedicated tools and a
		proper environment for graphical art creation and internationalization in the bennefit 
		of the OpenOffice.org Community and Projects.
		<p>
		Areas covered by the project include (but are not limited to) posters, 
		screenshots, CD-covers, OpenOffice.org related wallpapers and other promotional 
		graphics, GUI graphics, web graphics, labels, logos, etc. All the above will 
		be created and maintained in tight coordination with the respective projects
		that use the graphics and with the native language projects in order to internationalize
		the created art. 
		<p>
		<strong>Why the art project ?</strong> The project has been created as a way to centralize
		all the graphics related work in the OpenOffice.org Community in order to eliminate the
		duplication of efforts in graphics creation by offering a central place where to look for
		already created graphics and also a central place where to direct the graphics creation 
		requests from the Community.
		<p>
		<strong>Looking for graphics ?</strong> If you are looking for OpenOffice.org related 
		graphics, please feel free to <a href="index.html#galleries">browse our galleries</a>. 
		The galleries are organized by themes (posters, screenshots, wallpapers, etc) and 
		where possible we provide links to localized/translated versions of the graphics 
		in various languages. While browsing the galleries, please consider rating the artwork
		so that we know how we are performing.
		<p>
		<strong>You did not find the needed graphics ?</strong> If you did not manage to find 
		the needed artwork for your project, please consider filing in a 
		<a href="about-request-graphics.html">graphics creation request</a>. It may be possible that
		one of the volunteer artists will create the needed art for you.
		<p>
		<strong>For a more direct contact:</strong> In order to directly speak with the members
		of the project please consider joining our dedicated mailing-list by sending an empty email
		to 
	<a href="mailto:art-subscribe@marketing.openoffice.org">art-subscribe@marketing.openoffice.org</a>
		and then introduce yourself and post your comments/questions to the mailing list by sending
		the messages to:<a href="mailto:art@marketing.openoffice.org">art@marketing.openoffice.org</a>.
		<p>
		<strong>Consider joining.</strong> If you are able to help in the graphics creation and
		maintenance, aside from joining our dedicated mailing list and introducing yourself, please
		consider 
		<a href="http://www.openoffice.org/servlets/Join">registering</a> with the 
		OpenOffice.org website and then joining the 
		<a href="http://marketing.openoffice.org">Marketing Project</a>
		in order to be able to operate our Issue Tracker system called 
		<a href="about-issuezilla.html">Issue Zilla</a> which we use as a Trouble Ticket System 
		for handling the tasks inside the project.
		<p>
		The next step would be for you to browse our <a href="to-do-artwork.html">ARTWORK To-Do</a> list 
		and if you find something that you would be able to 
		contribute to, please send an email to the list stating your intention to take the 
		respective task.
		<p>
		We are in great need for volunteer artists and in return for your contributions we will try
		to promote your work in the bennefit of the Community as much as we can.
		More information on joining and contributing can 
		be found <a href="about-participation.html">here</a>.
		<br><br><br>
		
		
	</TD>
	</TR>			
	</TABLE>
	<!-- end contents of page --></TD>
<TD width="150" valign="top">
		
		<!-- Help needed table -->
			<TABLE class="galleriestable" width="100%">
			<TR>
			<TD class="tableh2">
			<small>
			<b><font color="#7F7F7F">HELP NEEDED:</font></b><br>
			
			<script language="JavaScript"
			src="http://oosurvey.gratismania.ro/oooart/news/todo.php"></script>
			<br><!-- <a href="#">More...</a> -->
			</small>
			</TD>
			</TR>
			</table>
		
		<!-- news table -->
			<TABLE class="galleriestable" width="100%">
			<TR>
			<TD class="tableh2">
			<small>
			<b><font color="#7F7F7F">PROJECT NEWS:</font></b><br>
			<script language="JavaScript" 
			src="http://oosurvey.gratismania.ro/oooart/news/news.php"></script>
			<BR>
			<!-- http://oosurvey.gratismania.ro/oooart/news/news.php -->
			<!-- <a href="#">More...</a> -->
			</small>
			</TD>
			</TR>
			</table>


</TD>
</TR>
</TABLE>
<!-- end of galleries entry table -->
