gsch2pcb: Make --m4-file and -m4-pcbdir arguments work again.
[geda-gaf/peter-b.git] / docs / wiki / pcb-roadmap.html
blob547a22442c514cff1df79b74ad33fc629f72d318
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html>
4 <head>
5 <title></title>
6 <link rel="stylesheet" media="screen" type="text/css" href="./style.css" />
7 <link rel="stylesheet" media="screen" type="text/css" href="./design.css" />
8 <link rel="stylesheet" media="print" type="text/css" href="./print.css" />
10 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
11 </head>
12 <body>
15 <h1 class="sectionedit1614"><a name="pcb_roadmap" id="pcb_roadmap">PCB Roadmap</a></h1>
16 <div class="level1">
18 <p>
20 This is a guide to the future direction of the PCB layout editor.
22 </p>
23 <ul>
24 <li class="level1"><div class="li"> <a href="geda-design_flow_and_hierarchy_roadmap.html" class="wikilink1" title="geda-design_flow_and_hierarchy_roadmap.html"> gEDA roadmap</a> has some PCB items.</div>
25 </li>
26 <li class="level1"><div class="li"> <a href="geda-todos.html" class="wikilink1" title="geda-todos.html"> gEDA To-Dos</a> also has some PCB items.</div>
27 </li>
28 <li class="level1"><div class="li"> <a href="pcb-projects.html" class="wikilink1" title="pcb-projects.html"> PCB Projects</a> lists some wish-list items.</div>
29 </li>
30 </ul>
32 </div>
33 <!-- EDIT1614 SECTION "PCB Roadmap" [1-302] -->
34 <h2 class="sectionedit1615"><a name="general_guidelines_for_releases" id="general_guidelines_for_releases">General Guidelines for Releases</a></h2>
35 <div class="level2">
37 <p>
39 In general, there are three types of changes that go into PCB - bug
40 fixes, new features, and incompatible changes. A <em>bug fix</em> is when
41 PCB doesn&#039;t do what it&#039;s supposed to do - this includes documentation
42 bugs as well as code problems. A <em>new feature</em> is something that
43 adds functionality to PCB but doesn&#039;t change any existing
44 functionality. An <em>incompatible change</em> is anything that causes
45 (intentional) compatibility issues with older versions of PCB, and
46 usually means a large design change. Note that a new feature that
47 adds a backwards-incompatible change to the file format <em>when it&#039;s
48 used</em> is not in this category.
49 </p>
51 <p>
52 The current plans are as follows:
54 </p>
55 <ul>
56 <li class="level1"><div class="li"> Bug fix releases every two months or so until we clear the backlog.</div>
57 </li>
58 </ul>
59 <ul>
60 <li class="level1"><div class="li"> Start on a PCB 4.0 release that folds in some large design changes we&#039;ve been talking about for years.</div>
61 </li>
62 </ul>
64 <p>
66 At the moment, bugfix releases will be of the form <code>pcb-YYYYMMDD</code>.
67 Once 4.0 is released, the major.minor.bugfix numbers will correspond
68 to the three categories listed above: bugfixes cause a *.*.N release,
69 new features cause a *.N release, major changes cause a N.0 release.
70 The <code>YYYYMMDD</code> release numbers will then be used for regular
71 non-release snapshots.
72 </p>
74 <p>
75 The remainder of this page will list the various changes that are
76 planned (or at least hoped for) for upcoming and future releases.
77 </p>
79 <p>
80 Bugs, patches, and feature requests should be added to the
81 <a href="https://bugs.launchpad.net/pcb" class="urlextern" title="https://bugs.launchpad.net/pcb" rel="nofollow">Launchpad
82 trackers</a>. The default status <strong>undecided</strong>. Requests with that
83 priority will be considered “unreviewed”.
85 </p>
87 </div>
88 <!-- EDIT1615 SECTION "General Guidelines for Releases" [303-1908] -->
89 <h2 class="sectionedit1616"><a name="next_bug_release" id="next_bug_release">Next Bug Release</a></h2>
90 <div class="level2">
92 <p>
94 This is a list of fixes that <em>must</em> be fixed before the next bug
95 release, in addition to any “next bug release” artifacts in the bug tracker.
96 </p>
98 </div>
99 <!-- EDIT1616 SECTION "Next Bug Release" [1909-2083] -->
100 <h2 class="sectionedit1617"><a name="future_bug_releases" id="future_bug_releases">Future Bug Releases</a></h2>
101 <div class="level2">
105 This is a list of fixes that should be fixed eventually.
106 </p>
108 </div>
109 <!-- EDIT1617 SECTION "Future Bug Releases" [2084-2175] -->
110 <h2 class="sectionedit1618"><a name="next_feature_release" id="next_feature_release">Next Feature Release</a></h2>
111 <div class="level2">
115 This is a list of new features that will be added before the next
116 feature release (or, perhaps the next bug release, if time permits).
117 </p>
120 Make the code C++ compatible.
121 </p>
124 Allow via annulii to overlap each other.
125 </p>
128 More route styles.
129 </p>
132 Nanometer resolution - this is the “metric units” change we&#039;ve talked
133 about many times.
134 </p>
137 Real layer types. Silks, keepouts, mask docs at least. Maybe
138 anti-draw or paste.
139 </p>
141 </div>
142 <!-- EDIT1618 SECTION "Next Feature Release" [2176-2611] -->
143 <h2 class="sectionedit1619"><a name="future_feature_releases" id="future_feature_releases">Future Feature Releases</a></h2>
144 <div class="level2">
148 Other features that should be added eventually.
149 </p>
151 </div>
152 <!-- EDIT1619 SECTION "Future Feature Releases" [2612-2697] -->
153 <h2 class="sectionedit1620"><a name="next_incompatible_release" id="next_incompatible_release">Next Incompatible Release</a></h2>
154 <div class="level2">
158 This is a list of major changes that we think are desirable to include
159 in PCB, and wish to put effort into.
160 </p>
162 </div>
163 <!-- EDIT1620 SECTION "Next Incompatible Release" [2698-2845] -->
164 <h2 class="sectionedit1621"><a name="future_incompatible_releases" id="future_incompatible_releases">Future Incompatible Releases</a></h2>
165 <div class="level2">
169 This is a list of other major changes that we think are desirable to
170 include in PCB, but so far have not committed any effort to.
171 </p>
173 </div>
174 <!-- EDIT1621 SECTION "Future Incompatible Releases" [2846-3018] -->
175 <h2 class="sectionedit1622"><a name="wish_list" id="wish_list">Wish List</a></h2>
176 <div class="level2">
180 This section lists possible projects for future releases, which either
181 haven&#039;t been agreed on, or haven&#039;t been scheduled. If you&#039;d like to
182 work on one of these, go ahead <img src="images/smileys/icon_smile.gif" align="middle" alt=":-)" />
183 </p>
187 Other <acronym title="Graphical User Interface">GUI</acronym> cleanups. Gtk upgraded to “best practices”. Importer config.
188 </p>
191 “New layout” templates and wizards. (instead of defaulting to 4&times;4 8-layer)
192 </p>
195 import/wizard plugins (as well as exports)
196 </p>
199 DRC cleanups/rewrite
200 </p>
203 CAM engine? (i.e. ability to say “draw outline on top soldermask” via script/config)
204 </p>
207 Ability to hook into layer exporters (i.e. thindraw as a HID)
208 </p>
211 New file format we&#039;ve been discussing.
212 </p>
215 Variable-angle arcs. 90 degrees is extremely limiting.
216 </p>
219 Filled circles, sans kludge. Currently, to get a filled circle you
220 create a zero-length trace of the right width.
221 </p>
224 Having all shapes that are supported for traces supported for
225 footprint copper (arcs, polygons, circles, etcetera).
226 </p>
229 Unification of shortcuts in gschem and PCB, or at least an easy option
230 for PCB to mimic gschem&#039;s shortcuts.
231 </p>
234 Better support for free-rotated components: assert that pads at funky
235 angles are rendered correctly, fix autorouter for components at weird
236 angles (the latest git version has a tendency to either ignore the route
237 command or to segfault, depending on the specifics), add rotation to the
238 ctrl-R report, etcetera.
239 </p>
242 Ability to copy a footprint&#039;s name from the library dialogue (so it
243 can be pasted into gschem&#039;s attribute list).
244 </p>
247 Ability to edit netlist in-situ (possibly by drawing on the rat lines
248 layer) - e.g, when you want to add a heatsink soldered to ground, it
249 will always show up as shorted until the netlist is edited to
250 incorporate it.
251 </p>
254 Last but not least, blind and buried vias. It&#039;s big, reasonably
255 important, and has been on people&#039;s wish lists for years.
256 </p>
259 Trace impedance calculator, with automatic adjustment capability (fill
260 in thickness, stray capacitance and desired impedance, and the width is
261 adjusted to satisfy the conditions).
262 </p>
265 Integrated footprint lookup and fetch from gedasymbols.org.
266 </p>
269 Heirarchical pcb model - subcells, footprints-as-pcb, etc.
270 </p>
273 A shape I&#039;ve often wanted on a pad is circle with the sides cut off.
274 This is slightly different than an oval. Something like Inkscape&#039;s
275 boolean operations would be excellent.
276 </p>
279 How about text at not-90 degree angles? Or support for rotated square
280 pads (I know, the file format doesn&#039;t support those two.)
281 </p>
284 Editing on the grid has got to go! Counting grid points is the worst
285 possible way to enter positional information into a computer.
286 </p>
289 Make every field in object reports editable.
290 </p>
293 Allow direct entry of offsets and absolute positions when editing.
294 </p>
297 Add “offset” and “trim” feature à la 2D CAD programs.
298 </p>
301 Add “point to tangent” and “tangent to tangent” line drawing feature
302 à la 2D CAD programs.
303 </p>
306 Also, trim polygons against “outline” layer. Fix polygons in general.
307 </p>
310 square/rectangular holes (e.g. mounting tabs)
311 </p>
314 Automatic least version required file saving. Set the file format
315 version based on features used, not the version of PCB This will
316 become valuable as we add features like blind vias, custom pad stacks
317 etc….
319 </p>
321 </div>
322 <!-- EDIT1622 SECTION "Wish List" [3019-] --></body>
323 </html>