<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <META NAME="description" CONTENT="Evangelism - Current Initiatives - Index">
    <title>NetBeans Evangelism - Current Initiatives</title>
    <link REL="stylesheet" type="text/css" href="../../../netbeans.css">
</head>
<body>
    <a NAME="top"><h1>NetBeans Evangelism Initiatives</h1></a>
    
    <p>The NetBeans Evangelism team is involved in many on-going efforts 
        to aid in the growth and popularity among developers, users and the public.  
        Our aim is:  Attract, integrate, recognize, explore, network and assist 
        individuals to realize the opportunities that exist around NetBeans IDE, 
    NetBeans Platform, NetBeans EDU and the NetBeans community.</p>
    
    <hr>
    
    
    <p><h2>NetBeans Partners</h2>
    <p>
    You, members of the NetBeans community, are integral to the success of NetBeans! 
    The NetBeans Partner Programs provide an opportunity for those of the NetBeans community 
    who are adding value to NetBeans users to have a formal relationship with NetBeans 
    and be recognized and rewarded for your efforts.
    The <a href="../../../community/partners/index.html">NetBeans Partners Program</a> 
    supports two types of partners: Strategic Partners and Community Partners.
    <ul>
        <li>
            <p><a href="../../../community/partners/strategic.html">NetBeans Strategic Partners</a> 
                are companies that are providing added value to the NetBeans community 
                by building NetBeans plug-ins or add-ons, recommending NetBeans to their developer community
            or standardizing large-scale internal development teams on NetBeans.</p> 
        </li>
        <li>
            <p><a href="../../../community/partners/community.html">NetBeans Community Partners</a> 
                are individuals or companies who endorse NetBeans 
                as a development environment and/or application platform. 
                Community Partners may contribute code to the open-source NetBeans code base, 
            promote NetBeans by giving presentations, training and writing articles or books.</p>
        </li>
    </ul>
    
    
    
    <p><h2>The NetBeans Dream Team</h2>
        <a href="../../../community/contribute/dreamteam.html">NetBeans Dream Team</a> 
        is a community-driven group of highly skilled NetBeans users. 
        They participate at NetBeans developer events, on mailing lists and developer forums, 
        providing new, interesting and informative content as well as 
    developing new and creative ways to promote NetBeans.</p> 
    <p>Now that the charter members have been selected from the nominations, 
    membership will be decided by Dream Team members. 
    People get invited because they get noticed. 
    People get noticed because they are acting as if they are already Dream Team members. 
    The best way to become a member is to start acting like one!
    
    <p><h2>NetBeans Visual Identity Guidelines (Collateral and Branding)</h2>
    
    <p>Collecting all of NetBeans literature and procedures dealing with 
        the specific products should be available online.  These are to become the standard in
        graphics and printed material to be made available for viewing, 
        downloading and in proper print ready form. 
        The goal is to have the major product informational documents 
        made readily available for distribution in the worlds major languages or where there is demand.  
    </p>
    
    <h3>Icons and Banners</h3>
    
    <p>If you are building an application that is a distribution of NetBeans, 
        you can help NetBeans itself evolve faster and better by making it visible
        that what you are distributing is built on NetBeans.  
        For this reason, we ask you to include  
        <a href="../../../community/teams/evangelism/collateral.html">Built on NetBeans</a> icons 
        in the application's splash screen and web content.  
        Also if a company or individual is building plug-ins for the NetBeans IDE 
        or another app built on NetBeans, you can include these 
        <a href="../../../community/teams/evangelism/collateral.html">graphics,
    with links to the NetBeans web site</a>.</p>
    
    <h3>Resources and Presentations</h3>
    
    <p>Presentations play a role more than ever in today's society.  
    It is not always you, the developer or user, who chooses which products your team will use.
    Presentations are an effective medium in which a point can be made 
    quickly and attractively while maintaining a high standard of informative content.  
    Our presentation include Flash presentations, PowerPoint and other graphics.  
    Use them for local event participation, downloading, and an introduction to NetBeans.</p> 
    <p>We provide you with publicly available 
        <a href="https://netbeans.org/kb/docs/screencasts.html">video demos</a> and 
    <a href="presentations.html">NetBeans Evangelism presentations</a> to download.</p>
    
    
    <p><h2>Event Participation</h2></a>
        <br>NetBeans is being used through-out the world therefore it is impossible 
        for a set group of individuals to attend even some of the most important events.
        This is where an active focus effort can network and organize a local presence 
        for many trade-shows and other events that would not be attended by a NetBeans
        representative.  We need to organize physical attendance at shows 
        using our current community and partners to attract new users and ensure that we are visible.</p> 
        <p>Please use the <a href="../../../community/news/calendar.html">calendar</a> available 
            on our <a href="../../../community/news/index.html">news</a> page 
            to announce events in your region and use the Evangelism mailing list
            to organize a presence.  To get an event listed please  
        <a href="https://netbeans.org/about/contact_form.html?to=2">get in contact</a>.</p>
        
        
        <p><h2>Localization Effort</h2></a>
            <br>Not everybody can read and/or write in English. 
            The <a href="http://nblocalization.netbeans.org//">NetBeans localization project</a> 
            is attempting to bring to people of various countries information concerning
            NetBeans in their native language.  These efforts include:  
            localization of the NetBeans IDE, translated editions of news & Sprout, translations of important
            documents and helping on 2nd language mailing lists.  
            Also we can assist through templates to aid in the creation 
            of a local language NetBeans community web site.
            If you are interested in setting up a local language please 
            <a href="https://netbeans.org/about/contact_form.html?to=2">make your proposals</a> 
        on the Evangelism mailing list or email the web team.</p>
        
        
        <p><h2>News & Press Kits</h2></a>
            <br>It is important to monitor how the media is reacting toward NetBeans.  
            If you see an article about NetBeans please send a link to the Evangelism mailing list
            after you check our <a href="../../../about/press/articles.html">In the Press archives</a>.  
            You can also help by responding to any article that you feel does not portray our community views.  
            It is advised that this is discussed with the Evangelism community prior to any action.  
        Any other ideas as with any of the initiatives is happily welcomed.</p>
        
        
        <p><h2>Strategic Marketing</h2></a>
        
        <br>Part of understanding NetBeans is understanding the market 
        and also the people and companies competing for the top positions.  
        Our efforts are broken into
    two main categories which consists of further subcategories.</p>
    
    
    <p><b>Research</b><ul>
            <li>Targeting - investigating the types of users and their needs</li>
            <li>Benchmarking - analyzing the competitors, the market, and assets of NetBeans.org</li>
            <li>Product Development - defining an appropriate design/specification of product features based on the market requirements</li>
        <li>Unique Selling Proposition - provide the product with a distinct identity; branding</li></ul>
        
        <br><b>Communication</b><ul>
            <li>Advertisement & Public Relations - communicate the result to the users, establish contact to the media</li>
            <li>Market Feedback - start a continuous dialog between the user and developer</li>
            <li>Distribution - develop channels of distribution and trade alliances</li>
            <li>Process Organization - monitoring and responding to member wishes, ideas and external suggestions</li>
    </ul></p>
    
    
    
</body>
</html>
