annotate 1__Development/6__Website/projecttools.html @ 2:5c0400b5ae59

Unknown changes.. committing to get them captured
author Sean Halle <seanhalle@yahoo.com>
date Fri, 13 Sep 2013 11:04:58 -0700
parents
children
rev   line source
Me@0 1 <html>
Me@0 2 <head>
Me@0 3 <title>Project tools</title>
Me@0 4 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
Me@0 5 </head>
Me@0 6
Me@0 7 <body bgcolor="#FFFFFF">
Me@0 8
Me@0 9 <p>&nbsp;</p>
Me@0 10 <h2>Project Tools</h2>
Me@0 11 <p>&nbsp;</p>
Me@0 12 <p>The standard tools used for development on the EQNLang project are:</p>
Me@0 13 <blockquote>
Me@0 14 <p><a href="http://tortoisesvn.tigris.org/">Tortoise SVN</a> -- the revision
Me@0 15 control is done by the Tortoise client</p>
Me@0 16 <p><a href="http://www.netbeans.org/">Netbeans</a> -- preffered for development..
Me@0 17 other tools are fine, but no help will be available to figure out what's not
Me@0 18 working</p>
Me@0 19 <p><a href="http://www.inkscape.org/">inkscape</a> -- an SVG drawing tool. The
Me@0 20 custom graphics used to extend syntax are drawn using inkscape.</p>
Me@0 21 <p>&nbsp;</p>
Me@0 22 </blockquote>
Me@0 23 <p>====</p>
Me@0 24 <p> This part is about project-related things, like tools used, setting up the
Me@0 25 projects, coding style, etc </p>
Me@0 26 <p>=========== </p>
Me@0 27 <p>Using SVN: </p>
Me@0 28 <p>I use Tortoise SVN, after getting burned using netbean's built-in SVN, which
Me@0 29 caused problems.. </p>
Me@0 30 <p> Hostname: eqnlang.svn.sourceforge.net</p>
Me@0 31 <p> Port: 443</p>
Me@0 32 <p> Protocol: HTTPS </p>
Me@0 33 <p> Repository Path: /svnroot/eqnlang/YOURBRANCH/CTOSPlugIns</p>
Me@0 34 <p> For clients that use a URL string: https://eqnlang.svn.sourceforge.net/svnroot/eqnlang/YOURBRANCH/CTOSPlugIns</p>
Me@0 35 <p>==========</p>
Me@0 36 <p> </p>
Me@0 37 <p>IDE: </p>
Me@0 38 <p>Most people on the project use Netbeans, mostly because it's good enough and
Me@0 39 (arguably) easy to learn. I want all of us developers to use the same development
Me@0 40 tool so that everything goes smoothly.. we can share help on the IDE with each
Me@0 41 other, share setups and so on. Of course, if you have an IDE that you really
Me@0 42 want to use, that's up to you, it's just that there won't be much help available
Me@0 43 to you, you'll have to figure out how to make things work with your tool on
Me@0 44 your own. </p>
Me@0 45 <p>If you don't have a strong preference, would you be willing to try netbeans?
Me@0 46 </p>
Me@0 47 <p>Here's the link: http://www.netbeans.org/ to get the latest version </p>
Me@0 48 <p>========= </p>
Me@0 49 <p>Problem with netbeans's built-in SVN client: </p>
Me@0 50 <p>At one point, we were using netbeans's built-in SVN client, but had problems..
Me@0 51 the nbproject folder was included in the SVN, so each developer who checked
Me@0 52 in code would inadvertantly insert the paths for their own harddrive and cause
Me@0 53 everyone else's netbeans to fail. FYI, Most of the problems were in the file:
Me@0 54 nbproject/project.properties</p>
Me@0 55 <p>============= </p>
Me@0 56 <p></p>
Me@0 57 <p>Netbeans projects: </p>
Me@0 58 <p>I have structured the SVN repository in a way that is different from how netbeans
Me@0 59 structures code. The SVN repository has a standard hierarchy of directories.
Me@0 60 However, netbeans likes to have a directory above the one that contains the
Me@0 61 code. It places a special &quot;nbproject&quot; folder there, and puts all the
Me@0 62 code under the &quot;src&quot; folder. So, to work on the code in netbeans,
Me@0 63 first make a &quot;project&quot; directory, then make a &quot;src&quot; and
Me@0 64 a &quot;test&quot; directory under it, then go into the &quot;src&quot; directory..
Me@0 65 there, right click and choose &quot;checkout&quot;, which uses the tortoise
Me@0 66 SVN client. Make sure the path is your own, special, branch in the repository,
Me@0 67 this is very important, as a separate branch has been set up in SVN for each
Me@0 68 developer who joins the project. This ensures that each developer has their
Me@0 69 own place to make changes, and I have a chance to look over the code before
Me@0 70 merging it into the trunk. Make the path include the &quot;CTOSPlugIns&quot;
Me@0 71 directory (note the capital &quot;I&quot;), and perform the checkout. When done,
Me@0 72 you will have six folders in your local &quot;src&quot; directory.</p>
Me@0 73 <p>====== </p>
Me@0 74 <p>Create the netbeans projects: </p>
Me@0 75 <p>Right after doing a checkout, you'll need to create a new netbeans project.</p>
Me@0 76 <p> -) Go in to netbeans, right click in the projects area, choose "new project"
Me@0 77 </p>
Me@0 78 <p>-) In the dialog choose "New Java project with Existing Sources" </p>
Me@0 79 <p>-) Click "browse" in the next dialog and navigate to the project folder you
Me@0 80 created earlier, the one that contains the &quot;src&quot; folder that you checked
Me@0 81 out the code into.</p>
Me@0 82 <p> -) After navigating to and choosing the folder, put a name for the project
Me@0 83 in &quot;project name:" box, then click "next" </p>
Me@0 84 <p>-) click "add folder" and select the "src" sub-folder and click "finish"</p>
Me@0 85 <p>At this point, you should be able to build the code (unless I gave you a branch
Me@0 86 that has some skeleton code for you that's not filled in and won't compile..)</p>
Me@0 87 <p>======= </p>
Me@0 88 <p>Libraries:</p>
Me@0 89 <p>At the time of this writing, no external libraries are needed, but that may
Me@0 90 change. If the code doesn't compile because something can't be found, then it's
Me@0 91 probably because a library needs to be added. To add a library, expand the project
Me@0 92 in the projects window (click the "+" sign), so you can see the folders in it
Me@0 93 -- then right-click on the "Libraries" folder. This brings up a menu with options
Me@0 94 for adding a library..</p>
Me@0 95 <p>======= </p>
Me@0 96 <p>Development Interaction </p>
Me@0 97 <p>The method I want to use to develop the language and OS features is to co-develop
Me@0 98 the code. I want to choose the Class names, the directory names, and choose
Me@0 99 how to structure the code. I'll supply Class files with the public method names
Me@0 100 and perhaps some example code. I'll put comments inside the public methods that
Me@0 101 describe the behavior for you. </p>
Me@0 102 <p>Over time, I'll gain experience with you and you may earn my trust to take
Me@0 103 over making more of these decisions for the part you're developing.</p>
Me@0 104 <p> You'll earn my trust through looking at the coding style that's in the code
Me@0 105 and adopting that style the best way you can, for this project.</p>
Me@0 106 <p>========= </p>
Me@0 107 <p>Comment Style</p>
Me@0 108 <p>An easy way to earn more responsibility and ensure that the code you write
Me@0 109 gets merged into the main trunk quickly is to adopt a commenting style that
Me@0 110 makes it easy for me and the other developers to understand how each method
Me@0 111 you write interacts with each other method.</p>
Me@0 112 <p>As you'll soon see in the code, I use comments as a defense against my own
Me@0 113 brain. I forget everything I've done within a few months, so when I look at
Me@0 114 code I wrote before, it's like somebody else wrote it. This caused me to start
Me@0 115 the habit of writing comments in a certain way as a defense. </p>
Me@0 116 <p>When I write comments, I pretend that I am coming to the code fresh, and ask
Me@0 117 myself "what would I want someone to tell me, so that I could understand how
Me@0 118 to modify this code".. that usually includes things that I know at the moment
Me@0 119 about all the pieces that interact.. This is because I can always figure out
Me@0 120 the details by looking at the code, but in order to modify it, I have to understand
Me@0 121 how the pieces fit together. One important case of this is when one data-structure
Me@0 122 is used in a particular way in some other Class. </p>
Me@0 123 <p>The other thing I do is write comments before I write the code that state the
Me@0 124 strategy, or algorithm for the code. This gives me background when I come back
Me@0 125 to it, so I learn why I wrote it the way I did. I always imagine myself asking
Me@0 126 &quot;why did you do it that way?&quot;</p>
Me@0 127 <p>In fact, my code tends to have more lines of comment than lines of code, more
Me@0 128 like novels than programs. This has saved me many times, when I come back to
Me@0 129 change something, I have felt so grateful to myself for putting into the comments
Me@0 130 exactly what I needed to know to change the code.</p>
Me@0 131 <p> I encourage you to try this method if you plan to stay on the project. When
Me@0 132 you come back to change the code, it will give you a happy feeling that you
Me@0 133 put in the effort now, to save yourself headache then. </p>
Me@0 134 <p>It will also make it easier for future developers to use your code, rather
Me@0 135 than getting frustrated and removing it, then re-implementing it. Not to mention
Me@0 136 earn you points.</p>
Me@0 137 <p>========= </p>
Me@0 138 <p>Code Format </p>
Me@0 139 <p>I use the formatting style that I have found to be the easiest for me to see
Me@0 140 the structure of code when I read. I understand if you have a different preference
Me@0 141 that you want to keep. However, if you are willing to try the style I use, it
Me@0 142 is simple to learn: Every line of code has its first character in a multiple
Me@0 143 of 3 column: 0, 3, 6, 9, 12, and so forth. So any text starts on one of those
Me@0 144 columns (except if it is a continuation of a previous line, in which case it's
Me@0 145 whatever looks good to your eye). </p>
Me@0 146 <p>Every curly brace resides in a column exactly in-between: 1, 4, 7, 10, 13.
Me@0 147 So when one looks at the code, all the curly braces line up, and all the code
Me@0 148 lines up, but in different columns. The eye quickly separates the curly braces
Me@0 149 from the code. The curly braces indicate the code structure, so the code structure
Me@0 150 is quickly seen. </p>
Me@0 151 <p>While I am looking over your contribution, there's a good chance that I'll
Me@0 152 be changing the format so that I can see the code structure more easily. You
Me@0 153 may find this to be annoying. I apologise if causes you to feel upset and will
Me@0 154 appreciate if you have patience with the changes.</p>
Me@0 155 <p>======= </p>
Me@0 156 <p>Progression of small project-pieces</p>
Me@0 157 <p> I would like to do the project in a sequence of pieces. Things will change
Me@0 158 over time as each piece is finished, building up on top of previous pieces.
Me@0 159 One thing that won't be obvious to developers is which code choices will fit
Me@0 160 in with future planned additions. I'll need your trust when I request a certain
Me@0 161 structure to the code. </p>
Me@0 162 <p>=======</p>
Me@0 163 <p>That's it, welcome to the EQNLang project!</p>
Me@0 164 <p>Sean</p>
Me@0 165 <p>&nbsp;</p>
Me@0 166 </body>
Me@0 167 </html>