<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.inkscape.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Shlomif</id>
	<title>Inkscape Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.inkscape.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Shlomif"/>
	<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/Special:Contributions/Shlomif"/>
	<updated>2026-05-01T09:56:39Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=User:Shlomif&amp;diff=104941</id>
		<title>User:Shlomif</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=User:Shlomif&amp;diff=104941"/>
		<updated>2017-03-26T07:17:00Z</updated>

		<summary type="html">&lt;p&gt;Shlomif: Add some rudimentary info and links.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;My name is Shlomi Fish. Here are some links for more information about me:&lt;br /&gt;
&lt;br /&gt;
* [http://www.shlomifish.org/ Shlomi Fish's Homepage]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/User:Shlomif User page on the English wikipedia] - with links to user pages on other wikis.&lt;br /&gt;
* [http://www.shlomifish.org/me/contact-me/ Contact Information]&lt;/div&gt;</summary>
		<author><name>Shlomif</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=How_to_start_a_page&amp;diff=104936</id>
		<title>How to start a page</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=How_to_start_a_page&amp;diff=104936"/>
		<updated>2017-03-26T07:09:25Z</updated>

		<summary type="html">&lt;p&gt;Shlomif: add the info about the account creation.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Other languages|en=How to start a page}}&lt;br /&gt;
