{"id":349,"date":"2007-03-25T20:47:27","date_gmt":"2007-03-26T02:47:27","guid":{"rendered":"http:\/\/blog.codedread.com\/archives\/2007\/03\/25\/ink-on-my-fingers\/"},"modified":"2007-03-25T20:47:27","modified_gmt":"2007-03-26T02:47:27","slug":"ink-on-my-fingers","status":"publish","type":"post","link":"https:\/\/www.codedread.com\/blog\/archives\/2007\/03\/25\/ink-on-my-fingers\/","title":{"rendered":"Ink On My Fingers"},"content":{"rendered":"<p>I think <a href=\"http:\/\/shaver.off.net\/diary\/\" title=\"Mike Shaver of Mozilla's Blog\">Mike Shaver<\/a> said it best when he stated  (in a podcast <a href=\"http:\/\/fsoss.senecac.on.ca\/2006\/recordings\/\">here<\/a>) that an Open Source project should do its best to let willing contributors get in and get out quickly.  As a busy father, husband, home owner, and engineer - I don't have a lot of time to contribute to open source projects, so when I do have <em>some<\/em> time, I'd like my efforts to count.  Ideally, it's best if I can find a bug to fix that will directly impact the user experience (as opposed to changing some software plumbing underneath that doesn't have any immediate user impact).  In other words, as a part time contributor with not a lot of time to invest, I want my efforts to have some immediate visible benefit.<\/p>\n<p>Furthermore, it's best to pick bugs (at least initially) that don't require full-scale immersions into software architectures to figure out the root of the problem.  This <del>would<\/del>will likely change <del>if<\/del>as more time is spent working with such projects.<\/p>\n<p>I just spent a half hour or so fixing a couple minor errors in the Basic tutorial in <a href=\"http:\/\/www.inkscape.org\/\">Inkscape<\/a>.  I had some back-and-forth conversations with <a href=\"http:\/\/moonbase.rydia.net\/mental\/blog\/\">MenTaLguY<\/a> and <a href=\"http:\/\/www.bryceharrington.org\/\">Bryce<\/a> on IRC and mailing lists earlier in the week where I learned that the tutorials, while deployed as <a href=\"http:\/\/www.w3.org\/Graphics\/SVG\/\" title=\"Scalable Vector Graphics\">SVG<\/a>, are actually stored as <a href=\"http:\/\/en.wikipedia.org\/wiki\/Docbook\">DocBook<\/a> format in the <a href=\"http:\/\/subversion.tigris.org\/\" title=\"Subversion Version Control System\">SVN<\/a> repository.  So here's how I did things using my OpenSUSE 10.2 box.<!--more--><\/p>\n<p><script type=\"text\/javascript\" src=\"http:\/\/www.codedread.com\/googleads.js\"><\/script><br \/>\n<script type=\"text\/javascript\" src=\"http:\/\/pagead2.googlesyndication.com\/pagead\/show_ads.js\"><\/script><\/p>\n<h3>A Caveat<\/h3>\n<p>But first, a <strong>caveat<\/strong>:  I have yet to successfully delve in the code of Inkscape using OpenSUSE 10.2.  I was able to get the latest source, I ensured I have all the libraries installed (as per YaST), and I was able to successfully make and install the trunk source.  But upon running the trunk binary, it crashes.  At this time, I haven't been able to learn how to debug this sufficiently (my gdb experience is very minimal).  So for now, I'm stuck doing some doc updates until I can spend more time on this and figure out which library dependency (presumably) is causing the problem.  So far, that's my biggest contention with the Inkscape development project - too many dependencies on libraries.<\/p>\n<p>As always, if someone has a clue how to help me out of this pickle, please comment or send me an email.  And yes, I've been to <a href=\"http:\/\/wiki.inkscape.org\/wiki\/index.php\/CompilingSuse\">this page<\/a>.<\/p>\n<h3>Check Out the Inkscape Documentation<\/h3>\n<p>First, make sure you check out the latest Inkscape documentation project trunk node.  Note that this is a different folder than the Inkscape application project as described <a href=\"http:\/\/wiki.inkscape.org\/wiki\/index.php\/Working_with_SVN\">here<\/a>.<\/p>\n<p>For this step, you will need to have Subversion installed.  The easiest way to do this is through Yast > Software Management.<\/p>\n<p>Next, create a folder for the Inkscape Documentation project and from that folder, execute the following command:<\/p>\n<div class=\"code\">$ svn co http:\/\/inkscape.svn.sourceforge.net\/svnroot\/inkscape\/doc-docbook\/trunk<\/div>\n<h3>Get The Right Version Of Saxon<\/h3>\n<p>The latest version of the <a href=\"http:\/\/saxon.sourceforge.net\/\">Saxon XSLT and XQuery Processor<\/a> is 8.9 (available through YaST), but for some reason Inkscape Documentation requires Saxon 6.5.3.<\/p>\n<ul>\n<li>Go to <a href=\"http:\/\/saxon.sourceforge.net\/#F6.5.3\">http:\/\/saxon.sourceforge.net\/#F6.5.3<\/a> and download the Saxon 6.5.3 zip file.<\/li>\n<li>Unzip the file somewhere.  Find the files saxon.jar and saxon-jdom.jar in the top level of this zip.<\/li>\n<li>Copy these files to \/usr\/share\/java\/ but make sure you rename them so they don't overwrite any existing Saxon jar files.  This will require you to be root:\n<div class=\"code\">\n  # cp saxon.jar \/usr\/share\/java\/saxon-6.5.3.jar<br \/>\n  # cp saxon-jdom.jar \/usr\/share\/java\/saxon-6.5.3-jdom.jar\n<\/div>\n<\/li>\n<\/ul>\n<p><script type=\"text\/javascript\" src=\"http:\/\/www.codedread.com\/googleads.js\"><\/script><br \/>\n<script type=\"text\/javascript\" src=\"http:\/\/pagead2.googlesyndication.com\/pagead\/show_ads.js\"><\/script><\/p>\n<h3>Install Inkscape<\/h3>\n<p>If you don't have a working copy of Inkscape installed, then go to YaST > Software Management, find Inkscape and install it.  From the command-line you can find out where the inkscape binary is installed by typing:<\/p>\n<div>$ which inkscape<\/div>\n<p>Mine was installed at <i>\/opt\/gnome\/bin\/inkscape<\/i>.<\/p>\n<h3>Build DocBook into SVG<\/h3>\n<p>Now test out building the DocBook XML files files into SVG:<\/p>\n<ul>\n<li>Go to the top-level of the Inkscape Documentation Project repository that you checked out.  This is the folder with all the make-svg, make-html scripts in it.<\/li>\n<li>Type the following command:\n<div class=\"code\">.\/make-svg basic \/usr\/share\/java\/saxon-6.5.3.jar \/opt\/gnome\/bin\/inkscape<\/div>\n<p>NOTE: Substitute the location of the Inkscape binary for your own, if it differs<\/p>\n<\/li>\n<\/ul>\n<p>This should create the basic\/tutorial-basic.svg file.<\/p>\n<h3>Fix A Bug In The Tutorials<\/h3>\n<p>(Exercise left to reader.  Go look at basic\/tutorial-basic.xml to get familiar with the DocBook format.  Find an easy bug on the <a href=\"http:\/\/sourceforge.net\/tracker\/?group_id=93438&atid=604306\">Bug Tracker<\/a>)<\/p>\n<h3>Submit Your Patch<\/h3>\n<p>Once you've made your updates, built the SVG, and verified that it looks good, you can make a patch and submit it to the Patch Tracker:<\/p>\n<ul>\n<li>Make a patch file (for this example, let's assume you've updated basic\/tutorial-basic.xml):\n<div class=\"code\">$ svn diff basic\/tutorial-basic.xml > \/tmp\/my-patch-file.txt<\/div>\n<\/li>\n<li>Upload patch (<i>\/tmp\/my-patch-file.txt<\/i>) to the Inkscape <a href=\"http:\/\/sourceforge.net\/tracker\/?group_id=93438&atid=604308\">Patch Tracker<\/a><\/li>\n<li>Inform the <a href=\"http:\/\/www.inkscape.org\/mailing_lists.php?lang=en\">inkscape-devel mailing list<\/a><\/li>\n<\/ul>\n<p><script type=\"text\/javascript\" src=\"http:\/\/www.codedread.com\/googleads.js\"><\/script><br \/>\n<script type=\"text\/javascript\" src=\"http:\/\/pagead2.googlesyndication.com\/pagead\/show_ads.js\"><\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I think Mike Shaver said it best when he stated (in a podcast here) that an Open Source project should do its best to let willing contributors get in and get out quickly. As a busy father, husband, home owner, and engineer &#8211; I don&#8217;t have a lot of time to contribute to open source [&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[25,46,11,14],"tags":[103],"class_list":["post-349","post","type-post","status-publish","format-standard","hentry","category-software","category-svg","category-technology","category-tips","tag-inkscape"],"_links":{"self":[{"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/posts\/349","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/comments?post=349"}],"version-history":[{"count":0,"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/posts\/349\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/media?parent=349"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/categories?post=349"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/tags?post=349"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}