= 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
  - See link:bits.netbeans.org[bits.netbeans.org subdirectory]

== 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


