= Apache NetBeans web sites

This repository is structured in different *subdirectories*, for different subdomains.

link:netbeans.apache.org[netbeans.apache.org]:: Main Apache NetBeans website
  - Will be gradually enhanced with content from http://netbeans.org as Oracle approves donation.
  - Once all content is migrated it may become http://netbeans.org
  - Changes to "master" are automatically published to http://netbeans.apache.org (see link:https://issues.apache.org/jira/browse/NETBEANS-522[NETBEANS-522] for details)

link:bits.netbeans.org[bits.netbeans.org]:: Apache NetBeans API documentation
  - Will be integrated with http://github.com/apache/netbeans
  - Will generate javadocs for each release.

== Apache guidelines for web sites

Apache provides different guidelines for project websites. Here are some:

Project-related non-apache.org domain names::
https://www.apache.org/foundation/marks/pmcs#nonapache

Apache Website Navigation Links Policy::
https://www.apache.org/foundation/marks/pmcs#navigation

Using `svnpubsub` or `CMS` for web site publishing, and using branches::
https://www.apache.org/dev/project-site.html#generated

Using `.htaccess` to configure the web server::
https://www.apache.org/dev/project-site.html#configure

How to manage my project's webpage::
https://www.apache.org/dev/project-site.html#intro



== Related issues

- INFRA: https://issues.apache.org/jira/browse/INFRA-13174
- Automatic website publishing https://issues.apache.org/jira/browse/NETBEANS-522


