User Tools

Site Tools


geda:pcb_developer_introduction_2

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
geda:pcb_developer_introduction_2 [2018/01/28 10:28]
cparker
geda:pcb_developer_introduction_2 [2018/09/01 12:44]
cparker [Where to Start]
Line 1: Line 1:
 +====== Getting Started as a pcb Developer =====
 This page is intended to be a less overwhelming version of the [[pcb_developer_introduction]]. This page is intended to be a less overwhelming version of the [[pcb_developer_introduction]].
  
Line 27: Line 28:
 git pull git pull
 </​code>​ </​code>​
-There'​s lots of accessible documentation on how to use git [[https://​git-scm.com/​documentation]]. However, it's really easy to figure out how to do things using Google. Note that you wont be able to contribute your changes directly to the server until you get an account set up with DJ. Ask him on the mailing list. Alternatively,​ you can submit your patches to the mailing listor to LaunchPad.+There'​s lots of accessible documentation on how to use git [[https://​git-scm.com/​documentation]]. However, it's really easy to figure out how to do things using Google. ​You can also check here for some relevant examples: [[geda:​scm|Source Control Management]]. 
 + 
 +Note that you wont be able to contribute your changes directly to the server until you get an account set up with DJ. Ask him on the mailing list. Alternatively,​ you can submit your patches to the mailing list or LaunchPad, or you can create and publish your own [[pcb:​plugins]] for pcb on your blog, github, whateverIf you do the later, let us know so that we can link to it!
  
 Now that you have the source files, you'll want to know what's stored where. The source tree's file structure is described here: Now that you have the source files, you'll want to know what's stored where. The source tree's file structure is described here:
Line 38: Line 41:
 The first thing you need to know about pcb is that it's been around a long time and in the hands of many different developers, each of whom had their own style. You'll see this quite clearly as you start looking around in the code. We're trying to move towards some standardized coding conventions,​ but, it's a big code base and no one really has the time to sit down and go through the entire thing to make it uniform. So, we do it as we go. Another consequence of pcb's history is that each developer had different ideas about how things should be implemented. So, in general, it's not safe to assume that two things that you think ought to be similar are implemented in the same way, because it was probably two different people that implemented it. This, too, is a work in progress. The first thing you need to know about pcb is that it's been around a long time and in the hands of many different developers, each of whom had their own style. You'll see this quite clearly as you start looking around in the code. We're trying to move towards some standardized coding conventions,​ but, it's a big code base and no one really has the time to sit down and go through the entire thing to make it uniform. So, we do it as we go. Another consequence of pcb's history is that each developer had different ideas about how things should be implemented. So, in general, it's not safe to assume that two things that you think ought to be similar are implemented in the same way, because it was probably two different people that implemented it. This, too, is a work in progress.
  
-The second thing you need to know, is that pcb is designed to work with many different HIDs (Human Interface Devices). The term might be a little misleading because, for example, the gtk interface and the png exporter are both considered HIDs. Anyway, the point is that pcb is split roughly into two parts: the database and the interface. These two things aren't completely independent of each other, but, the idea is that the interface (HID) can be one of many different ways to modify or render the database. Presently we have a number of HIDs, e.g. gtk, lesstif, batch, Gerber, png, etc. The first two are actually windowing systems that allow a human to interact with the database in the kind of friendly windowed environment that users are accustomed to. The others might be better known as exporters. This separation makes it relatively easy to implement new HIDs.+The second thing you need to know, is that pcb is designed to work with many different HIDs (Human Interface Devices). You can read more about them here: [[pcb:​hids|pcb HIDs]]. The term might be a little misleading because, for example, the gtk interface and the png exporter are both considered HIDs. Anyway, the point is that pcb is split roughly into two parts: the database and the interface. These two things aren't completely independent of each other, but, the idea is that the interface (HID) can be one of many different ways to modify or render the database. Presently we have a number of HIDs, e.g. gtk, lesstif, batch, Gerber, png, etc. The first two are actually windowing systems that allow a human to interact with the database in the kind of friendly windowed environment that users are accustomed to. The others might be better known as exporters. This separation makes it relatively easy to implement new HIDs.
  
 The third thing you need to know, is that pcb is presently not organized around objects. pcb is organized around functions. So, instead of having a Line structure with a Move function that will change the coordinates of the line, there a structure of Move functions that is indexed by object type. This can be rather annoying for those of us that have spent our formative years learning object oriented programming,​ but, pcb predates that. It'll be a big project that we undertake someday, and we'd love your help. For now, this is what we've got. The third thing you need to know, is that pcb is presently not organized around objects. pcb is organized around functions. So, instead of having a Line structure with a Move function that will change the coordinates of the line, there a structure of Move functions that is indexed by object type. This can be rather annoying for those of us that have spent our formative years learning object oriented programming,​ but, pcb predates that. It'll be a big project that we undertake someday, and we'd love your help. For now, this is what we've got.
Line 173: Line 176:
  
 =====Next Steps===== =====Next Steps=====
-There are lots and lots of projects to help with. A good way to get started is to start looking at bug reports on LaunchPad: https://​launchpad.net/​pcb . While you're there, you could have a look at the blueprints and milestones. We also have a running list of projects [[pcb-projects]] that you could have a look at. If you need some other ideas, send some email to the list.  Happy hacking!+There are lots and lots of projects to help with. A good way to get started is to start looking at bug reports on LaunchPad: https://​launchpad.net/​pcb . While you're there, you could have a look at the blueprints and milestones. We also have a running list of projects [[http://​wiki.geda-project.org/​pcb-projects]] that you could have a look at. If you need some other ideas, send some email to the list.  Happy hacking!
  
geda/pcb_developer_introduction_2.txt · Last modified: 2018/09/01 12:44 by cparker