&lt;br /&gt;
First of all note that you need to have an Inkscape Wiki account opened for you. To do so, post an E-mail message to the [https://inkscape.org/en/community/mailing-lists/#inkscape-devel inkscape-devel mailing list] requesting such an account.&lt;br /&gt;
&lt;br /&gt;
There are two basic ways to start a Wiki page:&lt;br /&gt;
#As you're reading through already-existing articles, you'll see question marks that are clickable links.  You can click on a &amp;quot;?&amp;quot; link that appears after an article title, and you'll arrive at a page that says &amp;quot;Describe the new page here.&amp;quot;  Just delete that text and replace it with the text of your article.  When you're finished, click the &amp;quot;Save&amp;quot; button at the bottom of the page.  (Use the &amp;quot;[[Preview]]&amp;quot; button if you want to see what the page will look like first.) -- Modifying arbitrary pages by adding/wikifying a new term and then adding a well-written entry linked from that page are a great way to continually add new topics to the site.&lt;br /&gt;
#If you want to create a brand-new topic, probably the first thing to do is to use the &amp;quot;search&amp;quot; form (see the bottom of this page, for example) and see whether someone has not already created some very similar page.  If not, you can find some related topic, edit ''that'' page, and (in an appropriate place) add the title of the article you want to create between double brackets, &amp;lt;nowiki&amp;gt;[[like this]]&amp;lt;/nowiki&amp;gt;.  Then press the &amp;quot;save&amp;quot; button at the bottom of the page.  On the page you just edited, you should see a clickable &amp;quot;?&amp;quot;; click on that and go to work on your new page! -- &lt;br /&gt;
Some thoughts:&lt;br /&gt;
* This is a '''MediaWiki wiki'''&amp;amp;nbsp;— it allows use of spaces in wikilinks, so '''use of CamelCase to create links is not needed or desirable'''.  New article (page) titles should use sentence-case, i.e., capitalise the first word in the title and leave the rest lowercase, unless certain words in the title are proper nouns.  Wikilinks in articles are created by enclosing a word or set of words with '''&amp;lt;nowiki&amp;gt;[[nested brackets]]&amp;lt;/nowiki&amp;gt;'''.  If you find a wikilink to a non-existent article that uses CamelCase run-together text, correct the link in that article according to these conventions before creating the new target article.&lt;br /&gt;
* If you like, you can enter just a line or two of text for an entry.  It's a start.  Full-blown articles are not required.  Adding any (accurate, helpful) information is welcome!  Of course, if you can write more, that's all the better; some people do, as a matter of habit, usually write more than just a few lines when they start a new article.&lt;br /&gt;
* How you word your articles will determine, to some extent, how likely it is other people will work on it.  Examples:&lt;br /&gt;
**An article that leaves many intriguing-sounding links or leaves ellipses (...), etc., might invite other know-it-alls to fill in the blanks.&lt;br /&gt;
**Straightforward requests for information in an article can lead to good articles.  For example, one might supply a rough description of a thing or place and then ask about its history; some people who know the answer will find it difficult to pass up the opportunity to teach.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
This article is an edited version of one by the same name from [http://www.wikipedia.com Wikipedia.com], reusable under the terms of the [http://www.gnu.org/copyleft/fdl.html GNU Free Documentation License].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:User Documentation]]&lt;/div&gt;</summary>
		<author><name>Shlomif</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=AnnouncePlanning092&amp;diff=103771</id>
		<title>AnnouncePlanning092</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=AnnouncePlanning092&amp;diff=103771"/>
		<updated>2017-01-03T20:42:04Z</updated>

		<summary type="html">&lt;p&gt;Shlomif: Fixed tense.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TODO:&lt;br /&gt;
* (DONE) Merge in AnnouncePlanning091 as template&lt;br /&gt;
* (DONE) Copyedit this page to change 0.91 to 0.92&lt;br /&gt;
* Copyedit this page to trim out stuff that doesn't need done, and add todo's where appropriate&lt;br /&gt;
* (DONE) Add need for screenshots, graphics, etc.&lt;br /&gt;
* (DONE) List pages in the site that will need updating:  News entry, Downloads, Screenshots, ...&lt;br /&gt;
* Add more news sites to notify&lt;br /&gt;
* Add a Slashdot Blurb, using the 0.91 (or 0.47) posting as a starting point&lt;br /&gt;
* Perform the tasks listed below&lt;br /&gt;
&lt;br /&gt;
This announce planning page is based on [[AnnouncePlanning047]] - What you see below has been copied from there and edited.  Refer to the [[Release notes/0.92]] for details on what's new, different and improved.&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Task || Performer ||Projected Date of completion || Status &lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot;| '''Write PR texts'''&lt;br /&gt;
|- style=&amp;quot;background:#eeeeee;&amp;quot;&lt;br /&gt;
| Informal PR text - DRAFT&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 0%&lt;br /&gt;
|- style=&amp;quot;background:#eeeeee;&amp;quot;&lt;br /&gt;
| Informal PR text&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 0%&lt;br /&gt;
|- style=&amp;quot;background:#eeeeee;&amp;quot;&lt;br /&gt;
| Translated Informal PR text&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 0%&lt;br /&gt;
|- style=&amp;quot;background:#dddddd;&amp;quot;&lt;br /&gt;
| Formal PR text - DRAFT&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 0%&lt;br /&gt;
|- style=&amp;quot;background:#eeeeee;&amp;quot;&lt;br /&gt;
| Make 2 or 3 official screenshots that demonstrate new features. Use as attachments for formal PR texts - if not done: use new [https://inkscape.org/~artelnjeru01/%E2%98%85about-092-2-good About Screen ], [http://www.inkscapeforum.com/viewtopic.php?f=21&amp;amp;t=31053 here] are a couple of images that could be used).&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 0%&lt;br /&gt;
|- style=&amp;quot;background:#dddddd;&amp;quot;&lt;br /&gt;
| Formal PR text&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 0%&lt;br /&gt;
|- style=&amp;quot;background:#dddddd;&amp;quot;&lt;br /&gt;
| Translate Formal PR text&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 0%&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot;| '''Spread PR'''&lt;br /&gt;
|-&lt;br /&gt;
| Update and add new Contacts &amp;amp; Sources on this Wiki page&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 0%&lt;br /&gt;
|-&lt;br /&gt;
| Contact Contacts &amp;amp; Sources on this Wiki page&lt;br /&gt;
| See below for people who will contact news sites, lists etc.&lt;br /&gt;
| &lt;br /&gt;
| 0%&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot;| '''Update website'''&lt;br /&gt;
|- style=&amp;quot;background:#eeeeee;&amp;quot;&lt;br /&gt;
| Add News article to Inkscape website&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0%&lt;br /&gt;
|- style=&amp;quot;background:#eeeeee;&amp;quot;&lt;br /&gt;
| Update all pages in Downloads menu (also add a special note to the OS X downloads page about unavailability of 0.92, and how to contribute)&lt;br /&gt;
| Uploaders, Maren&lt;br /&gt;
|&lt;br /&gt;
| 0%&lt;br /&gt;
|- style=&amp;quot;background:#eeeeee;&amp;quot;&lt;br /&gt;
| Update The Next Release Page&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0%&lt;br /&gt;
|- style=&amp;quot;background:#eeeeee;&amp;quot;&lt;br /&gt;
| Review FAQ and add important items (units conversion, dialogs minimized bug, font manager bug, missing OS X version)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0%&lt;br /&gt;
|- style=&amp;quot;background:#eeeeee;&amp;quot;&lt;br /&gt;
| Add screenshot with mesh gradient to screenshots page&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0%&lt;br /&gt;
|- style=&amp;quot;background:#eeeeee;&amp;quot;&lt;br /&gt;
| Update docs repository to show docs for 0.92 per default&lt;br /&gt;
| jazzynico&lt;br /&gt;
|&lt;br /&gt;
| 0%&lt;br /&gt;
|- style=&amp;quot;background:#eeeeee;&amp;quot;&lt;br /&gt;
| Update Learn -&amp;gt; Books to link to new keyboard shortcut list&lt;br /&gt;
| Maren&lt;br /&gt;
|&lt;br /&gt;
| 0%&lt;br /&gt;
|- style=&amp;quot;background:#eeeeee;&amp;quot;&lt;br /&gt;
| Optional: review Features page and add a couple of new ones.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| 0%&lt;br /&gt;
|- style=&amp;quot;background:#eeeeee;&amp;quot;&lt;br /&gt;
| Translate website changes (needs not be complete for release, priority: news, downloads pages)&lt;br /&gt;
| Website translators&lt;br /&gt;
|&lt;br /&gt;
| 0%&lt;br /&gt;
|- style=&amp;quot;background:#eeeeee;&amp;quot;&lt;br /&gt;
| Unpublish outdated downloads pages for orphaned languages&lt;br /&gt;
| Maren&lt;br /&gt;
|&lt;br /&gt;
| 0%&lt;br /&gt;
|- style=&amp;quot;background:#eeeeee;&amp;quot;&lt;br /&gt;
| Update images in the front shield&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 0%&lt;br /&gt;
|- style=&amp;quot;background:#eeeeee;&amp;quot;&lt;br /&gt;
| Add current release into the releases db&lt;br /&gt;
| Maren&lt;br /&gt;
|&lt;br /&gt;
| 0%&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Announcement Process=&lt;br /&gt;
# Create News posts (using the small overview below) on all the relevant social sites: reddit, twitter, facebook, Google+, hacker news, slashdot, etc.&lt;br /&gt;
# Create a new Page on the Inkscape website that has the Formal Announcement on it (for linking purposes) have links back to the social bookmarking stories for the release.&lt;br /&gt;
# Post the official announcement to the Inkscape News on the website, and on all the relevant Inkscape lists (eg. announce, user, developer)&lt;br /&gt;
# Send out the informal announcement (include a link to the web page with the formal announcement)&lt;br /&gt;
# Send out the formal announcement. (include a link to the web page with the formal announcement)&lt;br /&gt;
&lt;br /&gt;
=Press Release Translations=&lt;br /&gt;
Once the English Press Release text has been finalized, translation can start into other languages. &lt;br /&gt;
&lt;br /&gt;
The current goal for this PR text is to have the English version finished by [DATE TO BE DETERMINED].&lt;br /&gt;
&lt;br /&gt;
Please Create a new Wiki page for planning / translating the 0.92 PR in your language here:&lt;br /&gt;
* [[Inkscape092-PRannounce-fr]]&lt;br /&gt;
* [[Inkscape092-PRannounce-de]]&lt;br /&gt;
* [[Inkscape092-PRannounce-es]]&lt;br /&gt;
* [[Inkscape092-PRannounce-pt]]&lt;br /&gt;
* [[Inkscape092-PRannounce-zh]]&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
=Press Release Text=&lt;br /&gt;
== Brief Overview ==&lt;br /&gt;
The Inkscape project announces a new version 0.92 of its popular vector drawing software.  This release adds mesh gradients, improves SVG2 and CSS3 support, new path effects, and a whole host of other features, updates, and bug fixes.  Inkscape is free, open source software available to everyone in the world.&lt;br /&gt;
&lt;br /&gt;
Details:      http://wiki.inkscape.org/wiki/index.php/Release_notes/0.92&lt;br /&gt;
&lt;br /&gt;
Screenshots:  http://inkscape.org/screenshots/&lt;br /&gt;
&lt;br /&gt;
Download:     http://inkscape.org/download/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- PLEASE, please, can you also mention the unit change? It's the first thing users will see when they open their old documents with the new Inkscape, and the help texts aren't too helpful for non-tech-savvy users. Even I am not sure which method I should select in which case... --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Informal Announcement Text ==&lt;br /&gt;
&lt;br /&gt;
Inkscape Version 0.92 is Released!&lt;br /&gt;
&lt;br /&gt;
The Inkscape project announces a new version 0.92 of its popular vector drawing software.  New features include mesh gradients, improved SVG2 and CSS3 support, new path effects, interactive smoothing for the pencil tool, a new Object dialog for directly managing all drawing elements, and much more.  Infrastructural changes are also under way, including a switch to CMake from the venerable Autotools build system.&lt;br /&gt;
&lt;br /&gt;
Mesh gradients are a powerful tool enabling artists to more easily create photo-realistic drawings - a feature we would love to see made part of the W3C's Scalable Vector Graphics (SVG) standard; if you find this feature as cool as we do, please request that your favorite web browser adopts support for it too!  Inkscape works closely with the SVG standards committee, and thanks to our many generous donors the Inkscape project sponsors an engineering representative to attend SVG working group meetings over the past few years; a welcome outcome of this participation is the improvement and addition of over a dozen SVG and CSS properties, such as paint-order, white-space, and mix-blend-mode.&lt;br /&gt;
&lt;br /&gt;
Live Path Effects are proving to be a vibrant ecosystem in the Inkscape project, and many innovative new ideas have been percolating over the past couple years since our last release.  Spiro Live, BSpline, and Roughen essentially provide new drawing modes.  The Simplify LPE cleans up vector elements non-destructively by smoothing paths, shapes, groups, clips, and masks.  Perspective/Envelope and Lattice Deformation 2 enable artists to interactively deform/transform drawing elements.  Other new features enable interactive mirroring, interactive rotation of copies along an arc or circle, and dozens of other additions and enhancements.&lt;br /&gt;
&lt;br /&gt;
All software must evolve with the times, and Inkscape is no different.  To maintain consistency with the CSS standard, Inkscape's default resolution has changed from 90dpi to 96dpi; Inkscape will detect files created with previous versions and offer to convert them.  A number of infrastructural changes are in process to help Inkscape keep up with progress.  For 0.92 we are changing to the CMake build system, which builds faster and is easier for developers to work with.  (Future infrastructure changes include switching from bzr to git, shifting from Gtk2 to Gtk3, and moving to the C++11 standard.)&lt;br /&gt;
&lt;br /&gt;
The above barely scratches the surface of all the new stuff included in this release. For the full story, including examples, screenshots, and videos, please see our detailed Release Notes:&lt;br /&gt;
http://wiki.inkscape.org/wiki/index.php/Release_notes/0.92&lt;br /&gt;
&lt;br /&gt;
Installation packages are available for Linux and Windows.  If you're on Linux, you'll soon be able to install it from your distribution via normal methods.  If on Windows, we have a set of packages that we hope will let you maximize performance on your platform.  For Mac OS X, no packages are available -- our old (X11/XQuartz) packaging was long overdue to be updated to current standards and is no longer being maintained.&lt;br /&gt;
&lt;br /&gt;
The Inkscape Project thrives due to your support.  We are a volunteer-driven community build from thousands of contributions of time, skill, and funds, to create a powerful open source tool that is made available for free to everyone in the world.  We invite you to join our community and participate in helping advance Inkscape towards new objectives.  Come help us chart out the new directions that Inkscape needs to take.  Inkscape is created *by* the community *for* the community.&lt;br /&gt;
&lt;br /&gt;
Your donations also help further Inkscape's mission.  You can donate to Inkscape's general fund, or target your donation to support our SVG Standards work or Hackfests.  &lt;br /&gt;
&lt;br /&gt;
Join Inkscape at: https://inkscape.org/en/community/&lt;br /&gt;
Become a donor at: https://inkscape.org/en/support-us/&lt;br /&gt;
Download Inkscape at: https://inkscape.org/download/&lt;br /&gt;
&lt;br /&gt;
== Formal Announcement Text ==&lt;br /&gt;
&lt;br /&gt;
==== The Inkscape Community Releases Inkscape 0.92 ====&lt;br /&gt;
&lt;br /&gt;
New York, NY, [RELEASE DATE] -- The Inkscape community announces the release of Inkscape 0.92. Inkscape is a multi-platform, Open-Source Vector Graphics Editor that uses &amp;lt;span class=&amp;quot;fileformat&amp;quot;&amp;gt;SVG&amp;lt;/span&amp;gt; as its native file format. Digital artists use it to produce professional quality work. Engineers and scientists use it to create clear drawings to explain their ideas. Everyday people use it to create simple drawings, develop their design skills, and just have fun. This new version features ...[INSERT MAIN FEATURES HERE].&lt;br /&gt;
&lt;br /&gt;
This newest Inkscape release includes a wealth of new tools and improvements developed over the past year, [SHORTENED RELEASE CYCLE :)]. &lt;br /&gt;
&lt;br /&gt;
[NEW FEATURES IN DETAIL WITH A COOL USAGE EXAMPLE GO HERE]&lt;br /&gt;
&lt;br /&gt;
[MUCH OF THE WORK HAS BEEN IN THE BACKGROUND, TO SET INKSCAPE DEVELOPMENT UP FOR THE FUTURE (C++11, CMAKE)]&lt;br /&gt;
&lt;br /&gt;
With 0.92 out the door, the Inkscape community is already working on the upcoming 0.92, which [RELEASE FOCUS].  Future releases will focus on stabilization in preparation for a 1.0 version release.&lt;br /&gt;
&lt;br /&gt;
For a complete list of new and improved features see the 0.92 Release Notes: http://wiki.inkscape.org/wiki/index.php/Release_notes/0.92&lt;br /&gt;
&lt;br /&gt;
[PLANS FOR A HACKFEST, MAYBE? CALL FOR GENERAL DONATIONS, HELP SPREADING MESH USAGE, PROJECT PARTICIPATION, BUYING IN THE SHOP? HELP PROVIDING AN OS X VERSION]&lt;br /&gt;
&lt;br /&gt;
The new version of Inkscape for Windows and Linux can be obtained from Inkscape's download page: https://inkscape.org/download/.&lt;br /&gt;
&lt;br /&gt;
==== About Inkscape ====&lt;br /&gt;
&lt;br /&gt;
Inkscape is an open source drawing tool that uses the World Wide Web Consortium's (W3C) scalable vector graphics format (SVG). Some supported SVG features include basic shapes, paths, text, markers, clones, alpha blending, transforms, gradients, and grouping. In addition, Inkscape supports Creative Commons' metadata, node-editing, layers, complex path operations, text-on-path, text-in-shape, and SVG XML editing. It can also import EPS, PostScript, and most bitmap formats, and exports PNG, PS, PDF and various vector formats. Inkscape's main motivation is to provide the Open Source community with a fully W3C compliant XML, SVG, and CSS3 drawing tool. Additional work includes conversion of the codebase from C/Gtk to C++/Gtkmm, emphasizing a lightweight core with powerful features added through an extension mechanism, and maintaining a friendly, open, community-oriented development process.&lt;br /&gt;
&lt;br /&gt;
=Places to Announce=&lt;br /&gt;
== Receive small overview==&lt;br /&gt;
{|style=&amp;quot;background:#f2f2f2;&amp;quot;&lt;br /&gt;
!style=&amp;quot;text-align:left;background-color:#d3d7cf;width:20%;&amp;quot;|Web Site / Media  &lt;br /&gt;
!style=&amp;quot;text-align:left;background-color:#d3d7cf;width:30%;&amp;quot;|Who will contact / post&lt;br /&gt;
!style=&amp;quot;text-align:left;background-color:#d3d7cf;width:50%;&amp;quot;|Notes...&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|http://reddit.com&lt;br /&gt;
|?&lt;br /&gt;
|someone needs to post a short excerpt announcing the release, and link it to inkscape.org.&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|http://digg.com&lt;br /&gt;
|?&lt;br /&gt;
|someone needs to post a short excerpt announcing the release, and link it to inkscape.org.&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|http://slashdot.org&lt;br /&gt;
|?&lt;br /&gt;
|submit a new news item.&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|http://newsvine.com&lt;br /&gt;
|?&lt;br /&gt;
|submit a new news item.&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|2&lt;br /&gt;
|3&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|&amp;lt;small&amp;gt;(1 Web Site / Media)&amp;lt;/small&amp;gt;&lt;br /&gt;
|&amp;lt;small&amp;gt;(2 Who will contact / post) ~ '''done'''&amp;lt;/small&amp;gt;&lt;br /&gt;
|&amp;lt;small&amp;gt;(3 Notes...)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Receive Informal PR ==&lt;br /&gt;
=== Open Source Community ===&lt;br /&gt;
{|  style=&amp;quot;background:#f2f2f2;&amp;quot;&lt;br /&gt;
!style=&amp;quot;text-align:left;background-color:#d3d7cf;width:20%;&amp;quot;|Contact Name  &lt;br /&gt;
!style=&amp;quot;text-align:left;background-color:#d3d7cf;width:30%;&amp;quot;|Who will contact / post&lt;br /&gt;
!style=&amp;quot;text-align:left;background-color:#d3d7cf;width:50%;&amp;quot;|Notes...&lt;br /&gt;
|- style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|gnome office list&lt;br /&gt;
|?&lt;br /&gt;
|gnome-office-list at gnome dot org&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|svg developers yahoo group&lt;br /&gt;
|?&lt;br /&gt;
|svg-developers at yahoo dot com must join the list to send (rejon is on)&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|cairo list&lt;br /&gt;
|bryce&lt;br /&gt;
|cairo at cairographics dot org&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|gnome-list&lt;br /&gt;
|bryce&lt;br /&gt;
|gnome-announce-list at gnome dot org&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|Scribus Lists&lt;br /&gt;
|bryce&lt;br /&gt;
|see http://lists.scribus.net/mailman/listinfo/scribus-dev and http://lists.scribus.net/mailman/listinfo/scribus&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|osnews.com&lt;br /&gt;
|bryce&lt;br /&gt;
|http://osnews.com/submit.php&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|scale-a-vector&lt;br /&gt;
|bryce&lt;br /&gt;
|kukofka at scale-a-vector dot de http://www.scale-a-vector.de/cont.htm&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|http://dot.kde.org&lt;br /&gt;
| &lt;br /&gt;
|http://dot.kde.org/addPostingForm&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|phoronix.com&lt;br /&gt;
|bryce&lt;br /&gt;
|news@phoronix.com&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Broader Inkscape &amp;amp; Art Community ===&lt;br /&gt;
{|style=&amp;quot;background:#f2f2f2;&amp;quot;&lt;br /&gt;
!style=&amp;quot;text-align:left;background-color:#d3d7cf;width:20%;&amp;quot;|Contact Name  &lt;br /&gt;
!style=&amp;quot;text-align:left;background-color:#d3d7cf;width:30%;&amp;quot;|Who will contact / post?&lt;br /&gt;
!style=&amp;quot;text-align:left;background-color:#d3d7cf;width:50%;&amp;quot;|Notes...&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|Inkscape deviantart group&lt;br /&gt;
|ScislaC?&lt;br /&gt;
|http://inkscape.deviantart.com/&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|the inkscape forum&lt;br /&gt;
|ScislaC / Brynn?&lt;br /&gt;
|http://www.inkscapeforum.com/ run by microUgly&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|inkscape tutorials blog&lt;br /&gt;
|ryan lerch?&lt;br /&gt;
|http://inkscapetutorials.wordpress.com/&lt;br /&gt;
|-&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|open clip art library list&lt;br /&gt;
|&lt;br /&gt;
|clipart@freedesktop.org&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|open clip art library news&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|Inkscape Community (tutorials, forum, gallery)&lt;br /&gt;
|brynn&lt;br /&gt;
|http://forum.inkscapecommunity.com/index.php&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|artdc.org forum&lt;br /&gt;
| &lt;br /&gt;
|http://www.artdc.org/&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|bittbox.com - vector art blog&lt;br /&gt;
|bryce&lt;br /&gt;
|contact(at)bittbox.com&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|The Daily Ubuntu - Daily Ubuntu Applications&lt;br /&gt;
|bryce&lt;br /&gt;
|http://www.contactify.com/35b54&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|Google+ Inkscape&lt;br /&gt;
|Tav?&lt;br /&gt;
|https://plus.google.com/u/0/b/108911244660285152681/+inkscape/posts&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|Twitter Inkscape&lt;br /&gt;
|Scislac?&lt;br /&gt;
|https://twitter.com/inkscape&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|Facebook Inkscape&lt;br /&gt;
|Scislac?&lt;br /&gt;
|https://facebook.com/Inkscape.org/&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Other Inkscape Users ===&lt;br /&gt;
Inkscape is attracting growing numbers of users in different fields such as scrapbooking, craft-makers, fabric designers and people creating a range of technical drawings.  How can we get the word out to these groups?&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;background:#f2f2f2;&amp;quot;&lt;br /&gt;
!style=&amp;quot;text-align:left;background-color:#d3d7cf;width:30%;&amp;quot;|website / magazine / list&lt;br /&gt;
!style=&amp;quot;text-align:left;background-color:#d3d7cf;width:20%;&amp;quot;|Who will contact / post?&lt;br /&gt;
!style=&amp;quot;text-align:left;background-color:#d3d7cf;width:50%;&amp;quot;|Notes...&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|http://www.inkscapecuttingdesign.com/smf/&lt;br /&gt;
|Brynn?&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|http://forum.inkscapecommunity.com/index.php&lt;br /&gt;
|Brynn?&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|http://inkscape-forum.de/&lt;br /&gt;
|Maren&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Receive Formal PR ==&lt;br /&gt;
{|style=&amp;quot;background:#f2f2f2;&amp;quot;&lt;br /&gt;
!style=&amp;quot;text-align:left;background-color:#d3d7cf;width:20%;&amp;quot;|Contact Name  &lt;br /&gt;
!style=&amp;quot;text-align:left;background-color:#d3d7cf;width:30%;&amp;quot;|Who will contact / post?&lt;br /&gt;
!style=&amp;quot;text-align:left;background-color:#d3d7cf;width:50%;&amp;quot;|Notes...&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|http://linuxformat.co.uk/&lt;br /&gt;
|?&lt;br /&gt;
|login and submit news via top of page link&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|http://linux-magazine.com/&lt;br /&gt;
|bryce&lt;br /&gt;
|pr(at)linux - magazine (dot) com&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|http://linuxmagazine.com/&lt;br /&gt;
|?&lt;br /&gt;
|jbrockmeier at linux hyphen mag DOT com.&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|http://cmykmag.com/&lt;br /&gt;
|?&lt;br /&gt;
|&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|http://lwn.net&lt;br /&gt;
|bryce&lt;br /&gt;
|pr@lwn.net&lt;br /&gt;
|-style=&amp;quot;border-bottom:white 2px solid;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
* Smashing Magazine - http://www.smashingmagazine.com/&lt;br /&gt;
* [http://openpr.com openpr] - http://openpr.com/news/submit.html&lt;br /&gt;
* nettime-ann - http://www.nettime.org/&lt;br /&gt;
* See Kansas City infoZine: http://www.infozine.com/news/stories/op/storiesView/sid/5080/&lt;br /&gt;
* http://graphicdesign.about.com&lt;br /&gt;
* http://graphicssoft.about.com&lt;br /&gt;
* http://desktoppublishing.about.com&lt;br /&gt;
&lt;br /&gt;
=== German news sites ===&lt;br /&gt;
&lt;br /&gt;
Release Notes are available in German: &lt;br /&gt;
[[Release_notes/0.92/de]]&lt;br /&gt;
&lt;br /&gt;
These will be contacted by ? &amp;lt;!--[[User:Alexander|Alexander]]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://it-news-blog.org http://it-news-blog.org] contact@manuelziegler.de&lt;br /&gt;
* [http://ubuntunews.de/ http://ubuntunews.de/] impressum@picomol.de&lt;br /&gt;
* [http://winfuture.de/ http://winfuture.de/] Presse@WinFuture.de&lt;br /&gt;
* [http://www.chip.de/ http://www.chip.de/] info@chip.de&lt;br /&gt;
* [http://www.com-magazin.de/ http://www.com-magazin.de/] redaktion@com-magazin.de&lt;br /&gt;
* [http://www.dpa.de/ http://www.dpa.de/] presse@dpa.com&lt;br /&gt;
* [http://www.faz.net/ http://www.faz.net/] Info@faz.net&lt;br /&gt;
* http://www.geektown.de vs.impressum@googlemail.com&lt;br /&gt;
* [http://www.golem.de/sonstiges/impressum.html http://www.golem.de/sonstiges/impressum.html], press@golem.de&lt;br /&gt;
* [http://www.gulli.com http://www.gulli.com] news@gulli.com&lt;br /&gt;
* [http://www.heise.de/kontakt/ http://www.heise.de/kontakt/]&lt;br /&gt;
* [http://www.itespresso.de/ http://www.itespresso.de/] redaktion@netmediaeurope.com&lt;br /&gt;
* [http://www.it-times.de/kontakt/ http://www.it-times.de/kontakt/]&lt;br /&gt;
* [http://www.linux-community.de/ http://www.linux-community.de/] redaktion@linux-community.de&lt;br /&gt;
* [http://www.linux-magazin.de/ http://www.linux-magazin.de/] redaktion@linux-magazin.de&lt;br /&gt;
* [http://www.netzwelt.de/ http://www.netzwelt.de/] info@netzwelt.de &lt;br /&gt;
* [http://www.pc-magazin.de/ http://www.pc-magazin.de/] redaktion@pc-magazin.de&lt;br /&gt;
* [http://www.pcwelt.de/ http://www.pcwelt.de/] pressemitteilung@pcwelt.de&lt;br /&gt;
* [http://www.pro-linux.de/news/10/1/news-mitteilen.html http://www.pro-linux.de/news/10/1/news-mitteilen.html] (nur reinkopieren ins Formular) und&lt;br /&gt;
* [http://www.t-online.de/ http://www.t-online.de/] impressum@telekom.de&lt;br /&gt;
* [http://www.zdnet.de/ http://www.zdnet.de/] de-presse@netmediaeurope.com&lt;br /&gt;
&lt;br /&gt;
=== French websites ===&lt;br /&gt;
&lt;br /&gt;
These will be contacted by ? :&lt;br /&gt;
&lt;br /&gt;
* [http://www.linuxgraphic.org/wp/ http://www.linuxgraphic.org/wp/], [http://www.linuxgraphic.org/wp/proposition-darticle/]&lt;br /&gt;
* [http://afgral.org/ http://afgral.org/], contact.afgral@gmail...&lt;br /&gt;
* [http://linuxfr.org/ http://linuxfr.org/]&lt;br /&gt;
* [http://www.01net.com/ http://www.01net.com/]&lt;br /&gt;
* [http://www.linformaticien.com/ http://www.linformaticien.com/]&lt;br /&gt;
* [http://www.clubic.com/ http://www.clubic.com/]&lt;br /&gt;
* [http://korben.info/ http://korben.info/]&lt;br /&gt;
* [http://owni.fr/ http://owni.fr/]&lt;br /&gt;
* [http://www.zdnet.fr/ http://www.zdnet.fr/]&lt;br /&gt;
* [https://framasoft.org/ framasoft]&lt;br /&gt;
&lt;br /&gt;
=== Reactions ===&lt;br /&gt;
&lt;br /&gt;
==== en ====&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
==== de ==== &lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
==== fr ====&lt;br /&gt;
* ...&lt;/div&gt;</summary>
		<author><name>Shlomif</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Compiling_Inkscape_on_Windows_32-bit&amp;diff=99951</id>
		<title>Compiling Inkscape on Windows 32-bit</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Compiling_Inkscape_on_Windows_32-bit&amp;diff=99951"/>
		<updated>2016-06-07T07:13:55Z</updated>

		<summary type="html">&lt;p&gt;Shlomif: Correct some typos - thanks to mathog&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''For 64 bit: see [[Compiling Inkscape on Windows 64-bit]]'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Inkscape was originally written for Linux, but it has been ported to other platforms, including Windows. Since Windows is not POSIX compliant and doesn't have several features useful to developers (like package management), compiling Inkscape on Windows is more tedious than on Linux, but perfectly possible. To make it easier, we have compiled a package that contains all the libraries you need to build Inkscape. This reduces the effort of compiling Inkscape to: download and install 3 programs, download library package, download sourcecode, and you are ready to go.&lt;br /&gt;
&lt;br /&gt;
==Setting up the build environment==&lt;br /&gt;
&lt;br /&gt;
To develop Inkscape, you will need the following things:&lt;br /&gt;
&lt;br /&gt;
* [http://wiki.bazaar.canonical.com/WindowsDownloads Bazaar]&lt;br /&gt;
* [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html PuTTY] programs: puttygen.exe and pageant.exe&lt;br /&gt;
* TDM's GCC (MingW): Please use exactly the [http://sourceforge.net/projects/tdm-gcc/files/TDM-GCC%20Installer/Previous/1.1006.0/tdm-gcc-4.6.1.exe/download  version 4.6.1 32bit bundle installer] and follow the instructions below. In the setup, '''Uncheck''' the [''Check for updated files on the TDM-GCC server''] when installing, or it will install a newer version. Newer versions (tdm-gcc-4.7+) introduce important changes in gcc and don't work with the current Inkscape devlibs (see the [http://old.nabble.com/Compiling-on-Windows-7-x64-td34601489.html discussion on the developers' list]).&lt;br /&gt;
* Launchpad account&lt;br /&gt;
&lt;br /&gt;
In order to build the installer (not needed for most developers):&lt;br /&gt;
* [http://wixtoolset.org Windows Installer XML Toolset] for rencent msi builds&lt;br /&gt;
* [http://sourceforge.net/projects/nsis/files/NSIS%202/2.46/nsis-2.46-setup.exe/download NSIS 2.46]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Install the compiler===&lt;br /&gt;
Run the TDM-MinGW installer:&lt;br /&gt;
# Install in a path that doesn't contain spaces. The path 'C:\mingw' is ideal beacuse it is currently set in the &amp;lt;tt&amp;gt;mingwenv.bat&amp;lt;/tt&amp;gt; file (along with the location of devlibs).&lt;br /&gt;
#* TDM-MinGW's default install option may be to a different location. You will have to edit the &amp;lt;tt&amp;gt;mingwenv.bat&amp;lt;/tt&amp;gt; file to point there.&lt;br /&gt;
#* If you install it into another path, set the environment variable MINGW_PATH to the TDM-MinGW installation directory, e.g. the one containing &amp;lt;tt&amp;gt;README-tdm-gcc.txt&amp;lt;/tt&amp;gt; (right click My Computer -&amp;gt; Properties -&amp;gt; Advanced -&amp;gt; Environment Variables).&lt;br /&gt;
# Be sure to enable the &amp;quot;GCC -&amp;gt; openmp support&amp;quot; checkbox from the components list&lt;br /&gt;
&lt;br /&gt;
===Create your Launchpad account===&lt;br /&gt;
You can skip this step (or do it later) if you just want to download the sources, but not submit your changes.&lt;br /&gt;
&lt;br /&gt;
If you do not have an SSH public/private key pair to identify yourself:&lt;br /&gt;
*run the program puttygen.exe to generate an SSH key&lt;br /&gt;
*save both its parts.&lt;br /&gt;
Log into your Launchpad account, go to your profile page and add the public part of the generated key to the list of SSH keys. Run the program pageant.exe (you can add it to Autorun). A tray icon should appear. Right click it, select &amp;quot;Add Key&amp;quot; and pick the private key file you have just generated from the dialog. Note that you need to repeat this after every login whenever you want to access Launchpad.&lt;br /&gt;
&lt;br /&gt;
Now set up Bazaar. First tell it who you are, then associate with your Launchpad account. You need to use the account name (e.g. johnq), not the display name.(John Q. Public).&lt;br /&gt;
&lt;br /&gt;
 C:\&amp;gt; bzr whoami &amp;quot;''Your Name'' &amp;lt;''your_real_email@example.com''&amp;gt;&amp;quot;&lt;br /&gt;
 C:\&amp;gt; bzr launchpad-login ''your_launchpad_account''&lt;br /&gt;
&lt;br /&gt;
===Install the developer libraries===&lt;br /&gt;
Check out Inkscape Devlibs into C:\devlibs. If you check them out elsewhere, set the environment variable DEVLIBS_PATH to the path where they are. Devlibs are a bundle of all the libraries needed to compile Inkscape. If you experience any problems, make sure you have an up to date copy of those libraries and an up to date checkout of Inkscape source. To reduce the size of the download, pass the &amp;lt;tt&amp;gt;--lightweight&amp;lt;/tt&amp;gt; parameter.&lt;br /&gt;
&lt;br /&gt;
 C:\&amp;gt; bzr checkout --lightweight lp:inkscape-devlibs devlibs&lt;br /&gt;
&lt;br /&gt;
To update devlibs:&lt;br /&gt;
&lt;br /&gt;
 C:\devlibs&amp;gt; bzr update&lt;br /&gt;
&lt;br /&gt;
All Inkscape developers can commit to the devlibs trunk. Advanced information about Devlibs, mainy useful when you want to update them to newly released versions of upstream libraries, is available here: [[Inkscape Devlibs]].&lt;br /&gt;
You can see some infomation from [https://launchpad.net/inkscape-devlibs launchpad:inkscape-devlibs] and [http://bazaar.launchpad.net/~inkscape.dev/inkscape-devlibs/trunk/files trunk/files].&lt;br /&gt;
&lt;br /&gt;
== Obtaining Inkscape source code ==&lt;br /&gt;
&lt;br /&gt;
You can obtain released Inkscape source from a tarball. Since version 0.47 they are hosted on [https://launchpad.net/inkscape Inkscape's Launchpad page]. There are ready-made installers provided, so there's usually little reason to compile the stable version yourself.&lt;br /&gt;
&lt;br /&gt;
To obtain cutting edge code, check out Inkscape source from the Bazaar repository. You can also use the TortoiseBZR shell extensions to do this. The recommended way is to first create a shared repository, then check out the Inkscape branch into that shared repository. Using this setup, branching will be a lot faster.&lt;br /&gt;
&lt;br /&gt;
 C:\src\inkscape&amp;gt; bzr init-repo --rich-root .&lt;br /&gt;
 C:\src\inkscape&amp;gt; bzr upgrade&lt;br /&gt;
 C:\src\inkscape&amp;gt; bzr checkout lp:inkscape trunk&lt;br /&gt;
&lt;br /&gt;
If you don't want to create any branches, you can skip the shared repository step.&lt;br /&gt;
&lt;br /&gt;
 C:\src&amp;gt; bzr checkout lp:inkscape&lt;br /&gt;
&lt;br /&gt;
'''IMPORTANT:''' make sure that the path to your Inkscape source checkout does not contain spaces. Unix tools do not like them and you will end up with a lot of error messages about missing files.&lt;br /&gt;
&lt;br /&gt;
== Set Environmental Variables ==&lt;br /&gt;
&lt;br /&gt;
First set up the environmental variables. You need to run mingwenv once per console session like this: &lt;br /&gt;
 C:\src\inkscape\trunk&amp;gt; mingwenv&lt;br /&gt;
Or you can set the paths in the Windows system settings. Go to (Win 7):&lt;br /&gt;
&lt;br /&gt;
Start-&amp;gt;Control Panel -&amp;gt;System and Security-&amp;gt;System-&amp;gt;Advanced system settings-&amp;gt;Advanced-&amp;gt;Environment variables-&amp;gt;System variables-&amp;gt;New.&lt;br /&gt;
Add these variable names and values:&amp;lt;br&amp;gt;&lt;br /&gt;
DEVLIBS_PATH c:\devlibs&amp;lt;br&amp;gt;&lt;br /&gt;
MINGW_PATH c:\mingw&amp;lt;br&amp;gt;&lt;br /&gt;
MINGW_BIN c:\mingw\bin&amp;lt;br&amp;gt;&lt;br /&gt;
PKG_CONFIG_PATH c:\devlibs \lib\pkgconfig&amp;lt;br&amp;gt;&lt;br /&gt;
CMAKE_PREFIX_PATH c:\devlibs&amp;lt;br&amp;gt;&lt;br /&gt;
GTKMM_BASEPATH c:\devlibs&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also, edit the PATH variable, and add these if not already present:&amp;lt;br&amp;gt;&lt;br /&gt;
c:\mingw\bin;c:\devlibs\python;c:\devlibs\bin&lt;br /&gt;
&lt;br /&gt;
After the Environment Variables are set in the Windows system settings, a restart is required.&lt;br /&gt;
&lt;br /&gt;
== Compile the Build Tool ==&lt;br /&gt;
&lt;br /&gt;
Now compile the build tool with the following command:&lt;br /&gt;
&lt;br /&gt;
 C:\src\inkscape\trunk&amp;gt; g++ buildtool.cpp -o btool -fopenmp&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;-fopenmp&amp;lt;/code&amp;gt; flag enables [https://gcc.gnu.org/wiki/openmp OpenMP] which allows to use parallel compilation threads when building Inkscape.&lt;br /&gt;
&lt;br /&gt;
== Building Inkscape ==&lt;br /&gt;
&lt;br /&gt;
Finally initiate the compilation. Get a coffee or take your dog out for a walk, because it will take a rather long time. If you have a multicore processor, add &amp;quot;-j 8&amp;quot; to use (for example) 8 parallel compilation threads.&lt;br /&gt;
&lt;br /&gt;
 C:\src\inkscape\trunk&amp;gt; btool -j 8&lt;br /&gt;
&lt;br /&gt;
Once everything is done, there should be an &amp;lt;tt&amp;gt;inkscape&amp;lt;/tt&amp;gt; directory that contains the Inkscape executable and libraries needed to run it.&lt;br /&gt;
&lt;br /&gt;
== Rebuilding ==&lt;br /&gt;
&lt;br /&gt;
If you have only changed a few files and want to rebuild, delete the &amp;lt;tt&amp;gt;inkscape&amp;lt;/tt&amp;gt; directory and run &amp;lt;tt&amp;gt;btool&amp;lt;/tt&amp;gt; again.&lt;br /&gt;
&lt;br /&gt;
To rebuild from scratch, execute the following sequence of commands:&lt;br /&gt;
 C:\src\inkscape\trunk&amp;gt; btool clean&lt;br /&gt;
 C:\src\inkscape\trunk&amp;gt; btool&lt;br /&gt;
&lt;br /&gt;
== Dealing With Build Errors ==&lt;br /&gt;
Feel free to add any questions or answers you have in here;&lt;br /&gt;
&lt;br /&gt;
'''Q''' - My firewall software (Comodo's Defense+ component or similar) stopped the process continuing to the next step in the build, because I wasn't there to permit an action and it timed out. What can I do?&lt;br /&gt;
&lt;br /&gt;
'''A1''' - The best thing is to disable stuff like Defense+ (put it in learning mode works) because it will stop any process that is not approved, and building makes new files which can't be approved before they're built. Disabling Comodo's Defense+ does not disable your firewall, either inbound or outbound, but just the part that scans every application for suspicious operations. Other firewalls etc may vary.&lt;br /&gt;
&lt;br /&gt;
'''A2''' - If that doesn't suit, often you can simply run btool again and wait for Defense+ (or similar) to ask for approval for the process, and it will then continue as normal with the build. But remember that approving all the processes involved in the build process once doesn't mean they will all slip through next time.&lt;br /&gt;
&lt;br /&gt;
'''A3''' - This is the more complex way to continue, but may help if you have problems with A2. If you know the stage the process was meant to be up to (look at the output in the command windows and compare to the stages in the ''build.xml'' file), you can start again from there.&lt;br /&gt;
&lt;br /&gt;
You may see something like this in the command window;&lt;br /&gt;
     =============================&lt;br /&gt;
     ## Target : link : link objects and library to create executable&lt;br /&gt;
     ---- task : rc&lt;br /&gt;
     ============ cmd ============&lt;br /&gt;
     windres -o build/inkres.o --include-dir=src src/inkscape.rc&lt;br /&gt;
     =============================&lt;br /&gt;
     ---- task : link&lt;br /&gt;
This will likely be followed by an error message. This means you were at the ''link'' stage&lt;br /&gt;
&lt;br /&gt;
Now simply type;&lt;br /&gt;
     ...&amp;gt;btool ''stage''&lt;br /&gt;
Or in this case&lt;br /&gt;
     ...&amp;gt;btool link&lt;br /&gt;
And the build will continue from there.&lt;br /&gt;
&lt;br /&gt;
After this, you will probably have to step through the remaining stages manually, one by one. The stages can include (see build.xml, where each stage is labelled 'target name=&amp;quot;''target''&amp;quot;') ''init'', ''touchabout'', ''compile'', ''java'', ''lib'', ''i18n'', ''link'', ''linkinkview'', ''dist'', ''dist-all'', ''clean''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q''' - How do I rebuild just one ''file.o'' file? For instance if one particular file has gone wrong, or I want to try patching just one part of the code.&lt;br /&gt;
&lt;br /&gt;
'''A''' - To find the right command for building any particular file in Inkscape, just look in the compile.lst after you have used btool once. Search for the name of the particular file (eg: print.cpp) and you will find the command used to compile it. You'll need to paste this into a text file, remove any carriage reurns and then paste that onto the command line.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q''' - After I patched a file, I left a backup of the old file in the same directory called Copy of{filename}.cpp. The compiler complains about this file when building and stops.&lt;br /&gt;
&lt;br /&gt;
'''A''' - Do not leave anything with a suffix .cpp in the source directories, apart from the original (or patched) source files. The build tool will try to compile everything ending in .cpp and will complain. If you backup an old file in the same directory before patching, call it {filename}.cpp.old or similar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q''' - I think I followed the instruction above. What could have caused the compiling error like this for src/extension/internal/pdfinput/pdf-parser.cpp?&lt;br /&gt;
&lt;br /&gt;
     src/extension/internal/pdfinput/pdf-parser.cpp:2248: error: no matching function for call to 'GfxFont::getNextChar(char*&amp;amp;, int&amp;amp;, CharCode*, Unicode [8], int, int*, double*, double*, double*, double*)'&lt;br /&gt;
&lt;br /&gt;
Same error for line 2297 as well.&lt;br /&gt;
&lt;br /&gt;
=== For more information ===&lt;br /&gt;
There is some old information on building Inkscape with either Mingw on Windows, or a cross-compiler on Linux, at http://inkscape.modevia.com/win32_inkscape_org/win32buildnotes.html&lt;br /&gt;
and old files mey be&lt;br /&gt;
http://inkscape.modevia.com/win32libs/&lt;br /&gt;
== Creating an installer ==&lt;br /&gt;
&lt;br /&gt;
To create the '''inkscape-$RELEASE-win32.exe''' setup package you need the '''NSIS''' installer on your PC. Get that from http://nsis.sf.net .&lt;br /&gt;
You have successfully built Inkscape and everything is in the ...\inkscape\ directory.&lt;br /&gt;
Open the ...\packaging\win32\inkscape.nsi using the NSIS program and compile the package. Sooo easy :-)&lt;br /&gt;
&lt;br /&gt;
The new wix installer in the packaging\wix directory creates msi packages. You need the '''windows installer XML''' package; get it from here http://wixtoolset.org/. Follow the instructions in the README file in the packaging\wix directory. The installer scripts parse version information from the inkscape.rc file. The generated packed is named as:&lt;br /&gt;
&lt;br /&gt;
   '''inkscape-$RELEASE.msi'''&lt;br /&gt;
&lt;br /&gt;
== Note about Unicode ==&lt;br /&gt;
&lt;br /&gt;
The GTK stack depends on functions only present in NT-based Windows (2000 and later). Therefore, Inkscape code can assume that Unicode functions from the Windows API (like GetCommandLineW) are always present. Note however that you should use the GLib/GTK functions rather the Windows API whenever possible.&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
*[[Compiling Inkscape]]&lt;br /&gt;
*[[Using Visual Studio]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Shlomif</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CMake_Tasks&amp;diff=99191</id>
		<title>CMake Tasks</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CMake_Tasks&amp;diff=99191"/>
		<updated>2016-04-22T10:52:21Z</updated>

		<summary type="html">&lt;p&gt;Shlomif: Mark &amp;quot;make check&amp;quot; as DONE.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Priorities for 0.92 ==&lt;br /&gt;
&lt;br /&gt;
* Remove the hardcoded defines in CMakeLists.txt.  These are marked out in the &amp;quot;BAD HACKS&amp;quot; section with add_definitions() calls.  I suspect many of these are simply unnecessary, like HAVE_CONFIG_H and _FORTIFY_SOURCE.  None are documented as to why they were added - perhaps investigate these further, or just test that the build works without them and drop them for now until their need becomes clearer?&lt;br /&gt;
&lt;br /&gt;
* Add locale installation support to the UNIX section in CMakeLists.txt. These are the po files in Inkscape's po/ subdirectory, and at least for me this appears to be working properly.  We already have a simple po/CMakeLists.txt that looks like it does the basics already, including a GETTEXT_PROCESS_PO_FILES() call appears to be putting the files in the binary build's share/locale directory, and we're already hooking it in via the add_subdirectory() call in the top level CMakeLists.txt.  Probably worth just checking that inkscape with localization turned on is able to find the appropriate po file and provide translated strings in its user interface, and just verify locales are working as expected. (Related: [https://bugs.launchpad.net/inkscape/+bug/1514588 bug #1514588])&lt;br /&gt;
&lt;br /&gt;
* Compare dists created by cmake with dists created by autoconf.  Set up parallel build trees for cmake and autoconf, and do a make dist in each.  Then unpack the tarballs created by each method, create a sorted recursive file listing for each, and diff them.  Filter out the cmake-specific and automake-specific files.  Look for files autoconf is including in the dist that cmake isn't, and files that cmake includes that autoconf doesn't.  For each file determine if it's needed, and adjust the cmake rules accordingly.&lt;br /&gt;
&lt;br /&gt;
* Review configure.ac and Makefile.ac for other configurable or required features and libraries.  For each of these dependencies, verify that cmake is checking for it in the root CMakeLists.txt or one of the included files in CMakeScripts/*.cmake.&lt;br /&gt;
&lt;br /&gt;
* Convert the OS X build system to use cmake ([https://bugs.launchpad.net/inkscape/+bug/1502774 bug #1502774])&lt;br /&gt;
&lt;br /&gt;
* Convert the WIN32 build system to use cmake (specific details needed..._&lt;br /&gt;
&lt;br /&gt;
* '''DONE:''' Drop the checks for getopt.h, since we no longer use that.&lt;br /&gt;
&lt;br /&gt;
* '''DONE:''' Add a test whether '-std=c++11' is required for libsigc++ and/or glibmm/gtkmm ([https://bugs.launchpad.net/inkscape/+bug/1488079 bug #1488079], see comment [https://bugs.launchpad.net/inkscape/+bug/1488079/comments/48 48])&lt;br /&gt;
&lt;br /&gt;
* '''DONE:''' Get 'make check' to work.  Presently it generates an error &amp;quot;No test configuration file found!&amp;quot;  A lot of the test harness appears to already be set up, so presumably there's just a bit more configuration needed to get it activated. See patch and discussion in [https://bugs.launchpad.net/inkscape/+bug/1554143 bug #1554143].&lt;br /&gt;
&lt;br /&gt;
== Misc. Cleanup and Nice To Haves ==&lt;br /&gt;
&lt;br /&gt;
These tasks are not priorities for 0.92 but don't risk breaking anything beyond cmake so are safe to land any time.&lt;br /&gt;
&lt;br /&gt;
* Avoid clobbering CMAKE_* variables.  set(CMAKE_FOO &amp;quot;bar&amp;quot;) is wrong, it should be set(CMAKE_FOO &amp;quot;${CMAKE_FOO} bar)&lt;br /&gt;
&lt;br /&gt;
* DefineDependsandFlags.cmake explicitly includes GTK2_* stuff, but would just GTK2_INCLUDE_DIRS and GTK2_LIBRARY_DIRS work?&lt;br /&gt;
&lt;br /&gt;
* Automatically update the author dialog using AUTHORS.  Look at how the man pages are updated from AUTHORS in the cmake scripts; the dialog can be updated in a similar manner, just that the names need to be formatted differently for the C++ compilation.  TRANSLATORS can be done the same way.  Probably COPYING as well.&lt;br /&gt;
&lt;br /&gt;
* Rename FindPANGOMM.cmake to FindPangoMM.cmake, to make file name casing consistent.  Perhaps there are other modules that should be renamed for consistency too?  Be sure any renames don't break the build when those modules are in use.&lt;br /&gt;
&lt;br /&gt;
* Ensure the man pages rebuild when edited.  I don't think I set up the dependency tracking correctly for inkscape.pod.in and the other pod files, because they don't rebuild automatically when modified.&lt;br /&gt;
&lt;br /&gt;
* Improve the pango/cairo configuration logic. DefineDependsandFlags.cmake contains platform checks for which libraries to include specifically, which should be generalized and perhaps moved into FindCairo*.cmake and/or FindPango*.cmake modules. ([https://bugs.launchpad.net/inkscape/+bug/1512379 bug #1512379])&lt;br /&gt;
&lt;br /&gt;
* Restructure the helper cmake scripts.  Presently a lot of configuration logic is broken out into CMakeScripts/*.cmake files. Where these contain helper routines or otherwise self-contained chunks of functionality that is reasonably abstracted from Inkscape this is fine, but some of these are really just Inkscape-specific logic that probably would be better to just leave inline in the top CMakeLists.txt file.  E.g. DefineDependsandFlags.cmake, ConfigCompileFlags.cmake, and ConfigPaths.cmake should be considered to merge back in.  Having them broken out separately just obscures configuration logic, and likely will just make things more inconvenient for developers trying to get a handle on the application's configuration.&lt;br /&gt;
&lt;br /&gt;
* Improve the GTK3 Experimental logic.  DefineDependsandFlags.cmake contains a large chunk of code for handling GTK3 libraries.  As inkscape itself gets ported to Gtk3, I'm guessing a lot of this build configuration logic will need redone or improved.  Probably worthwhile to examine GIMP and other gtk/cmake based projects that may be further along in their Gtk3 conversion.&lt;br /&gt;
&lt;br /&gt;
* ConfigChecks.cmake includes tests for a bunch of basic C functions.  Many of these are things I believe we can reasonably assume to be present in modern compilers.  It hurts little to retain these if they provide tangible benefits, but they do take up time during configuration, so if they're completely redundant we should just drop them.  I think as long as we are requiring minimum versions on particular compilers, or if we're checking for certain C++ standards level compliance of the compilers, we can assume a lot of these functions are already there.&lt;br /&gt;
&lt;br /&gt;
* As a corollary to the previous task, ConfigChecks.cmake should perhaps include checks for header files and function calls that we use, that may not be present in every compiler.  C++-11 features, for example, might fit here, or anything that is platform-dependent.&lt;br /&gt;
&lt;br /&gt;
* We include a UsePkgConfig.cmake file, but I wonder if this is actually necessary.  Reasonably modern cmake has pkgconfig support built-in, so perhaps with a bit of adjustment we could drop this file?  I think we should be able to just do &amp;quot;find_package(PkgConfig REQUIRED)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Cleanup rendundant stuff in the root CMakeLists.txt no longer needed in recent versions of cmake.  I wonder if some of our cmake_policy() statements are redundant with setting cmake's minimum version to 2.8. Other stuff may simply be restating default values, such as CMAKE_MODULE_PATH.&lt;br /&gt;
&lt;br /&gt;
* Cleanup the version specification and insertion.  We set the version in INKSCAPE_VERSION, but cmake allows setting the version via project() now, which might be better.  We have some plumbing to communicate the version number into the application's code, namely src/inkscape-version.cpp, which supposedly is generated by inkscape-version.cmake (this should probably be doublechecked, I'm not 100% certain it's actually triggered.)  I wonder if much of this is superfluous: cmake is creating config.h from config.h.cmake to supply defines for PACKAGE_VERSION, and we could also add the broken down version bits by using cmake's PROJECT_VERSION_MAJOR, PROJECT_VERSION_MINOR, and PROJECT_VERSION_PATCH if we need that.&lt;br /&gt;
&lt;br /&gt;
* Add [https://cmake.org/cmake/help/v3.0/module/GNUInstallDirs.html GNUInstallDirs.cmake] and update all installation paths to use the provided variables.&lt;br /&gt;
&lt;br /&gt;
== Post-0.92 ==&lt;br /&gt;
&lt;br /&gt;
The following cmake related projects should be left until after autoconf is dropped, else they'll likely break autoconf or require it to be updated in turn.  Easier to wait until after 0.92 when autoconf is scheduled to be dropped.&lt;br /&gt;
&lt;br /&gt;
* Drop the autoconf files:  autogen.sh, configure.in, etc. etc.&lt;br /&gt;
&lt;br /&gt;
* Move fix-roff-punct to the packaging/ directory.  This is used only by the man page creation routines, and doesn't need to be kept at the top level so long as it can be found by the cmake script that uses it.&lt;br /&gt;
&lt;br /&gt;
* Drop btool-related files.  Doublecheck that the win32 and osx packaging tools have switched over to cmake before doing this.&lt;/div&gt;</summary>
		<author><name>Shlomif</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CMake&amp;diff=99116</id>
		<title>CMake</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CMake&amp;diff=99116"/>
		<updated>2016-04-15T16:24:26Z</updated>

		<summary type="html">&lt;p&gt;Shlomif: /* Using CMake to run tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Work is a on going to get this build system functional!'''&lt;br /&gt;
&lt;br /&gt;
Cmake is a cross-platform build system know to work on all major platforms we support (*nix, Windows, OSX).&lt;br /&gt;
&lt;br /&gt;
CMake is an extensible, open-source system that has many powerful features.&lt;br /&gt;
Those features include:&lt;br /&gt;
&lt;br /&gt;
* Supports complex, large build environments. CMake has been proven in several large projects (KDE, ParaView, SecondLife, Scribus)&lt;br /&gt;
* Generates native build files (e.g., makefiles on Unix; workspaces/projects on MS Visual C++). Therefore, standard tools can be used on any platform/compiler configuration.&lt;br /&gt;
* Powerful system introspection abilities including the ability to find installed include files, libraries and executables. Also the ability to test the compiler for supported features.&lt;br /&gt;
* Integrated testing system called CTest.&lt;br /&gt;
* Integrated packaging system called CPack.&lt;br /&gt;
* Easy integration with CDash and Dart dashboard servers.&lt;br /&gt;
* Powerful scripting language with simple syntax.&lt;br /&gt;
* Supports in-place and out-of-place builds. Multiple compilation trees are possible from a single source tree.&lt;br /&gt;
* Can be easily extended to add new features.&lt;br /&gt;
* CMake is open source, under a liberal BSD license.&lt;br /&gt;
* CMake operates with a cache designed to be interfaced with a graphical editor. The cache provides optional interaction to conditionally control the build process.&lt;br /&gt;
* Ability to create Mac OSX Frameworks and Application Bundles.&lt;br /&gt;
* Supports adding complex custom rules to the build.&lt;br /&gt;
&lt;br /&gt;
== How you can help ==&lt;br /&gt;
&lt;br /&gt;
We have completed the building of the CMakeLists.txt for almost everything needed.&lt;br /&gt;
We are now working on get the build to compile properly. See below Testing/Using to help.&lt;br /&gt;
&lt;br /&gt;
There is a separate [[CMake Tasks]] page with things that are left to do w.r.t. cmake building of Inkscape.&lt;br /&gt;
&lt;br /&gt;
== SIMPLE CmakeLists.txt ==&lt;br /&gt;
    SET(libavoid_SRC&lt;br /&gt;
    connector.cpp&lt;br /&gt;
    geometry.cpp&lt;br /&gt;
    graph.cpp&lt;br /&gt;
    makepath.cpp&lt;br /&gt;
    polyutil.cpp&lt;br /&gt;
    region.cpp&lt;br /&gt;
    router.cpp&lt;br /&gt;
    shape.cpp&lt;br /&gt;
    static.cpp&lt;br /&gt;
    timer.cpp&lt;br /&gt;
    vertices.cpp&lt;br /&gt;
    visibility.cpp&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
== SIMPLE with single sub-directory Cmakelists.txt ==&lt;br /&gt;
&lt;br /&gt;
    SET(libavoid_SRC&lt;br /&gt;
    connector.cpp&lt;br /&gt;
    geometry.cpp&lt;br /&gt;
    graph.cpp&lt;br /&gt;
    makepath.cpp&lt;br /&gt;
    polyutil.cpp&lt;br /&gt;
    region.cpp&lt;br /&gt;
    router.cpp&lt;br /&gt;
    shape.cpp&lt;br /&gt;
    static.cpp&lt;br /&gt;
    timer.cpp&lt;br /&gt;
    vertices.cpp&lt;br /&gt;
    visibility.cpp&lt;br /&gt;
    #Add our subdirectory sourcelist Var&lt;br /&gt;
    ${libavoid_parameter_SRC}&lt;br /&gt;
    )&lt;br /&gt;
    # this adds a single sub-directory&lt;br /&gt;
    ADD_SUBDIRECTORY(parameter)&lt;br /&gt;
&lt;br /&gt;
== Using CMake to build Inkscape ==&lt;br /&gt;
&lt;br /&gt;
Experience with Scribus '''strongly''' suggests using an &amp;quot;out of source&amp;quot;build arrangement. E.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir buildinkscape&lt;br /&gt;
cd buildinkscape&lt;br /&gt;
cmake ./path/to/inkscape/sources&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
References: &lt;br /&gt;
[http://docs.scribus.net/index.php?lang=en&amp;amp;page=install4 Installing Scribus with Cmake] &amp;lt;br /&amp;gt;&lt;br /&gt;
[http://docs.scribus.net/index.php?lang=en&amp;amp;page=install5 Installing with CMake on OSX]&lt;br /&gt;
&lt;br /&gt;
== Using CMake to run tests ==&lt;br /&gt;
&lt;br /&gt;
First, install Google Test framework by running download-gtest.sh in the main directory of inkscape source:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /path/to/inkscape&lt;br /&gt;
bash download-gtest.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, toggle the CMake config var &amp;quot;WITH_GTEST&amp;quot; to ON, e.g. by editing CMakeCache.txt or by using ccmake or by passing &amp;quot;-DWITH_GTEST=ON&amp;quot; to cmake. Don't forget to re-run cmake after the configuration change:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /path/to/buildinkscape&lt;br /&gt;
# modify CMakeCache.txt&lt;br /&gt;
cmake ../inkscape&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, run &amp;quot;make check&amp;quot; from same directory to run the tests:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
make check&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Shlomif</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CMake_Tasks&amp;diff=98981</id>
		<title>CMake Tasks</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CMake_Tasks&amp;diff=98981"/>
		<updated>2016-04-07T09:01:07Z</updated>

		<summary type="html">&lt;p&gt;Shlomif: Add the link to the bug with the patch.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Priorities for 0.92 ==&lt;br /&gt;
&lt;br /&gt;
* Remove the hardcoded defines in CMakeLists.txt.  These are marked out in the &amp;quot;BAD HACKS&amp;quot; section with add_definitions() calls.  I suspect many of these are simply unnecessary, like HAVE_CONFIG_H and _FORTIFY_SOURCE.  None are documented as to why they were added - perhaps investigate these further, or just test that the build works without them and drop them for now until their need becomes clearer?&lt;br /&gt;
&lt;br /&gt;
* Add locale installation support to the UNIX section in CMakeLists.txt. These are the po files in Inkscape's po/ subdirectory, and at least for me this appears to be working properly.  We already have a simple po/CMakeLists.txt that looks like it does the basics already, including a GETTEXT_PROCESS_PO_FILES() call appears to be putting the files in the binary build's share/locale directory, and we're already hooking it in via the add_subdirectory() call in the top level CMakeLists.txt.  Probably worth just checking that inkscape with localization turned on is able to find the appropriate po file and provide translated strings in its user interface, and just verify locales are working as expected. (Related: [https://bugs.launchpad.net/inkscape/+bug/1514588 bug #1514588])&lt;br /&gt;
&lt;br /&gt;
* Compare dists created by cmake with dists created by autoconf.  Set up parallel build trees for cmake and autoconf, and do a make dist in each.  Then unpack the tarballs created by each method, create a sorted recursive file listing for each, and diff them.  Filter out the cmake-specific and automake-specific files.  Look for files autoconf is including in the dist that cmake isn't, and files that cmake includes that autoconf doesn't.  For each file determine if it's needed, and adjust the cmake rules accordingly.&lt;br /&gt;
&lt;br /&gt;
* Review configure.ac and Makefile.ac for other configurable or required features and libraries.  For each of these dependencies, verify that cmake is checking for it in the root CMakeLists.txt or one of the included files in CMakeScripts/*.cmake.&lt;br /&gt;
&lt;br /&gt;
* Get 'make check' to work.  Presently it generates an error &amp;quot;No test configuration file found!&amp;quot;  A lot of the test harness appears to already be set up, so presumably there's just a bit more configuration needed to get it activated. See patch and discussion in [https://bugs.launchpad.net/inkscape/+bug/1554143 bug #1554143].&lt;br /&gt;
&lt;br /&gt;
* Convert the OS X build system to use cmake ([https://bugs.launchpad.net/inkscape/+bug/1502774 bug #1502774])&lt;br /&gt;
&lt;br /&gt;
* Convert the WIN32 build system to use cmake (specific details needed..._&lt;br /&gt;
&lt;br /&gt;
* '''DONE:''' Drop the checks for getopt.h, since we no longer use that.&lt;br /&gt;
&lt;br /&gt;
* '''DONE:''' Add a test whether '-std=c++11' is required for libsigc++ and/or glibmm/gtkmm ([https://bugs.launchpad.net/inkscape/+bug/1488079 bug #1488079], see comment [https://bugs.launchpad.net/inkscape/+bug/1488079/comments/48 48])&lt;br /&gt;
&lt;br /&gt;
== Misc. Cleanup and Nice To Haves ==&lt;br /&gt;
&lt;br /&gt;
These tasks are not priorities for 0.92 but don't risk breaking anything beyond cmake so are safe to land any time.&lt;br /&gt;
&lt;br /&gt;
* Avoid clobbering CMAKE_* variables.  set(CMAKE_FOO &amp;quot;bar&amp;quot;) is wrong, it should be set(CMAKE_FOO &amp;quot;${CMAKE_FOO} bar)&lt;br /&gt;
&lt;br /&gt;
* DefineDependsandFlags.cmake explicitly includes GTK2_* stuff, but would just GTK2_INCLUDE_DIRS and GTK2_LIBRARY_DIRS work?&lt;br /&gt;
&lt;br /&gt;
* Automatically update the author dialog using AUTHORS.  Look at how the man pages are updated from AUTHORS in the cmake scripts; the dialog can be updated in a similar manner, just that the names need to be formatted differently for the C++ compilation.  TRANSLATORS can be done the same way.  Probably COPYING as well.&lt;br /&gt;
&lt;br /&gt;
* Rename FindPANGOMM.cmake to FindPangoMM.cmake, to make file name casing consistent.  Perhaps there are other modules that should be renamed for consistency too?  Be sure any renames don't break the build when those modules are in use.&lt;br /&gt;
&lt;br /&gt;
* Ensure the man pages rebuild when edited.  I don't think I set up the dependency tracking correctly for inkscape.pod.in and the other pod files, because they don't rebuild automatically when modified.&lt;br /&gt;
&lt;br /&gt;
* Improve the pango/cairo configuration logic. DefineDependsandFlags.cmake contains platform checks for which libraries to include specifically, which should be generalized and perhaps moved into FindCairo*.cmake and/or FindPango*.cmake modules. ([https://bugs.launchpad.net/inkscape/+bug/1512379 bug #1512379])&lt;br /&gt;
&lt;br /&gt;
* Restructure the helper cmake scripts.  Presently a lot of configuration logic is broken out into CMakeScripts/*.cmake files. Where these contain helper routines or otherwise self-contained chunks of functionality that is reasonably abstracted from Inkscape this is fine, but some of these are really just Inkscape-specific logic that probably would be better to just leave inline in the top CMakeLists.txt file.  E.g. DefineDependsandFlags.cmake, ConfigCompileFlags.cmake, and ConfigPaths.cmake should be considered to merge back in.  Having them broken out separately just obscures configuration logic, and likely will just make things more inconvenient for developers trying to get a handle on the application's configuration.&lt;br /&gt;
&lt;br /&gt;
* Improve the GTK3 Experimental logic.  DefineDependsandFlags.cmake contains a large chunk of code for handling GTK3 libraries.  As inkscape itself gets ported to Gtk3, I'm guessing a lot of this build configuration logic will need redone or improved.  Probably worthwhile to examine GIMP and other gtk/cmake based projects that may be further along in their Gtk3 conversion.&lt;br /&gt;
&lt;br /&gt;
* ConfigChecks.cmake includes tests for a bunch of basic C functions.  Many of these are things I believe we can reasonably assume to be present in modern compilers.  It hurts little to retain these if they provide tangible benefits, but they do take up time during configuration, so if they're completely redundant we should just drop them.  I think as long as we are requiring minimum versions on particular compilers, or if we're checking for certain C++ standards level compliance of the compilers, we can assume a lot of these functions are already there.&lt;br /&gt;
&lt;br /&gt;
* As a corollary to the previous task, ConfigChecks.cmake should perhaps include checks for header files and function calls that we use, that may not be present in every compiler.  C++-11 features, for example, might fit here, or anything that is platform-dependent.&lt;br /&gt;
&lt;br /&gt;
* We include a UsePkgConfig.cmake file, but I wonder if this is actually necessary.  Reasonably modern cmake has pkgconfig support built-in, so perhaps with a bit of adjustment we could drop this file?  I think we should be able to just do &amp;quot;find_package(PkgConfig REQUIRED)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Cleanup rendundant stuff in the root CMakeLists.txt no longer needed in recent versions of cmake.  I wonder if some of our cmake_policy() statements are redundant with setting cmake's minimum version to 2.8. Other stuff may simply be restating default values, such as CMAKE_MODULE_PATH.&lt;br /&gt;
&lt;br /&gt;
* Cleanup the version specification and insertion.  We set the version in INKSCAPE_VERSION, but cmake allows setting the version via project() now, which might be better.  We have some plumbing to communicate the version number into the application's code, namely src/inkscape-version.cpp, which supposedly is generated by inkscape-version.cmake (this should probably be doublechecked, I'm not 100% certain it's actually triggered.)  I wonder if much of this is superfluous: cmake is creating config.h from config.h.cmake to supply defines for PACKAGE_VERSION, and we could also add the broken down version bits by using cmake's PROJECT_VERSION_MAJOR, PROJECT_VERSION_MINOR, and PROJECT_VERSION_PATCH if we need that.&lt;br /&gt;
&lt;br /&gt;
* Add [https://cmake.org/cmake/help/v3.0/module/GNUInstallDirs.html GNUInstallDirs.cmake] and update all installation paths to use the provided variables.&lt;br /&gt;
&lt;br /&gt;
== Post-0.92 ==&lt;br /&gt;
&lt;br /&gt;
The following cmake related projects should be left until after autoconf is dropped, else they'll likely break autoconf or require it to be updated in turn.  Easier to wait until after 0.92 when autoconf is scheduled to be dropped.&lt;br /&gt;
&lt;br /&gt;
* Drop the autoconf files:  autogen.sh, configure.in, etc. etc.&lt;br /&gt;
&lt;br /&gt;
* Move fix-roff-punct to the packaging/ directory.  This is used only by the man page creation routines, and doesn't need to be kept at the top level so long as it can be found by the cmake script that uses it.&lt;br /&gt;
&lt;br /&gt;
* Drop btool-related files.  Doublecheck that the win32 and osx packaging tools have switched over to cmake before doing this.&lt;/div&gt;</summary>
		<author><name>Shlomif</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CMake_Tasks&amp;diff=98361</id>
		<title>CMake Tasks</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CMake_Tasks&amp;diff=98361"/>
		<updated>2016-02-27T17:21:37Z</updated>

		<summary type="html">&lt;p&gt;Shlomif: Mark an item as done.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Priorities for 0.92 ==&lt;br /&gt;
&lt;br /&gt;
* Remove the hardcoded defines in CMakeLists.txt.  These are marked out in the &amp;quot;BAD HACKS&amp;quot; section with add_definitions() calls.  I suspect many of these are simply unnecessary, like HAVE_CONFIG_H and _FORTIFY_SOURCE.  None are documented as to why they were added - perhaps investigate these further, or just test that the build works without them and drop them for now until their need becomes clearer?&lt;br /&gt;
&lt;br /&gt;
* Add locale installation support to the UNIX section in CMakeLists.txt. These are the po files in Inkscape's po/ subdirectory, and at least for me this appears to be working properly.  We already have a simple po/CMakeLists.txt that looks like it does the basics already, including a GETTEXT_PROCESS_PO_FILES() call appears to be putting the files in the binary build's share/locale directory, and we're already hooking it in via the add_subdirectory() call in the top level CMakeLists.txt.  Probably worth just checking that inkscape with localization turned on is able to find the appropriate po file and provide translated strings in its user interface, and just verify locales are working as expected. (Related: [https://bugs.launchpad.net/inkscape/+bug/1514588 bug #1514588])&lt;br /&gt;
&lt;br /&gt;
* Compare dists created by cmake with dists created by autoconf.  Set up parallel build trees for cmake and autoconf, and do a make dist in each.  Then unpack the tarballs created by each method, create a sorted recursive file listing for each, and diff them.  Filter out the cmake-specific and automake-specific files.  Look for files autoconf is including in the dist that cmake isn't, and files that cmake includes that autoconf doesn't.  For each file determine if it's needed, and adjust the cmake rules accordingly.&lt;br /&gt;
&lt;br /&gt;
* Review configure.ac and Makefile.ac for other configurable or required features and libraries.  For each of these dependencies, verify that cmake is checking for it in the root CMakeLists.txt or one of the included files in CMakeScripts/*.cmake.&lt;br /&gt;
&lt;br /&gt;
* Get 'make check' to work.  Presently it generates an error &amp;quot;No test configuration file found!&amp;quot;  A lot of the test harness appears to already be set up, so presumably there's just a bit more configuration needed to get it activated.&lt;br /&gt;
&lt;br /&gt;
* Convert the OS X build system to use cmake ([https://bugs.launchpad.net/inkscape/+bug/1502774 bug #1502774])&lt;br /&gt;
&lt;br /&gt;
* Convert the WIN32 build system to use cmake&lt;br /&gt;
&lt;br /&gt;
* '''DONE:''' Drop the checks for getopt.h, since we no longer use that.&lt;br /&gt;
&lt;br /&gt;
* '''DONE:''' Add a test whether '-std=c++11' is required for libsigc++ and/or glibmm/gtkmm ([https://bugs.launchpad.net/inkscape/+bug/1488079 bug #1488079], see comment [https://bugs.launchpad.net/inkscape/+bug/1488079/comments/48 48])&lt;br /&gt;
&lt;br /&gt;
== Misc. Cleanup and Nice To Haves ==&lt;br /&gt;
&lt;br /&gt;
These tasks are not priorities for 0.92 but don't risk breaking anything beyond cmake so are safe to land any time.&lt;br /&gt;
&lt;br /&gt;
* Avoid clobbering CMAKE_* variables.  set(CMAKE_FOO &amp;quot;bar&amp;quot;) is wrong, it should be set(CMAKE_FOO &amp;quot;${CMAKE_FOO} bar)&lt;br /&gt;
&lt;br /&gt;
* DefineDependsandFlags.cmake explicitly includes GTK2_* stuff, but would just GTK2_INCLUDE_DIRS and GTK2_LIBRARY_DIRS work?&lt;br /&gt;
&lt;br /&gt;
* Automatically update the author dialog using AUTHORS.  Look at how the man pages are updated from AUTHORS in the cmake scripts; the dialog can be updated in a similar manner, just that the names need to be formatted differently for the C++ compilation.  TRANSLATORS can be done the same way.  Probably COPYING as well.&lt;br /&gt;
&lt;br /&gt;
* Rename FindPANGOMM.cmake to FindPangoMM.cmake, to make file name casing consistent.  Perhaps there are other modules that should be renamed for consistency too?  Be sure any renames don't break the build when those modules are in use.&lt;br /&gt;
&lt;br /&gt;
* Ensure the man pages rebuild when edited.  I don't think I set up the dependency tracking correctly for inkscape.pod.in and the other pod files, because they don't rebuild automatically when modified.&lt;br /&gt;
&lt;br /&gt;
* Improve the pango/cairo configuration logic. DefineDependsandFlags.cmake contains platform checks for which libraries to include specifically, which should be generalized and perhaps moved into FindCairo*.cmake and/or FindPango*.cmake modules. ([https://bugs.launchpad.net/inkscape/+bug/1512379 bug #1512379])&lt;br /&gt;
&lt;br /&gt;
* Restructure the helper cmake scripts.  Presently a lot of configuration logic is broken out into CMakeScripts/*.cmake files. Where these contain helper routines or otherwise self-contained chunks of functionality that is reasonably abstracted from Inkscape this is fine, but some of these are really just Inkscape-specific logic that probably would be better to just leave inline in the top CMakeLists.txt file.  E.g. DefineDependsandFlags.cmake, ConfigCompileFlags.cmake, and ConfigPaths.cmake should be considered to merge back in.  Having them broken out separately just obscures configuration logic, and likely will just make things more inconvenient for developers trying to get a handle on the application's configuration.&lt;br /&gt;
&lt;br /&gt;
* Improve the GTK3 Experimental logic.  DefineDependsandFlags.cmake contains a large chunk of code for handling GTK3 libraries.  As inkscape itself gets ported to Gtk3, I'm guessing a lot of this build configuration logic will need redone or improved.  Probably worthwhile to examine GIMP and other gtk/cmake based projects that may be further along in their Gtk3 conversion.&lt;br /&gt;
&lt;br /&gt;
* ConfigChecks.cmake includes tests for a bunch of basic C functions.  Many of these are things I believe we can reasonably assume to be present in modern compilers.  It hurts little to retain these if they provide tangible benefits, but they do take up time during configuration, so if they're completely redundant we should just drop them.  I think as long as we are requiring minimum versions on particular compilers, or if we're checking for certain C++ standards level compliance of the compilers, we can assume a lot of these functions are already there.&lt;br /&gt;
&lt;br /&gt;
* As a corollary to the previous task, ConfigChecks.cmake should perhaps include checks for header files and function calls that we use, that may not be present in every compiler.  C++-11 features, for example, might fit here, or anything that is platform-dependent.&lt;br /&gt;
&lt;br /&gt;
* We include a UsePkgConfig.cmake file, but I wonder if this is actually necessary.  Reasonably modern cmake has pkgconfig support built-in, so perhaps with a bit of adjustment we could drop this file?  I think we should be able to just do &amp;quot;find_package(PkgConfig REQUIRED)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Cleanup rendundant stuff in the root CMakeLists.txt no longer needed in recent versions of cmake.  I wonder if some of our cmake_policy() statements are redundant with setting cmake's minimum version to 2.8. Other stuff may simply be restating default values, such as CMAKE_MODULE_PATH.&lt;br /&gt;
&lt;br /&gt;
* Cleanup the version specification and insertion.  We set the version in INKSCAPE_VERSION, but cmake allows setting the version via project() now, which might be better.  We have some plumbing to communicate the version number into the application's code, namely src/inkscape-version.cpp, which supposedly is generated by inkscape-version.cmake (this should probably be doublechecked, I'm not 100% certain it's actually triggered.)  I wonder if much of this is superfluous: cmake is creating config.h from config.h.cmake to supply defines for PACKAGE_VERSION, and we could also add the broken down version bits by using cmake's PROJECT_VERSION_MAJOR, PROJECT_VERSION_MINOR, and PROJECT_VERSION_PATCH if we need that.&lt;br /&gt;
&lt;br /&gt;
* Add [https://cmake.org/cmake/help/v3.0/module/GNUInstallDirs.html GNUInstallDirs.cmake] and update all installation paths to use the provided variables.&lt;br /&gt;
&lt;br /&gt;
== Post-0.92 ==&lt;br /&gt;
&lt;br /&gt;
The following cmake related projects should be left until after autoconf is dropped, else they'll likely break autoconf or require it to be updated in turn.  Easier to wait until after 0.92 when autoconf is scheduled to be dropped.&lt;br /&gt;
&lt;br /&gt;
* Drop the autoconf files:  autogen.sh, configure.in, etc. etc.&lt;br /&gt;
&lt;br /&gt;
* Move fix-roff-punct to the packaging/ directory.  This is used only by the man page creation routines, and doesn't need to be kept at the top level so long as it can be found by the cmake script that uses it.&lt;br /&gt;
&lt;br /&gt;
* Drop btool-related files.  Doublecheck that the win32 and osx packaging tools have switched over to cmake before doing this.&lt;/div&gt;</summary>
		<author><name>Shlomif</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CMake_Tasks&amp;diff=98356</id>
		<title>CMake Tasks</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CMake_Tasks&amp;diff=98356"/>
		<updated>2016-02-26T16:08:16Z</updated>

		<summary type="html">&lt;p&gt;Shlomif: Update a completed task and fix misspelling.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Priorities for 0.92 ==&lt;br /&gt;
&lt;br /&gt;
* Remove the hardcoded defines in CMakeLists.txt.  These are marked out in the &amp;quot;BAD HACKS&amp;quot; section with add_definitions() calls.  I suspect many of these are simply unnecessary, like HAVE_CONFIG_H and _FORTIFY_SOURCE.  None are documented as to why they were added - perhaps investigate these further, or just test that the build works without them and drop them for now until their need becomes clearer?&lt;br /&gt;
&lt;br /&gt;
* Add locale installation support to the UNIX section in CMakeLists.txt. These are the po files in Inkscape's po/ subdirectory, and at least for me this appears to be working properly.  We already have a simple po/CMakeLists.txt that looks like it does the basics already, including a GETTEXT_PROCESS_PO_FILES() call appears to be putting the files in the binary build's share/locale directory, and we're already hooking it in via the add_subdirectory() call in the top level CMakeLists.txt.  Probably worth just checking that inkscape with localization turned on is able to find the appropriate po file and provide translated strings in its user interface, and just verify locales are working as expected. (Related: [https://bugs.launchpad.net/inkscape/+bug/1514588 bug #1514588])&lt;br /&gt;
&lt;br /&gt;
* Compare dists created by cmake with dists created by autoconf.  Set up parallel build trees for cmake and autoconf, and do a make dist in each.  Then unpack the tarballs created by each method, create a sorted recursive file listing for each, and diff them.  Filter out the cmake-specific and automake-specific files.  Look for files autoconf is including in the dist that cmake isn't, and files that cmake includes that autoconf doesn't.  For each file determine if it's needed, and adjust the cmake rules accordingly.&lt;br /&gt;
&lt;br /&gt;
* Review configure.ac and Makefile.ac for other configurable or required features and libraries.  For each of these dependencies, verify that cmake is checking for it in the root CMakeLists.txt or one of the included files in CMakeScripts/*.cmake.&lt;br /&gt;
&lt;br /&gt;
* Add a test whether '-std=c++11' is required for libsigc++ and/or glibmm/gtkmm ([https://bugs.launchpad.net/inkscape/+bug/1488079 bug #1488079], see comment [https://bugs.launchpad.net/inkscape/+bug/1488079/comments/48 48])&lt;br /&gt;
&lt;br /&gt;
* Get 'make check' to work.  Presently it generates an error &amp;quot;No test configuration file found!&amp;quot;  A lot of the test harness appears to already be set up, so presumably there's just a bit more configuration needed to get it activated.&lt;br /&gt;
&lt;br /&gt;
* Convert the OS X build system to use cmake ([https://bugs.launchpad.net/inkscape/+bug/1502774 bug #1502774])&lt;br /&gt;
&lt;br /&gt;
* Convert the WIN32 build system to use cmake&lt;br /&gt;
&lt;br /&gt;
* '''DONE:''' Drop the checks for getopt.h, since we no longer use that. &lt;br /&gt;
&lt;br /&gt;
== Misc. Cleanup and Nice To Haves ==&lt;br /&gt;
&lt;br /&gt;
These tasks are not priorities for 0.92 but don't risk breaking anything beyond cmake so are safe to land any time.&lt;br /&gt;
&lt;br /&gt;
* Avoid clobbering CMAKE_* variables.  set(CMAKE_FOO &amp;quot;bar&amp;quot;) is wrong, it should be set(CMAKE_FOO &amp;quot;${CMAKE_FOO} bar)&lt;br /&gt;
&lt;br /&gt;
* DefineDependsandFlags.cmake explicitly includes GTK2_* stuff, but would just GTK2_INCLUDE_DIRS and GTK2_LIBRARY_DIRS work?&lt;br /&gt;
&lt;br /&gt;
* Automatically update the author dialog using AUTHORS.  Look at how the man pages are updated from AUTHORS in the cmake scripts; the dialog can be updated in a similar manner, just that the names need to be formatted differently for the C++ compilation.  TRANSLATORS can be done the same way.  Probably COPYING as well.&lt;br /&gt;
&lt;br /&gt;
* Rename FindPANGOMM.cmake to FindPangoMM.cmake, to make file name casing consistent.  Perhaps there are other modules that should be renamed for consistency too?  Be sure any renames don't break the build when those modules are in use.&lt;br /&gt;
&lt;br /&gt;
* Ensure the man pages rebuild when edited.  I don't think I set up the dependency tracking correctly for inkscape.pod.in and the other pod files, because they don't rebuild automatically when modified.&lt;br /&gt;
&lt;br /&gt;
* Improve the pango/cairo configuration logic. DefineDependsandFlags.cmake contains platform checks for which libraries to include specifically, which should be generalized and perhaps moved into FindCairo*.cmake and/or FindPango*.cmake modules. ([https://bugs.launchpad.net/inkscape/+bug/1512379 bug #1512379])&lt;br /&gt;
&lt;br /&gt;
* Restructure the helper cmake scripts.  Presently a lot of configuration logic is broken out into CMakeScripts/*.cmake files. Where these contain helper routines or otherwise self-contained chunks of functionality that is reasonably abstracted from Inkscape this is fine, but some of these are really just Inkscape-specific logic that probably would be better to just leave inline in the top CMakeLists.txt file.  E.g. DefineDependsandFlags.cmake, ConfigCompileFlags.cmake, and ConfigPaths.cmake should be considered to merge back in.  Having them broken out separately just obscures configuration logic, and likely will just make things more inconvenient for developers trying to get a handle on the application's configuration.&lt;br /&gt;
&lt;br /&gt;
* Improve the GTK3 Experimental logic.  DefineDependsandFlags.cmake contains a large chunk of code for handling GTK3 libraries.  As inkscape itself gets ported to Gtk3, I'm guessing a lot of this build configuration logic will need redone or improved.  Probably worthwhile to examine GIMP and other gtk/cmake based projects that may be further along in their Gtk3 conversion.&lt;br /&gt;
&lt;br /&gt;
* ConfigChecks.cmake includes tests for a bunch of basic C functions.  Many of these are things I believe we can reasonably assume to be present in modern compilers.  It hurts little to retain these if they provide tangible benefits, but they do take up time during configuration, so if they're completely redundant we should just drop them.  I think as long as we are requiring minimum versions on particular compilers, or if we're checking for certain C++ standards level compliance of the compilers, we can assume a lot of these functions are already there.&lt;br /&gt;
&lt;br /&gt;
* As a corollary to the previous task, ConfigChecks.cmake should perhaps include checks for header files and function calls that we use, that may not be present in every compiler.  C++-11 features, for example, might fit here, or anything that is platform-dependent.&lt;br /&gt;
&lt;br /&gt;
* We include a UsePkgConfig.cmake file, but I wonder if this is actually necessary.  Reasonably modern cmake has pkgconfig support built-in, so perhaps with a bit of adjustment we could drop this file?  I think we should be able to just do &amp;quot;find_package(PkgConfig REQUIRED)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Cleanup rendundant stuff in the root CMakeLists.txt no longer needed in recent versions of cmake.  I wonder if some of our cmake_policy() statements are redundant with setting cmake's minimum version to 2.8. Other stuff may simply be restating default values, such as CMAKE_MODULE_PATH.&lt;br /&gt;
&lt;br /&gt;
* Cleanup the version specification and insertion.  We set the version in INKSCAPE_VERSION, but cmake allows setting the version via project() now, which might be better.  We have some plumbing to communicate the version number into the application's code, namely src/inkscape-version.cpp, which supposedly is generated by inkscape-version.cmake (this should probably be doublechecked, I'm not 100% certain it's actually triggered.)  I wonder if much of this is superfluous: cmake is creating config.h from config.h.cmake to supply defines for PACKAGE_VERSION, and we could also add the broken down version bits by using cmake's PROJECT_VERSION_MAJOR, PROJECT_VERSION_MINOR, and PROJECT_VERSION_PATCH if we need that.&lt;br /&gt;
&lt;br /&gt;
* Add [https://cmake.org/cmake/help/v3.0/module/GNUInstallDirs.html GNUInstallDirs.cmake] and update all installation paths to use the provided variables.&lt;br /&gt;
&lt;br /&gt;
== Post-0.92 ==&lt;br /&gt;
&lt;br /&gt;
The following cmake related projects should be left until after autoconf is dropped, else they'll likely break autoconf or require it to be updated in turn.  Easier to wait until after 0.92 when autoconf is scheduled to be dropped.&lt;br /&gt;
&lt;br /&gt;
* Drop the autoconf files:  autogen.sh, configure.in, etc. etc.&lt;br /&gt;
&lt;br /&gt;
* Move fix-roff-punct to the packaging/ directory.  This is used only by the man page creation routines, and doesn't need to be kept at the top level so long as it can be found by the cmake script that uses it.&lt;br /&gt;
&lt;br /&gt;
* Drop btool-related files.  Doublecheck that the win32 and osx packaging tools have switched over to cmake before doing this.&lt;/div&gt;</summary>
		<author><name>Shlomif</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Working_with_Bazaar&amp;diff=97216</id>
		<title>Working with Bazaar</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Working_with_Bazaar&amp;diff=97216"/>
		<updated>2015-10-26T08:05:25Z</updated>

		<summary type="html">&lt;p&gt;Shlomif: Correct a typo.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains an introduction to the Bazaar distributed version control system. It focuses on the use of Bazaar to develop Inkscape, but should be useful to all would-be users of Bazaar.&lt;br /&gt;
&lt;br /&gt;
You can choose either to use the command line or to use ''Bazaar Explorer'' (get the package ''bzr-explorer'' and follow the [http://doc.bazaar.canonical.com/explorer/en/tutorials/foss-contribute.html Bazaar Explorer Tutorial].&lt;br /&gt;
&lt;br /&gt;
==Why version control is useful==&lt;br /&gt;
&lt;br /&gt;
 NOTE: skip this section if you have experience with any version control system.&lt;br /&gt;
&lt;br /&gt;
If you ever worked on some large document in a group without any dedicated software, you have probably encountered the problem of simultaneous modification. When two people add something to the document at the same time, then send their version to each other, no one has the correct version. One of them has to redo their work in the other's version to merge the changes. This process is tedious and time-consuming, and the time spent on merging grows significantly when more people are added to the project.&lt;br /&gt;
&lt;br /&gt;
Fortunately, for text files, this task is simple enough that it can be done automatically by a special program. When merging is done by software, people have more time to focus on productive work.&lt;br /&gt;
&lt;br /&gt;
Version control systems (VCS) are programs designed to eliminate the overhead of merging. They manage a set of text files and allow many people to simultaneously work on them, then periodically submit their changes to a shared location. When two people change the same file, the changes are automatically merged together. Version control systems also store the complete history of changes. When someone makes a mistake and only spots it much later, it can be easily corrected, without affecting later work by other people.&lt;br /&gt;
&lt;br /&gt;
==Version control basics==&lt;br /&gt;
&lt;br /&gt;
Most version control systems use some shared location to publish the most up-to-date version of the project. (We will from now on assume that the project contains the source code for a program.) We will call this place the '''trunk'''. The first thing to do when starting work on a project is to download its source code, which is called creating a '''checkout'''. The files in your checkout are called the '''working copy'''. A checkout contains copies of files belonging to the project, where you can make changes. When you are ready to send your changes to others, you '''commit''' them, and they are stored in the shared location for others to see. The state of the project after someone's changes is called a '''revision''', and each revision in Bazaar is assigned a sequential number, called the '''revision number'''. Revision 0 is the empty project and revision 1 is the initial commit of the project's files. To receive the latest changes introduced by others, you '''update''' your checkout. The update command does not remove any of your uncommitted changes - they are automatically merged.&lt;br /&gt;
&lt;br /&gt;
Bazaar uses the following commands for the above functionality.&lt;br /&gt;
 $ bzr checkout ''project_trunk_url''&lt;br /&gt;
This checks out the source code of a project stored at the specified URL.&lt;br /&gt;
 $ bzr commit&lt;br /&gt;
This sends your changes to the shared location, so others can see them. It will display an editor window, where you should enter the summary of your changes. This description will be visible when using the &amp;lt;tt&amp;gt;bzr log&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
 $ bzr update&lt;br /&gt;
This updates your working copy to the latest public revision. Your uncommitted changes are left in place and automatically merged with others' changes.&lt;br /&gt;
&lt;br /&gt;
===Useful basic commands===&lt;br /&gt;
 $ bzr revert ''file''&lt;br /&gt;
This undoes all of your changes to the specified file and restores it to the state it was in after the last update.&lt;br /&gt;
 $ bzr add ''file''&lt;br /&gt;
When you create a new file it is initially '''unversioned''', which means the version control system doesn't track changes to it. You need to tell the VCS that you want to include it in the project, or make it '''versioned'''. The &amp;lt;tt&amp;gt;add&amp;lt;/tt&amp;gt; command is used to do this. The next &amp;lt;tt&amp;gt;commit&amp;lt;/tt&amp;gt; command will then add this file to the shared location.&lt;br /&gt;
 $ bzr rm ''file''&lt;br /&gt;
This removes a file and its contents from version control and deletes it from disk. The next &amp;lt;tt&amp;gt;commit&amp;lt;/tt&amp;gt; command will remove it from the shared location. Use the &amp;lt;tt&amp;gt;--keep&amp;lt;/tt&amp;gt; option if you want to remove the shared location but keep it as an unversioned file in your working copy.&lt;br /&gt;
&lt;br /&gt;
===Inspecting project history===&lt;br /&gt;
&lt;br /&gt;
Display last 20 sets of changes (revisions):&lt;br /&gt;
 $ bzr log -l20&lt;br /&gt;
&lt;br /&gt;
Display all changes to some file since the beginning of project history:&lt;br /&gt;
 $ bzr log ''file''&lt;br /&gt;
&lt;br /&gt;
===Inspecting changes===&lt;br /&gt;
&lt;br /&gt;
Display all uncommitted changes:&lt;br /&gt;
 $ bzr diff&lt;br /&gt;
&lt;br /&gt;
Display all changes, both committed and uncommitted, from revision 340:&lt;br /&gt;
 $ bzr diff -r340&lt;br /&gt;
&lt;br /&gt;
Display changes introduced by revision 436:&lt;br /&gt;
 $ bzr diff -c436&lt;br /&gt;
&lt;br /&gt;
Display changes between revisions 252 and 260:&lt;br /&gt;
 $ bzr diff -r252..260&lt;br /&gt;
&lt;br /&gt;
===Undoing mistakes===&lt;br /&gt;
&lt;br /&gt;
To remove all your uncommitted changes:&lt;br /&gt;
 $ bzr revert&lt;br /&gt;
&lt;br /&gt;
To revert a specific file to the state from revision 230:&lt;br /&gt;
 $ bzr revert -r230 ''file''&lt;br /&gt;
&lt;br /&gt;
Let's say you committed some change, but then after some time realized it was very wrong. To back it out without affecting any later changes, you need to find the revision number of the change using the &amp;lt;tt&amp;gt;bzr log&amp;lt;/tt&amp;gt; command. Let's say want to undo changes from revision 340. To do this, write:&lt;br /&gt;
 $ bzr merge -r340..339&lt;br /&gt;
&lt;br /&gt;
In the same way, you can undo any set of contiguous revisions, e.g.&lt;br /&gt;
 $ bzr merge -r340..320&lt;br /&gt;
&lt;br /&gt;
To undo sets of non-contiguous revisions, you have to use one command per set. All commands after the first need to use the --force option (by default Bazaar will refuse to do a merge if there are uncommitted changes).&lt;br /&gt;
 $ bzr merge -r340..339&lt;br /&gt;
 $ bzr merge -r327..326 --force&lt;br /&gt;
 $ bzr merge -r289..286 --force&lt;br /&gt;
&lt;br /&gt;
To actually make the above changes in the shared location, you need to follow them with &amp;lt;tt&amp;gt;bzr commit&amp;lt;/tt&amp;gt;. The exception is &amp;lt;tt&amp;gt;bzr revert&amp;lt;/tt&amp;gt;, which restores the state to the last committed revision, so there is nothing to commit after it.&lt;br /&gt;
&lt;br /&gt;
===Conflict resolution===&lt;br /&gt;
&lt;br /&gt;
Sometimes two people change the same file in a way that cannot be automatically merged, for example, they change the same line to something different. When this happens, you need to merge the problematic bits manually. You might encounter output like this:&lt;br /&gt;
&lt;br /&gt;
  $ bzr update&lt;br /&gt;
   M  src/painting-algorithm.cpp&lt;br /&gt;
   M  src/ui/widget/spinner.h&lt;br /&gt;
   M  src/ui/widget/spinner.cpp&lt;br /&gt;
   M  src/ui/widget/awesome-widget.cpp&lt;br /&gt;
  Text conflict in src/ui/widget/spinner.cpp&lt;br /&gt;
  1 conflict encountered.&lt;br /&gt;
  Updated to revision 1337 of branch [some URL]&lt;br /&gt;
&lt;br /&gt;
After that, the directory &amp;lt;tt&amp;gt;src/ui/widget&amp;lt;/tt&amp;gt; will contain four related files.&lt;br /&gt;
* &amp;lt;tt&amp;gt;spinner.cpp&amp;lt;/tt&amp;gt;: this will contain an unified view of the conflicts in the file. Conflicts will be marked with lines with multiple consecutive angle brackets.&lt;br /&gt;
* &amp;lt;tt&amp;gt;spinner.cpp.BASE&amp;lt;/tt&amp;gt;: latest common ancestor version of the file. In other words, both you and other people started from this version before conflicting changes were made.&lt;br /&gt;
* &amp;lt;tt&amp;gt;spinner.cpp.THIS&amp;lt;/tt&amp;gt;: the file with your changes, with conflicting changes by others removed.&lt;br /&gt;
* &amp;lt;tt&amp;gt;spinner.cpp.OTHER&amp;lt;/tt&amp;gt;: the file with other people's changes, with your conflicting changes removed.&lt;br /&gt;
&lt;br /&gt;
To display the list of conflicts again, use the command:&lt;br /&gt;
 $ bzr conflicts&lt;br /&gt;
&lt;br /&gt;
To resolve the conflict, you need to modify the contents of the &amp;lt;tt&amp;gt;spinner.cpp&amp;lt;/tt&amp;gt;. You can do this either by manually editing the file, by overwriting it with &amp;lt;tt&amp;gt;spinner.cpp.BASE&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;spinner.cpp.THIS&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;spinner.cpp.OTHER&amp;lt;/tt&amp;gt;, or by using special options to the resolve command. Once you are done, you need to tell Bazaar about it:&lt;br /&gt;
 $ bzr resolve src/ui/widget/spinner.cpp&lt;br /&gt;
&lt;br /&gt;
You can tell Bazaar to use your version or others' version, respectively, with the following commands:&lt;br /&gt;
 $ bzr resolve --take-this ''file''&lt;br /&gt;
 $ bzr resolve --take-other ''file''&lt;br /&gt;
&lt;br /&gt;
The above command will delete the files &amp;lt;tt&amp;gt;spinner.cpp.BASE&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;spinner.cpp.THIS&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;spinner.cpp.OTHER&amp;lt;/tt&amp;gt;. Manually deleting those files has the same effect as executing &amp;lt;tt&amp;gt;bzr resolve&amp;lt;/tt&amp;gt;. If you resolve all the conflicts at once, you can tell Bazaar to clean up everything:&lt;br /&gt;
 $ bzr resolve --all&lt;br /&gt;
&lt;br /&gt;
More information is available here: [http://doc.bazaar.canonical.com/latest/en/user-guide/resolving_conflicts.html Bazaar manual - Conflict handling].&lt;br /&gt;
&lt;br /&gt;
===Determining who made a change===&lt;br /&gt;
&lt;br /&gt;
Sometimes it is useful to see who last changed some lines in a file.&lt;br /&gt;
 $ bzr annotate ''file''&lt;br /&gt;
This will display the entire ''file''. Each line will be prefixed with the revision when the line was last changed and the person which committed that revision. Another name for this command, which might be easier to remember, is &amp;lt;tt&amp;gt;bzr blame&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Distributed VCS concepts in Bazaar==&lt;br /&gt;
&lt;br /&gt;
This section assumes that you are familiar with the basic concepts of version control, like working copy, committing, updating, conflicts.&lt;br /&gt;
&lt;br /&gt;
; '''Branch'''&lt;br /&gt;
: is a working copy of the project's code. Typically you use one branch per set of related changes, for example a new output extension. Once your work is finished, you ''merge'' your branch into a larger project. Initially, there is only one branch, the trunk; all other branches are its (probably indirect) descendants. To create a new branch, you have to copy an existing one. When branches A and B have a common ancestor branch but each contain changes not present in the other, they have '''diverged'''. For example, when you work on an improved rectangle tool in your own branch and at the same time somebody else applies a PDF export bugfix to the trunk, your rectangle tool branch becomes diverged from the trunk.&lt;br /&gt;
; '''Checkout'''&lt;br /&gt;
: is a copy of code contained in a branch that is not stored on your computer (a remote branch). Committing to a checkout will immediately apply the changes to the remote branch. Commits will not succeed if somebody else modified the branch while you were working - you need to have an up-to-date working copy - or when you're offline.&lt;br /&gt;
; '''Trunk'''&lt;br /&gt;
: is the main branch, which represents cutting-edge working code. You should start from it when doing any new development.&lt;br /&gt;
; '''Merge'''&lt;br /&gt;
: is the process of reconciling changes made between two branches since they diverged. This operation is asymmetric. When you merge A into B, all changes made to A since it was branched from B are applied to B. A is not changed. When you work on some feature, you typically work in a branch, periodically merging the trunk into your branch (to sync up with the latest changes), then you merge your work into the trunk. Merging is similar to applying a patch - it only changes your working copy. To apply a merge, you need to commit the changes it introduced. Merging un-diverges branches.&lt;br /&gt;
; '''Repository'''&lt;br /&gt;
: is a place where branches of a project are stored. Having a shared repository reduces the storage requirements of multiple branches of one project. Instead of O(number of branches) space, the Bazaar data takes up O(total size of changes in all branches) space.&lt;br /&gt;
; '''Bind'''&lt;br /&gt;
: is the process of converting a non-diverged local branch into a checkout of the remote branch.&lt;br /&gt;
; '''Push'''&lt;br /&gt;
: is the process of publishing an exact copy (a mirror) of your branch in some other location. The difference between pushing and checkouts is that a checked out remote branch is updated every time you commit, while a pushed remote branch is updated only when you push to it - you can commit any amount of changes between pushes. You can only push to a branch if the mirror has not diverged from your local copy. This can happen if more than 1 person can push to the same location.&lt;br /&gt;
; '''Pull'''&lt;br /&gt;
: is the process of creating a local exact copy (mirror) of a branch, in principle a reverse of pushing.&lt;br /&gt;
&lt;br /&gt;
==First steps==&lt;br /&gt;
&lt;br /&gt;
First you need to tell Bazaar your name. This will appear on all your commits. You should use your real e-mail, but you can obfuscate it if you are afraid of spam.&lt;br /&gt;
&lt;br /&gt;
Obfuscated e-mail examples:&lt;br /&gt;
 $ bzr whoami &amp;quot;John Q. Public &amp;lt;john dot q dot public at-sign bigmail dot com&amp;gt;&amp;quot;&lt;br /&gt;
 $ bzr whoami &amp;quot;John Q. Public &amp;lt;removethis.john.q.public@bigmail.com&amp;gt;&amp;quot;&lt;br /&gt;
Unobfuscated e-mail example: &lt;br /&gt;
 $ bzr whoami &amp;quot;John Q. Public &amp;lt;john.q.public@bigmail.com&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If you have an account on Launchpad and want to commit changes there, you need to specify your Launchpad login. You can skip this if you do not intend to commit.&lt;br /&gt;
 $ bzr launchpad-login johnq&lt;br /&gt;
&lt;br /&gt;
Then fetch Inkscape's trunk&lt;br /&gt;
 $ bzr checkout lp:inkscape&lt;br /&gt;
&lt;br /&gt;
To carry out a later update of Inkscape's trunk&lt;br /&gt;
 $ bzr update lp:inkscape&lt;br /&gt;
&lt;br /&gt;
==Using a centralized (SVN-like) workflow==&lt;br /&gt;
&lt;br /&gt;
In this case, every commit that you make is immediately sent to the central repository. There are two ways of achieving this:&lt;br /&gt;
&lt;br /&gt;
===SVN-style checkout===&lt;br /&gt;
&lt;br /&gt;
Get the latest Inkscape code as a checkout, as described above.&lt;br /&gt;
 $ bzr checkout lp:inkscape&lt;br /&gt;
&lt;br /&gt;
Now work as in SVN:&lt;br /&gt;
  &amp;lt;do work&amp;gt;&lt;br /&gt;
 $ bzr commit&lt;br /&gt;
  &amp;lt;error, someone else has changed things&amp;gt;&lt;br /&gt;
 $ bzr update&lt;br /&gt;
  &amp;lt;check all is okay&amp;gt;&lt;br /&gt;
 $ bzr commit&lt;br /&gt;
&lt;br /&gt;
If you add new files, add them to version control with &amp;lt;tt&amp;gt;bzr add ''file''&amp;lt;/tt&amp;gt;. You can recursively add all new files by writing simply &amp;lt;tt&amp;gt;bzr add&amp;lt;/tt&amp;gt; in the top level directory.&lt;br /&gt;
&lt;br /&gt;
===Binding a Bazaar branch===&lt;br /&gt;
&lt;br /&gt;
Branch Inkscape's code:&lt;br /&gt;
 $ bzr branch lp:inkscape&lt;br /&gt;
&lt;br /&gt;
Then transform your branch into a checkout:&lt;br /&gt;
 $ cd inkscape&lt;br /&gt;
 $ bzr bind lp:inkscape&lt;br /&gt;
&lt;br /&gt;
Now work as in SVN:&lt;br /&gt;
  &amp;lt;do work&amp;gt;&lt;br /&gt;
 $ bzr commit&lt;br /&gt;
  &amp;lt;error, someone else has changed things&amp;gt;&lt;br /&gt;
 $ bzr update&lt;br /&gt;
  &amp;lt;check all is okay&amp;gt;&lt;br /&gt;
 $ bzr commit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Differences from SVN===&lt;br /&gt;
&lt;br /&gt;
* Commits will fail if your checkout is not up to date, even if there would be no conflicts.&lt;br /&gt;
* The revision number is an attribute of the working tree, not of individual files. It is not possible to have different portions of the working tree at different revisions.&lt;br /&gt;
* &amp;lt;tt&amp;gt;bzr commit ''file''&amp;lt;/tt&amp;gt; works like &amp;lt;tt&amp;gt; svn commit ''file'' &amp;amp;&amp;amp; svn update ''project-root''&amp;lt;/tt&amp;gt;. After a successful partial commit, the entire tree's revision is increased by 1.&lt;br /&gt;
* No special server is needed to publish a branch. You can push branches to anywhere, including simple FTP shares. In our scenario, Launchpad works like a central repository, but it's not required to publish everything there.&lt;br /&gt;
* You create branches locally. To simulate creating a SVN-style branch on Launchpad, you need to create a local branch, push it, then bind it to the pushed location. At the end of these commands you end up with a checkout of &amp;lt;tt&amp;gt;lp:~inkscape.dev/inkscape/killer-feature&amp;lt;/tt&amp;gt;:&lt;br /&gt;
 $ bzr branch trunk killer-feature&lt;br /&gt;
 $ cd killer-feature&lt;br /&gt;
  &amp;lt;do work&amp;gt;&lt;br /&gt;
 $ bzr push lp:~inkscape.dev/inkscape/killer-feature&lt;br /&gt;
 $ bzr bind :push&lt;br /&gt;
&lt;br /&gt;
===Append-only branches===&lt;br /&gt;
&lt;br /&gt;
In the centralized workflow, you often want to ensure that revision numbering is immutable. In Bazaar, the revision log and numbering can differ depending on which way you merge (e.g. feature into trunk vs trunk into feature). To enforce immutable, monotonically increasing revision numbers on a branch, you can create it as append-only:&lt;br /&gt;
 $ bzr init --append-revisions-only&lt;br /&gt;
To set the append-only flag on an already existing branch, use the following command:&lt;br /&gt;
 $ bzr config -d ''url://of/branch'' append_revisions_only=True&lt;br /&gt;
You can learn the URL of a remote branch by using the command &amp;lt;tt&amp;gt;bzr info&amp;lt;/tt&amp;gt;. Launchpad branches have URLs such as &amp;lt;tt&amp;gt;bzr+ssh://bazaar.launchpad.net/~inkscape.dev/inkscape/trunk/&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Using a decentralized workflow==&lt;br /&gt;
&lt;br /&gt;
In this case you will be working locally until you are ready to publish your changes. The basic idea is to perform the work in a ''branch'' of the Inkscape codebase, since committing to a branch stores the changes locally in the branch itself. Then, to share the work with the rest of the Inkscape community, the changes in the branch are merged across to a ''checkout'' of the Inkscape repository. As the previous centralized workflow section describes, committing to a checkout sends the changes directly to the remote repository, making them part of the official Inkscape codebase.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' this workflow has been updated to avoid the &amp;quot;other people's commits become subrevisions of your commit&amp;quot; problem.&lt;br /&gt;
&lt;br /&gt;
This will assume this directory layout:&lt;br /&gt;
 inkscape&lt;br /&gt;
  +-trunk&lt;br /&gt;
  |  +-doc&lt;br /&gt;
  |  +-share&lt;br /&gt;
  |  +-src&lt;br /&gt;
  |  +-po&lt;br /&gt;
  |  +-...&lt;br /&gt;
  +-myproject&lt;br /&gt;
  +-some-other-branch&lt;br /&gt;
&lt;br /&gt;
In this layout, &amp;quot;trunk&amp;quot; is the checkout used for uploading changes to the central Inkscape repository, while &amp;quot;myproject&amp;quot; and &amp;quot;some-other-branch&amp;quot; are local branches used for working on specific features.&lt;br /&gt;
&lt;br /&gt;
===Repository setup===&lt;br /&gt;
&lt;br /&gt;
To speed things up, it's good to create a local shared repository. This way revision histories will only be stored in one place, instead of in every branch, so local branching will be faster and the branches will take up less space.&lt;br /&gt;
&lt;br /&gt;
Create a shared repository and enter it:&lt;br /&gt;
 $ bzr init-repo inkscape&lt;br /&gt;
 $ cd inkscape&lt;br /&gt;
&lt;br /&gt;
===Working locally===&lt;br /&gt;
&lt;br /&gt;
Get Inkscape's code&lt;br /&gt;
 $ bzr branch lp:inkscape myproject&lt;br /&gt;
&lt;br /&gt;
Now work:&lt;br /&gt;
 $ cd myproject&lt;br /&gt;
   ... work work work ...&lt;br /&gt;
 $ bzr commit -m &amp;quot;Some changes&amp;quot;&lt;br /&gt;
   ... more work work work ...&lt;br /&gt;
 $ bzr commit -m &amp;quot;More changes&amp;quot;&lt;br /&gt;
   ... create new file ...&lt;br /&gt;
 $ bzr add new-file.c&lt;br /&gt;
 $ bzr commit -m &amp;quot;Added new file with kittens&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Advanced local features===&lt;br /&gt;
&lt;br /&gt;
To undo a commit:&lt;br /&gt;
 $ bzr uncommit&lt;br /&gt;
This will leave your working tree in the state it was just before you wrote &amp;quot;bzr commit&amp;quot;. This is useful for example if you forgot to add a file, and want to keep a clean revision history. '''This will not work on an Inkscape trunk checkout.'''&lt;br /&gt;
&lt;br /&gt;
Let's say you started from r770, made 200 local commits, but you decided that what you did since r954 is completely wrong. You want to go back to revision 954 and do it differently. Here's one way to do this. First branch locally to preserve your work (maybe later you'll find out there's some way to save it). Then uncommit everything up to r954 and revert.&lt;br /&gt;
 $ bzr branch myproject myproject-dead-end&lt;br /&gt;
 $ cd myproject&lt;br /&gt;
 $ bzr uncommit -r 954&lt;br /&gt;
 $ bzr revert&lt;br /&gt;
&lt;br /&gt;
Sometimes a big change gets committed while you are working on a feature. If you want to check whether your code still works after the big change, merge from trunk.&lt;br /&gt;
 $ bzr merge&lt;br /&gt;
&lt;br /&gt;
In this case, you can omit where you are merging from, because the default is to merge from the branch you started from (the parent).&lt;br /&gt;
&lt;br /&gt;
To cherry-pick specific revisions from another branch:&lt;br /&gt;
 $ bzr merge -r340..360 ''branch_location''&lt;br /&gt;
Or to cherry-pick a single revision:&lt;br /&gt;
 $ bzr merge -c340 ''branch_location''&lt;br /&gt;
&lt;br /&gt;
===Publishing your work on Launchpad===&lt;br /&gt;
&lt;br /&gt;
To publish branches on Launchpad, you have to add an SSH key to your account. If you don't have one yet, generate it:&lt;br /&gt;
 $ ssh-keygen&lt;br /&gt;
   ... follow instructions ...&lt;br /&gt;
&lt;br /&gt;
Once you created the key, go to your Launchpad profile page, edit SSH keys and paste the contents of the key file (by default it's in &amp;lt;tt&amp;gt;~/.ssh/id_rsa.pub&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;~/.ssh/id_dsa.pub&amp;lt;/tt&amp;gt;) into the window. You can now use the Launchpad integration features.&lt;br /&gt;
&lt;br /&gt;
Login to Launchpad, if you didn't do it yet. You only need to do this once on each computer. You need to use your login name, not the display name.&lt;br /&gt;
 $ bzr launchpad-login johnq&lt;br /&gt;
&lt;br /&gt;
Publish your branch on Launchpad. If you push it under your username, only you will be able to modify it. If you have commit access and publish your branch under the username &amp;lt;tt&amp;gt;inkscape.dev&amp;lt;/tt&amp;gt;, all Inkscape developers will be able to change it.&lt;br /&gt;
 $ bzr push lp:~johnq/inkscape/myproject&lt;br /&gt;
 $ bzr push lp:~inkscape.dev/inkscape/myproject&lt;br /&gt;
&lt;br /&gt;
The push location will be saved. After more commits, you can simply write&lt;br /&gt;
 $ bzr push&lt;br /&gt;
&lt;br /&gt;
It's sometimes convenient to update the Launchpad copy after each commit. To save on typing, you can bind your working tree to the remote branch. This way every commit will be immediately published on the remote branch. Note that you won't be able to commit while offline.&lt;br /&gt;
 $ bzr bind :push&lt;br /&gt;
&lt;br /&gt;
'''Note that it is very helpful if other Inkscape developers can commit to your branch.''' For example, if someone is reviewing your code, it is much easier to make some quick edits than to tell you to make the edits. (for example, Johan will become very angry when he cannot commit small edits, he will stop reviewing right there, and never look at your branch again!)&lt;br /&gt;
The easiest way to make your branch commitable to others is to upload it as:&lt;br /&gt;
&lt;br /&gt;
 bzr push lp:~inkscape.dev/inkscape/myproject&lt;br /&gt;
&lt;br /&gt;
However, you must be a member of [https://launchpad.net/~inkscape.dev inkscape.dev] (have commit rights) to&lt;br /&gt;
do this. If you are not in inkscape.dev, you'll need to create a team&lt;br /&gt;
consisting of yourself and the Inkscape Developers group, and upload&lt;br /&gt;
as that team. (You can create a team from the front page of&lt;br /&gt;
Launchpad.)&lt;br /&gt;
&lt;br /&gt;
===Putting your work in the trunk===&lt;br /&gt;
&lt;br /&gt;
Once your new killer feature you made in a branch is ready, you need to merge your changes into a checkout of the trunk.  If you don't have one, do (in the directory ''containing'' myproject):&lt;br /&gt;
  $ bzr checkout lp:inkscape trunk&lt;br /&gt;
  $ cd trunk&lt;br /&gt;
&lt;br /&gt;
If you already have one on hand, make sure it's up to date:&lt;br /&gt;
  $ cd trunk&lt;br /&gt;
  $ bzr update&lt;br /&gt;
&lt;br /&gt;
Now that you have a local checkout of the current trunk:&lt;br /&gt;
  $ bzr merge ../myproject&lt;br /&gt;
  $ bzr commit -m 'added my feature'&lt;br /&gt;
&lt;br /&gt;
Alternatively, if you don't have a checkout but a branch:&lt;br /&gt;
 $ bzr merge ../myproject&lt;br /&gt;
 $ bzr commit -m 'added my feature'&lt;br /&gt;
 $ bzr push&lt;br /&gt;
&lt;br /&gt;
Note that you need to do the above sequence on a branch that has not diverged from the trunk, otherwise it will fail, as the trunk is append-only.&lt;br /&gt;
&lt;br /&gt;
The third method is to merge trunk into your local branch, then push:&lt;br /&gt;
 $ bzr merge ../trunk&lt;br /&gt;
 $ bzr commit -m 'added my feature'&lt;br /&gt;
 $ bzr push&lt;br /&gt;
&lt;br /&gt;
'''WARNING:''' This last method should be avoided if possible. If any work was done in trunk since you branched, all of it will be converted into subrevisions of your merge commit and revision numbers will change. This method will also fail with append-only branches, such as Inkscape's trunk on Launchpad.&lt;br /&gt;
&lt;br /&gt;
====Undoing a wrong-way merge====&lt;br /&gt;
:''NOTE: Inkscape and Lib2geom trunks are append-only, so you will be prevented from doing the mistake discussed here, but this information is provided here in case it is useful for other projects.''&lt;br /&gt;
&lt;br /&gt;
Let's say you merged trunk into a feature branch, then pushed that as the new trunk, and this &amp;quot;erased&amp;quot; some revisions. In reality the revisions are still present, but they became subrevisions of the merge commit. To restore the old revision numbers with your merge as the last revision, do this. First, find the revision into which you want to merge the feature changes. This will usually be the second parent of the mangling merge revision.&lt;br /&gt;
 $ bzr log --show-ids&lt;br /&gt;
 $ bzr visualise   ''(requires bzr-gtk plugin)&lt;br /&gt;
&lt;br /&gt;
Now branch from this revision:&lt;br /&gt;
 $ bzr branch lp:myproject -r johnq@example.com-20111230042529-0iwskf9kff2xdmzg&lt;br /&gt;
&lt;br /&gt;
Merge your changes the correct way and commit:&lt;br /&gt;
 $ bzr merge lp:myproject&lt;br /&gt;
 $ bzr commit&lt;br /&gt;
&lt;br /&gt;
Replace the trunk with the correct version with unmangled history:&lt;br /&gt;
 $ bzr push --overwrite lp:myproject&lt;br /&gt;
&lt;br /&gt;
You can now convert the fixed local branch into a checkout of your project's trunk:&lt;br /&gt;
 $ bzr bind :push&lt;br /&gt;
&lt;br /&gt;
===Working with patch files===&lt;br /&gt;
&lt;br /&gt;
If you don't have permission to commit to the trunk, you can bundle your branch's changes into a patch instead:&lt;br /&gt;
  $ bzr send -o mychanges.patch&lt;br /&gt;
&lt;br /&gt;
To apply patches produced by the above command, just do this:&lt;br /&gt;
  $ bzr patch somechanges.patch&lt;br /&gt;
&lt;br /&gt;
===Local branching===&lt;br /&gt;
&lt;br /&gt;
Naturally, all this also works locally. For example, when you're in the &amp;lt;tt&amp;gt;inkscape&amp;lt;/tt&amp;gt; directory, you can write &amp;lt;tt&amp;gt;bzr branch trunk export-dialog&amp;lt;/tt&amp;gt; to create a new branch of the trunk called &amp;lt;tt&amp;gt;export-dialog&amp;lt;/tt&amp;gt;, where you'll work only on improving the export dialog. Similarly, you can merge between local branches.&lt;br /&gt;
&lt;br /&gt;
==Using Git-style branches==&lt;br /&gt;
&lt;br /&gt;
Git stores many branches in one directory, and allows you to switch between them. This is also possible in Bazaar. One way is to use native Bazaar facilities, the other is to use the [https://launchpad.net/bzr-colo bzr-colo] plugin. We'll cover the native way, since the plugin has good documentation.&lt;br /&gt;
&lt;br /&gt;
First, create a no-working-trees shared repository. The repo directory can be hidden if you want.&lt;br /&gt;
 $ bzr init-repo --no-trees .inkscape-repo&lt;br /&gt;
&lt;br /&gt;
Fetch the trunk and any other branches you want into our repository. (You can also push your local branches.)&lt;br /&gt;
 $ bzr branch lp:inkscape .inkscape-repo/trunk&lt;br /&gt;
 $ bzr branch lp:inkscape/0.48.x .inkscape-repo/0.48.x&lt;br /&gt;
 $ bzr push killer-feature .inkscape-repo/killer-feature&lt;br /&gt;
&lt;br /&gt;
Create your working tree by making a lightweight checkout of a desired branch. The &amp;lt;tt&amp;gt;--lightweight&amp;lt;/tt&amp;gt; parameter is imp[ortant, otherwise you can run into problems.&lt;br /&gt;
 $ bzr checkout --lightweight .inkscape-repo/trunk inkscape&lt;br /&gt;
 $ cd inkscape&lt;br /&gt;
&lt;br /&gt;
If you have an existing checkout of the trunk, use the following command:&lt;br /&gt;
 $ cd inkscape&lt;br /&gt;
 $ bzr reconfigure --lightweight-checkout --bind-to ../.inkscape-repo/trunk&lt;br /&gt;
&lt;br /&gt;
Now you can work in the &amp;lt;tt&amp;gt;inkscape&amp;lt;/tt&amp;gt; directory like you would on a normal branch. If you want to switch to a different branch, use:&lt;br /&gt;
 $ bzr switch ../.inkscape-repo/killer-feature&lt;br /&gt;
&lt;br /&gt;
To create a new branch in the repository:&lt;br /&gt;
 $ bzr switch -b ../.inkscape-repo/killer-feature-2&lt;br /&gt;
&lt;br /&gt;
==Best Practices for Inkscape Project==&lt;br /&gt;
&lt;br /&gt;
===Registering Bugfixes===&lt;br /&gt;
&lt;br /&gt;
Launchpad will automatically link a bug report to a branch and mark it &amp;quot;Fix Available&amp;quot; once somebody commits using the flag --fixes, e.g. (if you fix those two bugs in one commit):&lt;br /&gt;
 bzr commit --fixes lp:123456 --fixes lp:123457 -m 'patch description'&lt;br /&gt;
Then, bugs can be changed automatically from &amp;quot;Fix Available&amp;quot; to &amp;quot;Fix Released&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[http://doc.bazaar-vcs.org/bzr.dev/en/tutorials/using_bazaar_with_launchpad.html#changing-the-state-in-launchpad-while-committing-in-bazaar Read more: &amp;quot;Changing the state in Launchpad while committing in Bazaar&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
===Test branches before committing merges===&lt;br /&gt;
&lt;br /&gt;
Whenever a branch is merged into Inkscape trunk, the automated tests should be run to check for a few potential errors.  This is achieved by running the &amp;quot;make check&amp;quot; command after merging (but before committing any changes).  See the example below.&lt;br /&gt;
&lt;br /&gt;
===Proper way of merging===&lt;br /&gt;
&lt;br /&gt;
To repeat, don't do something like:&lt;br /&gt;
 $ bzr branch lp:inkscape myproject&lt;br /&gt;
 ... work ...&lt;br /&gt;
 $ bzr commit&lt;br /&gt;
 $ bzr merge               # NOOOO!!! We are doomed!&lt;br /&gt;
 $ bzr push lp:inkscape&lt;br /&gt;
&lt;br /&gt;
It would obfuscate the revision history: trunk commits that happened between the time you branched and the time you pushed would get grouped into one. Additionally, to prevent this obfuscation, Inkscape's trunk is set to append-only, so the above sequence of commands would fail. Do the merge the other way around:&lt;br /&gt;
&lt;br /&gt;
 $ bzr branch trunk myproject&lt;br /&gt;
 $ cd myproject&lt;br /&gt;
 ... work ...&lt;br /&gt;
 $ bzr commit&lt;br /&gt;
 $ cd ../trunk&lt;br /&gt;
 $ bzr merge ../myproject  # correct!&lt;br /&gt;
 $ make check              # Run automated testing&lt;br /&gt;
 $ bzr commit&lt;br /&gt;
&lt;br /&gt;
You'll need a trunk checkout, but the revision history will be much less confusing, and it's useful to have a trunk checkout anyway for minor fixes.&lt;br /&gt;
&lt;br /&gt;
===Fixing a bug in both trunk and a release branch===&lt;br /&gt;
&lt;br /&gt;
This will assume this directory layout:&lt;br /&gt;
 inkscape&lt;br /&gt;
  +-trunk&lt;br /&gt;
  |  +-src&lt;br /&gt;
  |  +-...&lt;br /&gt;
  +-0.48.x&lt;br /&gt;
  |  +-src&lt;br /&gt;
  |  +-...&lt;br /&gt;
&lt;br /&gt;
Fix the bug in trunk and commit it, let's say it will be revision 1234.&lt;br /&gt;
Go to the release branch directory, e.g. 0.48.x, and write&lt;br /&gt;
&lt;br /&gt;
 $ bzr merge -r 1233..1234 ../trunk&lt;br /&gt;
&lt;br /&gt;
The operation can take a while. Resolve any conflicts, fix any compilation failures, then commit to the release branch, or post the diff to a Launchpad bug report.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://doc.bazaar-vcs.org/latest/en/ Bazaar manual]&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Shlomif</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Extension_repository&amp;diff=88694</id>
		<title>Extension repository</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Extension_repository&amp;diff=88694"/>
		<updated>2013-05-29T13:24:36Z</updated>

		<summary type="html">&lt;p&gt;Shlomif: Correct grammar.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;It would be very useful to have a central Internet repository for Inkscape extensions, in a similar manner to Firefox. This way, Inkscape could update installed extensions from the web site, with no need for the user to know if an extension was updated.&lt;br /&gt;
&lt;br /&gt;
== Extensions ==&lt;br /&gt;
&lt;br /&gt;
===[[ExtrudeEffect]]===&lt;br /&gt;
Extrude polygons to &amp;quot;3d&amp;quot;, also make &amp;quot;string art&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===[http://wiki.colivre.net/Aurium/InkscapeCalendarShellScript InkscapeCalendarShellScript]===&lt;br /&gt;
Creating calendars sucks or is impractical if you do not have something that automates the process of putting the days organized in blocks of months for you. To format manually is easy, but this extension can help you on this too Bash script, works for Win32 with Cygwin.&lt;br /&gt;
&lt;br /&gt;
===[http://wiki.colivre.net/Aurium/InkscapeAreaCuter InkscapeAreaCutter]===&lt;br /&gt;
For web designers. Slice your site design into .png images. (pt_BR)&lt;br /&gt;
&lt;br /&gt;
===[http://www.julienvitard.eu/ EQTeXSVG]===&lt;br /&gt;
Convert an inline LATEX equation into SVG path using Python.&lt;br /&gt;
&lt;br /&gt;
===[http://www.kono.cis.iwate-u.ac.jp/~arakit/inkscape/inklatex.html InkLaTeX]===&lt;br /&gt;
Insert LaTeX text or equations into Inkscape.&lt;br /&gt;
&lt;br /&gt;
===[http://www.iki.fi/pav/software/textext/ TexText]===&lt;br /&gt;
Embed re-editable LaTeX objects into SVG drawings.&lt;br /&gt;
&lt;br /&gt;
===[http://math.univ-lille1.fr/~barraud/Inkscape/pathdeform/ PathDeform]===&lt;br /&gt;
Bend a path according to another one. &lt;br /&gt;
N.B. This extension was added to Inkscape 0.45 as &amp;quot;Pattern along Path&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===[http://www.inkbar.lineaire.net/ InkBar]===&lt;br /&gt;
Create EAN13 bar codes.&lt;br /&gt;
&lt;br /&gt;
===[http://technoargia.free.fr/swftools/ SWF output]===&lt;br /&gt;
Save drawings as SWF.&lt;br /&gt;
&lt;br /&gt;
===[http://wiki.colivre.net/Aurium/Puff Puff]===&lt;br /&gt;
Fluffs elements! :D&lt;br /&gt;
&lt;br /&gt;
===[http://www.colivre.coop.br/Aurium/InkSudoku Sudoku Generator]===&lt;br /&gt;
Generates a Sudoku square with its solution (''in a small square if you want'').&lt;br /&gt;
&lt;br /&gt;
===[[CalligraphedOutlineFill]]===&lt;br /&gt;
Helps to fill in the inside area of shapes drawn with the Calligraphy tool.&lt;br /&gt;
&lt;br /&gt;
===[http://edlab.die.unipd.it/Site4.html SlotStar]===&lt;br /&gt;
Helps to draw the star of slot of a winding of an electrical machine&lt;br /&gt;
&lt;br /&gt;
===[http://richard.henwood.googlepages.com/inkscapelatexextension inkscapeLatexExtension]===&lt;br /&gt;
Extract text in an SVG drawing to a LaTeX picture environment.&lt;br /&gt;
&lt;br /&gt;
===[http://saws.googlecode.com s.a.w.s]===&lt;br /&gt;
Export an SVG as valid XHTML/CSS files.&lt;br /&gt;
&lt;br /&gt;
===[http://www.colivre.coop.br/Aurium/InkscapeGenerator Generator]===&lt;br /&gt;
Replace text and data to automatically generate files (as PDF, PS, JPG, etc...), based on an SVG template and a data file. eg a CSV file&lt;br /&gt;
&lt;br /&gt;
===[http://code.google.com/p/inkscape2tikz/ TikZ exporter]===&lt;br /&gt;
Export SVG paths as TikZ/PGF code for use with LaTeX.  &lt;br /&gt;
&lt;br /&gt;
===[[FindMatch]]===&lt;br /&gt;
Looks for paths that match the selected path and places all matches on the same layer.&lt;br /&gt;
&lt;br /&gt;
===[http://xico.freeshell.org InkSyntax]===&lt;br /&gt;
A source code syntax highlighter plugin for Inkscape (wrapping [http://www.pygments.org pygments] and [http://www.andre-simon.de/doku/highlight/en/highlight.html highlight]).&lt;br /&gt;
&lt;br /&gt;
===[http://sites.google.com/site/placeonpath/ Place Objects on Path]===&lt;br /&gt;
Places objects on a curve. The curve is the object that has the lowest z-order (and which must be a path). Distances between objects remain the same as they were before placing. If objects can't be placed on the curve because of their distances they are left in place. Objects will not be modified; clones are allowed. Arrange distances between your objects manually first as curve position and direction.&lt;br /&gt;
&lt;br /&gt;
===[http://code.google.com/p/jessyink/ JessyInk]===&lt;br /&gt;
A collection of Javascripts that can be embedded into an SVG file to produce slide shows on opening in a browser. Current releases of JessyInk include a number of inkscape extensions to assign effects, transitions and other aspects of the presentations.&lt;br /&gt;
&lt;br /&gt;
===[http://svg2dxf.googlecode.com/files/svg2dxf_inkscape.zip svg2dxf]===&lt;br /&gt;
Updated version of [http://www.bobcookdev.com/inkscape/inkscape-dxf.html Better Better DXF output] which adds support for polylines and does not overwrite the default inkscape simpletransform.py. See README if getting lxml xpath errors.&lt;br /&gt;
&lt;br /&gt;
===[http://code.google.com/p/pixelsnap/ PixelSnap]===&lt;br /&gt;
Tool for aligning object/paths onto the pixel grid for bitmap export.&lt;br /&gt;
&lt;br /&gt;
===[http://code.google.com/p/inkscape-guides-creator/ Guide creator]===&lt;br /&gt;
Creates multiple guides at once, at set intervals. &lt;br /&gt;
&lt;br /&gt;
===[http://code.google.com/p/inkscapescalegenerator/ Scale Generator]===&lt;br /&gt;
Create ruler scales / map scales.&lt;br /&gt;
&lt;br /&gt;
===[http://code.google.com/p/scott-inkscape/wiki/SevenSegmentDigits Seven Segment Digits]===&lt;br /&gt;
Create calculator style digits.&lt;br /&gt;
&lt;br /&gt;
===[http://www.cnc-club.ru/forum/viewtopic.php?f=15&amp;amp;t=37&amp;amp;p=92 Close curves]===&lt;br /&gt;
Closes all open paths in the selection.&lt;br /&gt;
&lt;br /&gt;
===[http://www.cnc-club.ru/forum/viewtopic.php?f=15&amp;amp;p=101 Gcode tools]===&lt;br /&gt;
Generates Gcode program (used in CNC machinery) from given paths.&lt;br /&gt;
&lt;br /&gt;
===[http://dp48069596.lolipop.jp/inkscape_script.html Closeoff, Scatterpath, Selection, Zigzag and Netting]===&lt;br /&gt;
See [http://dp48069596.lolipop.jp/inkscape_video.html] for how to use Zigzag and scater extensions.&lt;br /&gt;
&lt;br /&gt;
===[http://wiki.xmoto.tuxfamily.org/index.php?title=How_to_create_smooth_levels_using_Inkscape Inksmoto]===&lt;br /&gt;
Level editor for the Xmoto game.&lt;br /&gt;
&lt;br /&gt;
===[http://www.cnc-club.ru/forum/viewtopic.php?f=33&amp;amp;t=37 Close Curves]===&lt;br /&gt;
Extension to close the paths in the selection, useful for importing filled paths into openoffice.&lt;br /&gt;
&lt;br /&gt;
===[http://kalyaev.com/2010/20100423/gcodetools.html gcodetools]===&lt;br /&gt;
Gcodetools is a plug-in for Inkscape. It prepares and converts paths from Inkscape to Gcode, using biarc interpolation. for use with CNC milling machines.&lt;br /&gt;
&lt;br /&gt;
===[http://www.signcutpro.com/SignCut-Productivity-Pro/signcut-export-plugins.html SignCut Export]===&lt;br /&gt;
Set of extensions that come with SignCut to enable Inkscape users to use plotters / cutters via the SignCut software.&lt;br /&gt;
&lt;br /&gt;
===[http://www.lysator.liu.se/~perni/iboardgameexts/ Boardgame extensions]===&lt;br /&gt;
Inkscape Extensions for Boardgame Developlemt [http://www.boardgamegeek.com/thread/299033/inkscape-extensions-for-boardgame-developlemt 1]. Includes a hexagonal board/hexmap creator and tools to sheets of tiles for counters ect.&lt;br /&gt;
&lt;br /&gt;
===[http://camm-gl.dyndns.org/ Inkscape CAMM-GL Extension]===&lt;br /&gt;
... vinyl cutting utility for Inkscape&lt;br /&gt;
&lt;br /&gt;
This program is basically just a cut manager. Create artwork in Inkscape, save with the supplied hpgl_output extension, and cut or plot with this program. The program does provide some useful functions, but it is by no means a fully featured solution. I do use it exclusivly, and it currently satisfies my needs.&lt;br /&gt;
&lt;br /&gt;
===[http://salug.it/~fabioviola/inkscape/extensions Badge Renderer]===&lt;br /&gt;
... A little script to render a badge in a Inkscape document. &lt;br /&gt;
This is only a little python script used as example in an article for my GLUG (SaLUG!) journal. This can be used to quickly render a badge. It can be improved, for example, with shadow direction and reflex direction. As soon as possible I'll do it.&lt;br /&gt;
&lt;br /&gt;
===[http://www.craigmarshall.org/archives/8 Guillotine]===&lt;br /&gt;
This is a mirror of the GIMP guillotine function, it allows you to drag guides onto the canvas, and then using Export-&amp;gt;Guillotine, export those slices as pngs to the directory and filename of your choice. It also has an option for using export hints, if your drawing has previously been exported. [http://www.inkscapeforum.com/viewtopic.php?f=11&amp;amp;t=5832 Forum link]&lt;br /&gt;
&lt;br /&gt;
===[http://code.google.com/p/inkscape-replace-font/ Replace Font]===&lt;br /&gt;
Allows mass replacement of the fonts in a document. Can list existing fonts. [http://www.inkscapeforum.com/viewtopic.php?f=11&amp;amp;t=5843 Forum link]&lt;br /&gt;
&lt;br /&gt;
=== [http://sozi.baierouge.fr/wiki/doku.php?id=en:welcome Sozi] ===&lt;br /&gt;
A tool for presentations made using zooms and rotations, not just slides. Uses Javascript added to the .svg file to display in web-browsers&lt;br /&gt;
&lt;br /&gt;
===[http://www.inkscapeforum.com/viewtopic.php?f=11&amp;amp;t=5943 CMYK pdf/tiff export]===&lt;br /&gt;
Extension to export to CYMK colourspaced PDFs / Tiffs. In development (september 2010)&lt;br /&gt;
&lt;br /&gt;
===[http://sourceforge.net/projects/o-scape/ O-Scape; Orienteering map making tools]===&lt;br /&gt;
Extensions to help make Orienteering maps; see this [http://www.nopesport.com/news/1343-o-scape-free-orienteering-mapping-software interview] for more information&lt;br /&gt;
&lt;br /&gt;
===[http://www.inkscapeforum.com/viewtopic.php?f=5&amp;amp;t=4729#p32019 Mirror]=== &lt;br /&gt;
Mirror a path along any axis.&lt;br /&gt;
&lt;br /&gt;
===[http://sourceforge.net/projects/inkscape-tables/ Tables in Inkscape]===&lt;br /&gt;
Adds (experimental?) table suport as an extension.&lt;br /&gt;
&lt;br /&gt;
===[http://doctormo.org/2011/05/19/deviantart-plugins-released/ deviantArt uploaders]===&lt;br /&gt;
Upload artwork to deviantArt from the &amp;quot;publish to&amp;quot; menue item under extensions.&lt;br /&gt;
&lt;br /&gt;
===[http://code.google.com/p/inkscape-music-scale-generator/ Musical scales]===&lt;br /&gt;
Extension for automatic generation schemes of musical scale and chords on piano.&lt;br /&gt;
&lt;br /&gt;
===[http://www.inkscapeforum.com/viewtopic.php?f=11&amp;amp;t=9212 Text from CSV]===&lt;br /&gt;
Extension to enter text from a CSV file&lt;br /&gt;
&lt;br /&gt;
===[http://luther.ceplovi.cz/git/inkscape-ungroup-deep.git/ Deep Ungroup]===&lt;br /&gt;
Ungroup all groups in the selected object.&lt;br /&gt;
&lt;br /&gt;
===[http://www.pernsteiner.org/inkscape/layerclip/ Layer Clip]===&lt;br /&gt;
This is a a set of Inkscape extension scripts for setting and removing clip paths for entire layers. Inkscape has no trouble rendering or editing layers with clip paths, but it currently has no built-in method of setting the clip path for a layer, this is the purpose of these extensions.&lt;br /&gt;
&lt;br /&gt;
Features include: Clip containing layer, Clip layer above, Clip layer below, Clip parent layer.&lt;br /&gt;
&lt;br /&gt;
'''''Notes:'''&lt;br /&gt;
''You must select an object in the clipping layer before applying the extension, otherwise you will receive an error message.&lt;br /&gt;
It is a good idea to lock the layer after the extension has been applied. You may also require hiding the clipping layer when using &amp;quot;Clip layer below&amp;quot;. This may be exploited to create a masking layer.&lt;br /&gt;
Tested on Inkscape 0.48.2 r98''19''&lt;br /&gt;
&lt;br /&gt;
===[https://bitbucket.org/daviddamerell/inkscapesaveasicoextension Icon Generation]===&lt;br /&gt;
This is an Inkscape output extension that adds an option to the &amp;quot;save-as&amp;quot; dialog box to generate Windows Icon files (*.ico).&lt;br /&gt;
&lt;br /&gt;
==Extensions for Programmers:==&lt;br /&gt;
===[http://wiki.colivre.net/Aurium/RubyInk RubyInk]===&lt;br /&gt;
Inkscape extension with Ruby&lt;br /&gt;
&lt;br /&gt;
===[http://wiki.colivre.net/Aurium/InkBash Ink-Bash]===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;ShellScript&amp;lt;/nowiki&amp;gt; Forever!&lt;br /&gt;
&lt;br /&gt;
===[http://wiki.colivre.net/Aurium/InkMoz InkMoz]===&lt;br /&gt;
The Bridge from Inkscape to Mozilla (Inkscape extension with Javascript and more)&lt;br /&gt;
&lt;br /&gt;
== The Repository Specification ==&lt;br /&gt;
&lt;br /&gt;
A website where programmers can publish their extensions, users can search by that, and an update program can access this updates.&lt;br /&gt;
&lt;br /&gt;
=== The Website ===&lt;br /&gt;
&lt;br /&gt;
Must Have:&lt;br /&gt;
* '''User Registration''': to allow upload, votes and comments&lt;br /&gt;
* '''Extension Validation''': when published, it is public, but the user must be notified that was not validated (the code must be viewed by an validator user). The software updater do not update non-validated versions.&lt;br /&gt;
** '''Validation Feedback''': the validator user must write why the extension was not validated.&lt;br /&gt;
** '''Extension Deletion''': the validator user can delete an extension or version when he found a malicious code. The upload user must be marked as a malicious user and the account must be blocked.&lt;br /&gt;
* '''Extension Search''': with filter, by any available data.&lt;br /&gt;
* '''User Votes and Comments for Extensions''': The user can vote and/or comment an extension version.&lt;br /&gt;
* '''Extension Bug-Tracker''': today, third part extensions are in simple web-pages. The site may have a Bug-Traker to help all little scripts.&lt;br /&gt;
* '''User Extensions Requests''': a lot of users have ideas. Here is a good place for programmers see and make that alive.&lt;br /&gt;
* '''Host a cool page for the extension''': allow introduction text, documenbtation, screenshots, examples, and '''i18n'''!&lt;br /&gt;
* '''Help the l10n of this extensions''': with a web interface, like pootle and provide the l10n file for the updater program.&lt;br /&gt;
* '''Provide Version Control''': A SVN account will be cool, but web uploads (by web-forms) can be transparently SVN commits.&lt;br /&gt;
&lt;br /&gt;
=== The Extension Meta-Data ===&lt;br /&gt;
&lt;br /&gt;
''The data in INX file and more some, like the OS and Inkscape version compatibility...''&lt;br /&gt;
&lt;br /&gt;
The INX file will define the meta-data settable by that. If some extension uses multiples INX files to have more than one option in the menu, all INX files must be read to set the meta-data. The meta-data will be cached in a database to help the search. The DB only need the meta-data of the last validated version and the last non-validated (if that is newer).&lt;br /&gt;
&lt;br /&gt;
=== The Update Program ===&lt;br /&gt;
&lt;br /&gt;
* '''Search for New Extensions''': when the user request&lt;br /&gt;
* '''Update Extensions''': search for updates and install that&lt;br /&gt;
* '''Help the Code Validation''': for advanced users. Show the extension code and the diff if is that an update.&lt;br /&gt;
* '''Help the User Bug-Reporting''': that is not working! The user must say now! ''(When the Update Program be part of the Inkscape, the error window can have a button to submit a bug-report)''&lt;br /&gt;
* '''Must test the extension dependencies''': the user must know what is needed to install before try to use.&lt;br /&gt;
&lt;br /&gt;
== Name Proposal ==&lt;br /&gt;
&lt;br /&gt;
Propose a name for the Inkscape Extension Repository:&lt;br /&gt;
&lt;br /&gt;
* '''The Factory'''&lt;br /&gt;
* '''Extension Factory'''&lt;br /&gt;
* '''INX Factory'''&lt;br /&gt;
&lt;br /&gt;
''Why Factory? Because it is not only a repository. ;-)''&lt;br /&gt;
&lt;br /&gt;
* '''The Furnace'''&lt;br /&gt;
''Because Fire &amp;amp; Coal (Passion &amp;amp; Knowledge) are your tools for creating the extensions''&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;br /&gt;
[[Category:Extensions]]&lt;br /&gt;
&lt;br /&gt;
== Mockups ==&lt;br /&gt;
&lt;br /&gt;
Here are some suggestions for what an extension repository might look like.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Extension_repository_-_homepage.png|The home page.&lt;br /&gt;
File:Extension_repository_-_extension_page.png|The page for an individual extension.&lt;br /&gt;
File:Extension_repository_-_request_page.png|The page for an individual request.&lt;br /&gt;
File:Extension_repository_-_search_page.png|The search form page.&lt;br /&gt;
File:Extension_repository_-_search_results.png|The search results page.&lt;br /&gt;
File:Extension_repository_-_submit_extension.png|The extension submission page.&lt;br /&gt;
File:Extension_repository_-_submit_request.png|The request submission page.&lt;br /&gt;
File:Extension_repository_-_requests.png|The main requests page.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I have no idea of the detail of this project; I don't currently have the skills necessary to try implementing it. I'm also not sure whether it's a good idea for Inkscape to offer hosted repositories (using [http://www.redmine.org/projects/redmine Redmine] or [http://trac.edgewall.org/ Trac]?) or whether it would be better to just leave it to the developer to use somewhere like [http://github.com/ GitHub] or [http://bitbucket.org/ BitBucket] and then use their APIs to pull some basic data onto the site. [[User:Legio noctis|Legio noctis]] 10:19, 23 May 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Shlomif</name></author>
	</entry>
</feed>