# Road Map #

This document is the KiCad Developer's road map document.  It is a living
document that should be maintained as the project progresses.  The goal of
this document is to provide an overview for developers of where the project
is headed beyond the current development cycle road map (currently
[version 6](./v6_road_map.html) to prevent resource conflicts and endless
rehashing of previously discussed topics.  It is broken into sections for
each major component of the KiCad source code and documentation.  It defines
tasks that developers an use to contribute to the project and provides updated
status information.  Tasks should define clear objectives and avoid vague
generalizations so that a new developer can complete the task.  It is not a
place for developers to add their own personal wish list  It should only be
updated with approval of the project manager after discussion with the lead
developers.

Each entry in the road map is made up of four sections.  The goal should
be a brief description of the what the road map entry will accomplish.  The
task section should be a list of deliverable items that are specific enough
hat they can be documented as completed.  The dependencies sections is a list
of requirements that must be completed before work can begin on any of the
tasks.  The status section should include a list of completed tasks or marked
as complete as when the goal is met.

[TOC]

# Project # {#project}
This section defines the tasks for the project related goals that are not
related to coding or documentation.  It is a catch all for issues such as
developer and user relations, dissemination of information on websites,
policies, etc.


# General # {#general}
This section defines the tasks that affect all or most of KiCad or do not
fit under as specific part of the code such as the board editor or the
schematic editor.


# Build Tools # {#build_tools}
This section covers build tools for both the KiCad source as well as the
custom dependency builds required to build KiCad.


# Common Library # {#common_lib}
This section covers the source code shared between all of the KiCad
applications


# KiCad: Application Launcher # {#kicad}
This section applies to the source code for the KiCad application launcher.


# Eeschema: Schematic Editor # {#eeschema}
This section applies to the source code for the Eeschema schematic editor.


# CvPcb: Footprint Association Tool # {#cvpcb}
This section covers the source code of the footprint assignment tool CvPcb.


# Pcbnew: Circuit Board Editor # {#pcbnew}
This section covers the source code of the board editing application Pcbnew.


# GerbView: Gerber File Viewer # {#gerbview}

This section covers the source code for the GerbView gerber file viewer.


# Documentation # {#documentation}
This section defines the tasks for both the user and developer documentation.

## Maintenance ## {#doc_maintenance}
**Task:**
- Keep screen shots current with the source changes.

**Dependencies:**
- None.

**Status:**
- No progress.


# Unit Testing # {#unittest}
**Goal:**

Improve the quality of KiCad and ensure changes do no break existing
capabilities.

**Task:**
- Explore the possibility of including a C++ unit test framework in addition
  to the existing Python framework.
- Create robust enough test coverage to determine if code changes break any
  core functionality.

**Dependencies:**
- Completion of the initial release of this document.

**Status:**
- In progress.


[kicad-website]:http://kicad-pcb.org/
[kicad-docs]:http://ci.kicad-pcb.org/job/kicad-doxygen/ws/Documentation/doxygen/html/index.html
