diff 1__Development/6__Website/ApacheServer/projecttools.html @ 6:d18eee376f45

Persist graph works.. in middle of putting pointers back, adding OO
author Sean Halle <seanhalle@yahoo.com>
date Wed, 06 Aug 2014 00:16:19 -0700
parents
children
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/1__Development/6__Website/ApacheServer/projecttools.html	Wed Aug 06 00:16:19 2014 -0700
     1.3 @@ -0,0 +1,167 @@
     1.4 +<html>
     1.5 +<head>
     1.6 +<title>Project tools</title>
     1.7 +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
     1.8 +</head>
     1.9 +
    1.10 +<body bgcolor="#FFFFFF">
    1.11 +
    1.12 +<p>&nbsp;</p>
    1.13 +<h2>Project Tools</h2>
    1.14 +<p>&nbsp;</p>
    1.15 +<p>The standard tools used for development on the EQNLang project are:</p>
    1.16 +<blockquote> 
    1.17 +  <p><a href="http://tortoisesvn.tigris.org/">Tortoise SVN</a> -- the revision 
    1.18 +    control is done by the Tortoise client</p>
    1.19 +  <p><a href="http://www.netbeans.org/">Netbeans</a> -- preffered for development.. 
    1.20 +    other tools are fine, but no help will be available to figure out what's not 
    1.21 +    working</p>
    1.22 +  <p><a href="http://www.inkscape.org/">inkscape</a> -- an SVG drawing tool. The 
    1.23 +    custom graphics used to extend syntax are drawn using inkscape.</p>
    1.24 +  <p>&nbsp;</p>
    1.25 +</blockquote>
    1.26 +<p>====</p>
    1.27 +<p> This part is about project-related things, like tools used, setting up the 
    1.28 +  projects, coding style, etc </p>
    1.29 +<p>=========== </p>
    1.30 +<p>Using SVN: </p>
    1.31 +<p>I use Tortoise SVN, after getting burned using netbean's built-in SVN, which 
    1.32 +  caused problems.. </p>
    1.33 +<p> Hostname: eqnlang.svn.sourceforge.net</p>
    1.34 +<p> Port: 443</p>
    1.35 +<p> Protocol: HTTPS </p>
    1.36 +<p> Repository Path: /svnroot/eqnlang/YOURBRANCH/CTOSPlugIns</p>
    1.37 +<p> For clients that use a URL string: https://eqnlang.svn.sourceforge.net/svnroot/eqnlang/YOURBRANCH/CTOSPlugIns</p>
    1.38 +<p>==========</p>
    1.39 +<p> </p>
    1.40 +<p>IDE: </p>
    1.41 +<p>Most people on the project use Netbeans, mostly because it's good enough and 
    1.42 +  (arguably) easy to learn. I want all of us developers to use the same development 
    1.43 +  tool so that everything goes smoothly.. we can share help on the IDE with each 
    1.44 +  other, share setups and so on. Of course, if you have an IDE that you really 
    1.45 +  want to use, that's up to you, it's just that there won't be much help available 
    1.46 +  to you, you'll have to figure out how to make things work with your tool on 
    1.47 +  your own. </p>
    1.48 +<p>If you don't have a strong preference, would you be willing to try netbeans? 
    1.49 +</p>
    1.50 +<p>Here's the link: http://www.netbeans.org/ to get the latest version </p>
    1.51 +<p>========= </p>
    1.52 +<p>Problem with netbeans's built-in SVN client: </p>
    1.53 +<p>At one point, we were using netbeans's built-in SVN client, but had problems.. 
    1.54 +  the nbproject folder was included in the SVN, so each developer who checked 
    1.55 +  in code would inadvertantly insert the paths for their own harddrive and cause 
    1.56 +  everyone else's netbeans to fail. FYI, Most of the problems were in the file: 
    1.57 +  nbproject/project.properties</p>
    1.58 +<p>============= </p>
    1.59 +<p></p>
    1.60 +<p>Netbeans projects: </p>
    1.61 +<p>I have structured the SVN repository in a way that is different from how netbeans 
    1.62 +  structures code. The SVN repository has a standard hierarchy of directories. 
    1.63 +  However, netbeans likes to have a directory above the one that contains the 
    1.64 +  code. It places a special &quot;nbproject&quot; folder there, and puts all the 
    1.65 +  code under the &quot;src&quot; folder. So, to work on the code in netbeans, 
    1.66 +  first make a &quot;project&quot; directory, then make a &quot;src&quot; and 
    1.67 +  a &quot;test&quot; directory under it, then go into the &quot;src&quot; directory.. 
    1.68 +  there, right click and choose &quot;checkout&quot;, which uses the tortoise 
    1.69 +  SVN client. Make sure the path is your own, special, branch in the repository, 
    1.70 +  this is very important, as a separate branch has been set up in SVN for each 
    1.71 +  developer who joins the project. This ensures that each developer has their 
    1.72 +  own place to make changes, and I have a chance to look over the code before 
    1.73 +  merging it into the trunk. Make the path include the &quot;CTOSPlugIns&quot; 
    1.74 +  directory (note the capital &quot;I&quot;), and perform the checkout. When done, 
    1.75 +  you will have six folders in your local &quot;src&quot; directory.</p>
    1.76 +<p>====== </p>
    1.77 +<p>Create the netbeans projects: </p>
    1.78 +<p>Right after doing a checkout, you'll need to create a new netbeans project.</p>
    1.79 +<p> -) Go in to netbeans, right click in the projects area, choose "new project" 
    1.80 +</p>
    1.81 +<p>-) In the dialog choose "New Java project with Existing Sources" </p>
    1.82 +<p>-) Click "browse" in the next dialog and navigate to the project folder you 
    1.83 +  created earlier, the one that contains the &quot;src&quot; folder that you checked 
    1.84 +  out the code into.</p>
    1.85 +<p> -) After navigating to and choosing the folder, put a name for the project 
    1.86 +  in &quot;project name:" box, then click "next" </p>
    1.87 +<p>-) click "add folder" and select the "src" sub-folder and click "finish"</p>
    1.88 +<p>At this point, you should be able to build the code (unless I gave you a branch 
    1.89 +  that has some skeleton code for you that's not filled in and won't compile..)</p>
    1.90 +<p>======= </p>
    1.91 +<p>Libraries:</p>
    1.92 +<p>At the time of this writing, no external libraries are needed, but that may 
    1.93 +  change. If the code doesn't compile because something can't be found, then it's 
    1.94 +  probably because a library needs to be added. To add a library, expand the project 
    1.95 +  in the projects window (click the "+" sign), so you can see the folders in it 
    1.96 +  -- then right-click on the "Libraries" folder. This brings up a menu with options 
    1.97 +  for adding a library..</p>
    1.98 +<p>======= </p>
    1.99 +<p>Development Interaction </p>
   1.100 +<p>The method I want to use to develop the language and OS features is to co-develop 
   1.101 +  the code. I want to choose the Class names, the directory names, and choose 
   1.102 +  how to structure the code. I'll supply Class files with the public method names 
   1.103 +  and perhaps some example code. I'll put comments inside the public methods that 
   1.104 +  describe the behavior for you. </p>
   1.105 +<p>Over time, I'll gain experience with you and you may earn my trust to take 
   1.106 +  over making more of these decisions for the part you're developing.</p>
   1.107 +<p> You'll earn my trust through looking at the coding style that's in the code 
   1.108 +  and adopting that style the best way you can, for this project.</p>
   1.109 +<p>========= </p>
   1.110 +<p>Comment Style</p>
   1.111 +<p>An easy way to earn more responsibility and ensure that the code you write 
   1.112 +  gets merged into the main trunk quickly is to adopt a commenting style that 
   1.113 +  makes it easy for me and the other developers to understand how each method 
   1.114 +  you write interacts with each other method.</p>
   1.115 +<p>As you'll soon see in the code, I use comments as a defense against my own 
   1.116 +  brain. I forget everything I've done within a few months, so when I look at 
   1.117 +  code I wrote before, it's like somebody else wrote it. This caused me to start 
   1.118 +  the habit of writing comments in a certain way as a defense. </p>
   1.119 +<p>When I write comments, I pretend that I am coming to the code fresh, and ask 
   1.120 +  myself "what would I want someone to tell me, so that I could understand how 
   1.121 +  to modify this code".. that usually includes things that I know at the moment 
   1.122 +  about all the pieces that interact.. This is because I can always figure out 
   1.123 +  the details by looking at the code, but in order to modify it, I have to understand 
   1.124 +  how the pieces fit together. One important case of this is when one data-structure 
   1.125 +  is used in a particular way in some other Class. </p>
   1.126 +<p>The other thing I do is write comments before I write the code that state the 
   1.127 +  strategy, or algorithm for the code. This gives me background when I come back 
   1.128 +  to it, so I learn why I wrote it the way I did. I always imagine myself asking 
   1.129 +  &quot;why did you do it that way?&quot;</p>
   1.130 +<p>In fact, my code tends to have more lines of comment than lines of code, more 
   1.131 +  like novels than programs. This has saved me many times, when I come back to 
   1.132 +  change something, I have felt so grateful to myself for putting into the comments 
   1.133 +  exactly what I needed to know to change the code.</p>
   1.134 +<p> I encourage you to try this method if you plan to stay on the project. When 
   1.135 +  you come back to change the code, it will give you a happy feeling that you 
   1.136 +  put in the effort now, to save yourself headache then. </p>
   1.137 +<p>It will also make it easier for future developers to use your code, rather 
   1.138 +  than getting frustrated and removing it, then re-implementing it. Not to mention 
   1.139 +  earn you points.</p>
   1.140 +<p>========= </p>
   1.141 +<p>Code Format </p>
   1.142 +<p>I use the formatting style that I have found to be the easiest for me to see 
   1.143 +  the structure of code when I read. I understand if you have a different preference 
   1.144 +  that you want to keep. However, if you are willing to try the style I use, it 
   1.145 +  is simple to learn: Every line of code has its first character in a multiple 
   1.146 +  of 3 column: 0, 3, 6, 9, 12, and so forth. So any text starts on one of those 
   1.147 +  columns (except if it is a continuation of a previous line, in which case it's 
   1.148 +  whatever looks good to your eye). </p>
   1.149 +<p>Every curly brace resides in a column exactly in-between: 1, 4, 7, 10, 13. 
   1.150 +  So when one looks at the code, all the curly braces line up, and all the code 
   1.151 +  lines up, but in different columns. The eye quickly separates the curly braces 
   1.152 +  from the code. The curly braces indicate the code structure, so the code structure 
   1.153 +  is quickly seen. </p>
   1.154 +<p>While I am looking over your contribution, there's a good chance that I'll 
   1.155 +  be changing the format so that I can see the code structure more easily. You 
   1.156 +  may find this to be annoying. I apologise if causes you to feel upset and will 
   1.157 +  appreciate if you have patience with the changes.</p>
   1.158 +<p>======= </p>
   1.159 +<p>Progression of small project-pieces</p>
   1.160 +<p> I would like to do the project in a sequence of pieces. Things will change 
   1.161 +  over time as each piece is finished, building up on top of previous pieces. 
   1.162 +  One thing that won't be obvious to developers is which code choices will fit 
   1.163 +  in with future planned additions. I'll need your trust when I request a certain 
   1.164 +  structure to the code. </p>
   1.165 +<p>=======</p>
   1.166 +<p>That's it, welcome to the EQNLang project!</p>
   1.167 +<p>Sean</p>
   1.168 +<p>&nbsp;</p>
   1.169 +</body>
   1.170 +</html>