https://wiki.inkscape.org/wiki/api.php?action=feedcontributions&user=Mc&feedformat=atomInkscape Wiki - User contributions [en]2024-03-29T07:17:38ZUser contributionsMediaWiki 1.36.1https://wiki.inkscape.org/wiki/index.php?title=Google_Summer_of_Code&diff=122656Google Summer of Code2024-02-09T23:37:21Z<p>Mc: /* Candidate Applications */</p>
<hr />
<div><div style="max-width:70em; margin-left: auto; margin-right: auto"><br />
= Welcome to Inkscape! =<br />
<br />
For quite a few years Inkscape has been successfully participating in [http://code.google.com/soc/ Google Summer of Code].<br />
<br />
Google has opened up the program to students AND beginners to Open Source who are 18 years are older. Projects can be medium size (~175 hours) or large size (~350 hours). Finish times are flexible, 12 to 22 weeks (with agreement of mentor).<br />
<br />
GSoC is a program where Google funds the development of specific features in open source software by university students and other new to open source. You don't need to be a Computer Science student to apply. Features to be developed are picked by Inkscape administrators from the pool of proposals submitted by applicants.<br />
<br />
We've mentored about half a dozen students a year since GSoC started. Many students enjoyed their work and continue to be involved; perhaps your mentor will be a past GSoC student! We have a high rate of acceptance of student code into the core codebase. Indeed, GSoC projects have been a key source of some of Inkscape's best features in the past several releases.<br />
<br />
If you are interested in joining us this summer, it is time to get your proposal ready. You can choose a proposal from our list of suggestions or come up with one of your own. In either either case, you '''must''' give us a detailed outline of what you plan to do. It is '''highly''' recommended that you discuss your idea as early as possible with Inkscape developers. They not only can give you guidance as you flesh out your proposal but ultimately you must convince them that you can do the work planned in the time allotted. '''If you have not discussed your proposal with Inkscape developers before you apply, your application will be rejected!'''<br />
<br />
= Candidate Applications =<br />
<br />
* Google program information:<br />
** [https://summerofcode.withgoogle.com/ Home page].<br />
** Summer of Code Application form. Applications open at 18:00 UTC on March 18th, 2024. -> https://developers.google.com/open-source/gsoc/timeline<br />
<br />
* Inkscape-specific information:<br />
** [[SOC Application Template]].<br />
** [[Roadmap | Inkscape Roadmap]] - to see our overall objectives.<br />
** [[Projects | Inkscape Development Project Ideas]] - broader list of development ideas.<br />
** [[SOC Writing Project Proposals]] - some guidelines for proposals.<br />
** [[SOC Selection Criteria]] - how we rate applications.<br />
<br />
'''Candidate Applications for GSoC 2024 must be submitted to the GSoC site by 18:00 UTC on April 2nd 2024.'''<br />
<br />
= The "two patches" rule =<br />
<br />
We require two patches from each potential GSoC student, before accepting the student for GSoC participation (it is the same requirement as for obtaining rights to commit changes to the code repository).<br />
<br />
The reason for this requirement is that you can show us that you have succeeded in building Inkscape on your PC, and that you have understood a little piece of Inkscape's code and are able to improve it. <br />
Inkscape is a large project, and you really should not try to understand all the code. Many (all?) developers know only parts of the program code!<br />
You can join our [https://inkscape.org/community/discussion/ IRC] channel or [https://chat.inkscape.org/channel/team_devel Rocket Chat] and ask developers for help.<br />
<br />
== Suggested "easy" bug fixes or improvements ==<br />
<br />
To get you started on Inkscape development, you can find (probably) easy-to-fix bugs or small improvements that require very little knowledge of the whole program by searching our [https://gitlab.com/inkscape/inkscape/issues/ bug-tracker] for bugs tagged with 'easy-fix'.<br />
<br />
= Performance Evaluation =<br />
<br />
GSoC has two formal evaluation points, at the ''mid-term'' and at the end. These evaluations determine if you receive the stipend from Google. In order to receive a pass for the evaluations you will need to show adequate progress toward your project's goals.<br />
<br />
To help you meet your goals and so that your mentor can better evaluate your progress you need to:<br />
<br />
* Have frequent, public discussions of your progress. (Don't rely on just your mentor for advice.)<br />
* Have a public Inkscape branch for your code to which you commit regularly.<br />
* Give weekly status reports.<br />
<br />
For the final pass, you will normally be required to merge your code into Inkscape trunk.<br />
<br />
Remember: ''we want you to succeed!''<br />
<br />
= Suggested Project Ideas =<br />
<br />
The following is a list of formal project suggestions, but do not feel limited to only these - some of our best contributions have been unique ideas that students had in mind from other sources!<br />
<br />
See also [[Development Project Ideas]], [[Refactoring projects]], [[Projects]], and https://blueprints.launchpad.net/inkscape/<br />
<br />
==P1. Better CSS Style Sheet Support==<br />
<br />
Enhance Inkscape's support for CSS style sheets.<br />
<br />
* Estimation of difficulty: Moderately hard - Long (350h)<br />
* Potential mentors: Tavmjong Bah<br />
* Programming skills needed: C++<br />
* Prerequisites: Experience with CSS style sheets.<br />
<br />
<u>Detailed Description</u><br />
<br />
Inkscape has basic support for CSS style sheets that can read and parse internal style sheets. A 2016 GSoC project added a simple style dialog that can create and modify the internal style sheet. The dialog is very limited and is not intuitive to use. A 2017 GSoC project added support for CSS 3 selectors. More work has been done recently, creating the ''Selectors and CSS'' dialog... This project will extend the usefulness of that dialog by making it more user friendly and by extending its functionality.<br />
<br />
<u>Use Cases</u><br />
<br />
* Support externally created SVGs.<br />
* Producing better SVGs for the Web.<br />
* Changing style on multiple objects at once (palettes).<br />
<br />
<u>Related Material</u><br />
<br />
* [https://www.w3.org/TR/CSS2/ CSS 2 Specification]<br />
* [https://www.w3.org/TR/css-2015/ CSS 2015 Snapshot]<br />
<br />
==P5. UI-Free Inkscape ==<br />
<br />
* Estimation of difficulty: Difficult - Long (350h)<br />
* Potential mentors: Marc Jeanmougin<br />
* Programming skills: C++, CMake<br />
* Prerequisites: Minimal knowledge of build systems. Experience with GtkMM helpful.<br />
<br />
<u>Detailed Description</u><br />
Inkscape currently builds with X11 and gtk and a lot of graphical dependencies. But since it is allowed to run in commandline, and there are controlled environments (servers) that use it to convert svg to png and to perform actions, there should be no need to force it to build with those. The main goal of this project is to add a WITH_GUI compilation flag that when OFF, does *not* link Inkscape with any graphical dependency. While much work has been done towards this goal, much remains to be done. DONE <s>As a next step, Inkscape's "verbs" which are mostly GUI dependent (even if there is no reason to be) need to be converted to Gio::Actions.</s> More work needs to be done to separate out hidden GUI dependencies that remain after the Verb to Action transition.<br />
<br />
<u>Use cases</u><br />
* Server installs, scripts<br />
<br />
==P6. Refactoring==<br />
* Estimation of difficulty: Moderate - Short or Long depending on scope (175h or 350h)<br />
* Potential mentors: Tavmjong Bah<br />
* Programming skills: C++<br />
* Prerequisites: proficient C++.<br />
<br />
<u>Detailed Description</u><br />
Inkscape began life as the C program Sodipodi. Sodipodi was mostly the work of one person who had a clear vision of how the code should work. A major motivation of the Inkscape fork was to allow others to easily contribute to development. This resulted in rapid development but at a cost: the code has become much messier and now lacks a clear vision. This project is to work on refactoring the code. Refactoring can take many forms. It could be creating a better directory structure with README's that describe the purpose and function of the code in each directory. This would include rewriting code to reduce dependencies across directories (which would help, for example, in achieving a headless version of Inkscape). It could be the continued transition from C to C++ which often results in major reductions in the number of code lines. Or it could be identifying and eliminating redundant code. Refactoring is an important skill of which many books have been written. Here's a chance to gain valuable experience!<br />
<br />
See https://wiki.inkscape.org/wiki/index.php/Refactoring_projects for some ideas of projects.<br />
<br />
==P8. Add Text and Image Support to Live Path Effect System ==<br />
* Estimation of difficulty: Hard - Short (175h)<br />
* Potential mentors: Jabier Arraiza (Spanish, English(not native))<br />
* Programming skills: C++<br />
* Prerequisites: Experience managing bitmaps<br />
<u>Detailed Description</u><br />
Live Path Effects are non destructive effects applied to paths and shapes standalone or inside a group.<br /> <br />
This is done keepeng a reference to the original data to reaply when needed.<br /><br />
But ignore text and image elements.<br /><br />
Things to do:<br />
* Study add image, text, both and maybe others SVG elements to the LPE system.<br />
* Create/adapt minimun one LPE for each new type of element acepted as reference. Suggestion Perspective-Envelope.<br />
<u>Use cases</u><br />
* Apply live effects to images and text based in C++ code in a non destructive way even in groups with mixed elements types.<br />
<br />
==P9. Path Library Improvements ==<br />
* Estimation of difficulty: Hard - Long (350h)<br />
* Potential mentors: Tavmjong Bah, KK<br />
* Programming skills: C++<br />
* Prerequisites: Strong math skills, specifically in geometry.<br />
<u>Detailed Description</u><br />
Inkscape relies on two geometry libraries for path manipulations: lib2geom and livarot. lib2geom is a generic modern library written specifically with Inkscape in mind. lib2geom is missing some functionality that Inkscape requires and that is found in livarot. This project is to move that functionality into lib2geom (or into separate files) using lib2geom path descriptions. A 2020 GSoC student did a significant amount of work understanding and documenting the issues involved. This project would be to build on his work.<br />
<br />
Specifically, the functionality needed is<br />
* Path offset/inset functions.<br />
* Path simplify.<br />
* Stroke to path function.<br />
* Line scanning (used for flowing text into a shape).<br />
<br />
==P11. Improvements to Paint Server Dialog ==<br />
<br />
* Estimation of difficulty: Easy to Medium - Short (175h)<br />
* Potential mentors: Tavmjong<br />
* Programming skills: C++<br />
* Prerequisites: Some knowledge of GTK and CSS.<br />
<u>Detailed Description</u><br />
The ''Paint Server Dialog'' allows a user to visually select a pattern or hatch to use in painting the ''fill'' or ''stroke'' of an object. This project would be to expand the dialog to cover gradients, meshes, and solid colors as well as make other improvements to the dialog. Interaction with the Inkscape's ''UX'' team will be required.<br />
<br />
== P13. Node-based filter editor ==<br />
<br />
*Estimation of difficulty: Hard - Long (350h)<br />
* Potential mentors: Mc<br />
* Programming skills: C++<br />
* Prerequisites: Minimal knowledge of build systems<br />
<br />
<u>Detailed Description:</u> The filter editor is kind of hard to understand and master based on its current UI. Using a node-based tool for it, such as what can be done with https://notabug.org/grindhold/libgtkflow would help people create and master the filter primitives easier.<br />
<br />
[https://gitlab.com/inkscape/ux/-/issues/40 '''Full poposal''']<br />
==P14. Cached styles for inkex==<br />
<br />
*Estimation of difficulty: Medium - Short (175h)<br />
*Potential mentors: Jonathan<br />
* Programming skills: Python, CSS<br />
* Prerequisites: minimal knowledge of test-driven development<br />
<br />
<u>Detailed Description:</u> When inkex, the Python library behind Inkscape's extension system, computes styles, this is relatively slow, especially for documents with either many style sheets or documents with many elements / highly nested documents. This is because for each element, the XPATH of each CSS rule is computed, and then it is checked whether the current element is in the XPATH result. Then, the same computation is repeated for the parent. Since Python is not very fast itself, such inefficiencies quickly make style evaluation unusable for big documents.<br />
<br />
With this project, we would explore ways to speed up those computations, mainly using caching and more intelligent ways of evaluating CSS rules. Some approaches might be taken from [https://hacks.mozilla.org/2017/08/inside-a-super-fast-css-engine-quantum-css-aka-stylo/ a recent firefox refactoring].<br />
<br />
Ideally, the caching will be tuned to support read-only (export), read-heavy (modify path), write-heavy (generate from path) and write-only (import) extensions, which have different caching needs.<br />
<br />
The work should be done in a test-driven development approach.<br />
<br />
== P15. Import and Export extensions ==<br />
<br />
*Estimation of difficulty: Flexible, usually easy to medium, Short or Long depending on scope (175h or 350h)<br />
*Potential mentors: Jonathan<br />
* Programming skills: Python, Ability to read technical documents, depending on the format: some reverse engineering<br />
* Prerequisites: minimal knowledge of test-driven development<br />
<br />
<u>Detailed Description:</u> Inkscape is alway looking to improve compatibility! Some ideas of relevant file formats - each of them more than enough for one GSoC:*Refactor our '''DXF input and output''' extensions, and expand support towards binary DXF<br />
*Write an as-complete-as-possible '''EPS export''', circumventing the internal information loss in ghostscript (EPS is still relevant for scientific papers, but more and more tools are dropping support, so this is a chance to grab market share - the results of Adobe Distiller are much better than ghostscript's...)<br />
*Rewrite the '''XAML importer''' in Python (currenly XSLT) to match the capabilities of the new XAML exporter (i.e. support for different target frameworks, better text support...) - would have to select carefully what to support (drawing primitives) and what not (control elements) - the boundary is not as clear-cut as it seems.<br />
* Update the '''Synfig export''' to support the latest Synfig developments<br />
* '''Import or export of TikZ'''. There are a few abandoned extensions out there (from which we can borrow), but it's very widely used in science - both import and export could serve an important function in the scientific workflow.<br />
*'''Import of the proprietary fileformats''' of Affinity Design, Vectornator, Vectorstyler (especially the last two seem in their infancy and users at some point will sit on a bunch of files that they can't open anymore because their SAAS model wasn't profitable) .<br />
*'''Import of CGM''' - old, but ISO standardized. Was supported once and dropped when the uniconvertor extension was removed for 1.0.<br />
* '''Python based EMF / WMF importer -''' the current (core Inkscape) C extension is unmaintained and Python would probably be the right way to get more collaboration on it. A lot of public archives sit on mountains of EMF files. Note that the Document Foundation recently did a lot of work properly importing those files, so we can learn from them / maybe even join forces...<br />
*your favorite file format? - also have a look here: https://office.inkscape.org/nextcloud/index.php/s/Tq6cdDDGay6taCw<br />
==P16. Gcodetools refactoring and documentation==<br />
<br />
*Estimation of difficulty: Easy- Short or Long depending on scope (175h or 350h)<br />
*Potential mentors: Jonathan<br />
* Programming skills: Python<br />
* Prerequisites: Maker background / familiarity with the Maker community<br />
<br />
<u>Detailed Description:</u> [https://gitlab.com/inkscape/extras/extensions-gcodetools/ Gcodetools] is a set of Inkscape extensions that deal with reading and creating Gcode files, mostly for use in laser cutters or plotters. For this project, ideally someone with a Makerspace background will<br />
#query maker spaces on their needs regarding gcodetools,<br />
#implement those needs together with unit tests,<br />
# improve the test coverage of Gcodetools,<br />
#write proper documentation for it. (doesn't really exist at the moment).<br />
==P17. Packing / Nesting as an Inkscape extension==<br />
<br />
*Estimation of difficulty: Medium, Short or Long depending on scope (175h or 350h)<br />
*Potential mentors: Jonathan<br />
* Programming skills: Python<br />
* Prerequisites: Computational geometry<br />
<br />
<u>Detailed Description:</u> In this project, a set of packing / nesting algorithms will be implemented:<br />
*[https://en.wikipedia.org/wiki/Cutting_stock_problem Linear nesting] is not too useful in SVG, but might be a good place to get acquainted with the problem. 2D cutting stock problem would be very interesting to have and would work great with the new multipage functionality.<br />
*For efficient packing of free form objects, we might just re-implement [https://github.com/Jack000/SVGnest SVGNest] in Python. There are probably some more recent research papers which would be interesting to implement as a comparison.<br />
<br />
== P18. Improving UX of Node tool and Bezier tool ==<br />
*Estimation of difficulty: Medium - Hard, Short or Long depending on scope (175h or 350h)<br />
*Potential mentors: Tav, ??<br />
* Programming skills: C++,<br />
*Prerequisites: Computational geometry<br />
<br />
<u>Detailed Description:</u> This project would improve workflow of editing of geometry of paths. Combining strengths of Pen tool and Node tool with modifiers and new behaviors. This improvement should benefit pro users but also beginners. Good example of this implementation is in blenders new pen tool.<br />
<br />
'''[https://gitlab.com/inkscape/ux/-/issues/5 Full Proposal here]'''[[File:Imageasdasd.png|thumb|184x184px]]<br />
<br />
== P19. Improving UI of Live path effects ==<br />
*Estimation of difficulty: Medium- Hard, Short or Long depending on scope (175h or 350h)<br />
*Potential mentors: Mike, jabier ,??<br />
* Programming skills: GTK 4, C++<br />
*Prerequisites: Front end UI , familiarity with Live path effects<br />
[[File:Imageasdasda qrq.png|thumb|146x146px]]<br />
<br />
<u>Detailed Description:</u> This project Should implement Proposed UI clean up of Controls . LPE controls shoulbe be more user freindly and predictive,<br />
<br />
[https://gitlab.com/inkscape/ux/-/issues/?sort=popularity&state=opened&label_name%5B%5D=Dialog%3A%3ALPE&first_page_size=100 '''Full Proposed designs''']<br />
<br />
<br />
== P20. Recolor Artwork ==<br />
* Estimation of difficulty: Variable - Short (90h or 175h)<br />
* Potential mentors: Adam Belis ?<br />
* Programming skills: usually C++<br />
* Prerequisites: <br />
<br />
<u>Detailed Description</u><br />
An easy and convenient way how to change any color from the selection. Useful for experimenting and tweaking colors.<br />
<br />
<br />
[https://gitlab.com/inkscape/inbox/-/issues/6095 '''Full proposal Here''']<br />
<br />
<br />
<u>Use cases</u><br />
* Amaze us!<br />
<br />
==Pxx. Your project ==<br />
* Estimation of difficulty: Variable - Short or Long (175h or 350h)<br />
* Potential mentors: Marc Jeanmougin<br />
* Programming skills: usually C++<br />
* Prerequisites: good ideas<br />
<br />
<u>Detailed Description</u><br />
The most successful GSoC we had in the past were students coming with their own past, use cases and ideas for Inkscape. Many basic tools like 3d cubes or connectors you can see in Inkscape now have been brought by brilliant people (like you) with ideas. If we think that your project fits with Inkscape (ie: has its place with a vector graphic editor), we can help you refining your ideas and help bring shiny new stuff to life!<br />
<br />
<u>Use cases</u><br />
* Amaze us!<br />
<br />
= Successful SOC Projects from Previous Years =<br />
* 2005<br />
** Connectors<br />
** Inkboard<br />
** [http://www.openclipart.org/ Open Clip Art Library (OCAL)] Interface<br />
** DXF Import / Export<br />
* [[Google Summer of Code 2006|2006]]<br />
** Support for SVG Filters<br />
** Filter Effects<br />
** PDF export<br />
** Inkboard Protocol Spec / Lib Conversion<br />
* [[Google Summer of Code 2007|2007]]<br />
** Text Style Improvements<br />
** PDF import<br />
** Live Path Effects<br />
** 3D Box Tool<br />
** UI for SVG Filter Effects<br />
** Raster Functionality<br />
** Importing from, and Exporting to, a remote ccHost instance<br />
* [[Google Summer of Code 2008|2008]]<br />
** SVG Fonts support<br />
** 2Geom refactoring project - port most geometry code to 2Geom<br />
** lib2geom: interactive applications showing off the power of lib2geom<br />
** Tech drawing abilities<br />
** A test suite<br />
* 2009<br />
** [[GSoC2009 Node Tool Rewrite|Node tool rewrite]]<br />
** D-Bus scripting API<br />
** Connector tool improvements<br />
** ICC/CMYK workflow<br />
* 2010<br />
** Cairo-based rendering<br />
** C++ification of SP Layer<br />
* 2011<br />
** Rendering caching<br />
** Javascript support improvements<br />
** CSS support improvements<br />
* 2012<br />
** Usibility Improvements for Guides<br />
** [[Tiling tool|On-canvas support for Tessellations]]<br />
** Creating python bindings for lib2geom<br />
* [[Google Summer of Code 2013|2013]]<br />
** Recolor Tool<br />
** Improved Units Support<br />
** Electronics CAD Support<br />
** New From Templates Dialog<br />
** New Raster to Vector Algorithm<br />
* 2014<br />
** Better Support for SVG Paints<br />
** Robust Boolean and Stroking Operations for 2Geom<br />
* 2016<br />
** [[GSoC 2016 Better data structure for selections|Better data structure for selections]]<br />
** [[Style Editor|CSS Style Sheet Editor]]<br />
* 2017<br />
** SVG 2 Text Support<br />
** Better CSS Style Sheet Support<br />
* 2019<br />
** Mesh gradient and hatches polyfills. Paint server dialog.<br />
* 2020<br />
** [https://gitlab.com/vanntile/inkscape-gsoc-2020 New dialog system.]<br />
** [https://gitlab.com/rathod-sahaab/gsoc-2020-inkscape Command palette dialog.]<br />
** Path operations.<br />
* 2021<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/3420 On canvas marker editing.]<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/3328 Verbs to Gio::Actions.]<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/3294 On canvas alignment snapping.]<br />
* 2022<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/4692 Tab Structure.]<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/4694 Font Collections.]<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/4756 Modernizing Memory Management.]<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/4504 OCR Support.]<br />
* 2023<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/5335 GTK4 toolbar port preparation]<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/5624 Customizable Appearance of Canvas Controls]<br />
<br />
[[Category:Developer Documentation]]<br />
</div></div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Google_Summer_of_Code&diff=122655Google Summer of Code2024-02-09T23:34:10Z<p>Mc: </p>
<hr />
<div><div style="max-width:70em; margin-left: auto; margin-right: auto"><br />
= Welcome to Inkscape! =<br />
<br />
For quite a few years Inkscape has been successfully participating in [http://code.google.com/soc/ Google Summer of Code].<br />
<br />
Google has opened up the program to students AND beginners to Open Source who are 18 years are older. Projects can be medium size (~175 hours) or large size (~350 hours). Finish times are flexible, 12 to 22 weeks (with agreement of mentor).<br />
<br />
GSoC is a program where Google funds the development of specific features in open source software by university students and other new to open source. You don't need to be a Computer Science student to apply. Features to be developed are picked by Inkscape administrators from the pool of proposals submitted by applicants.<br />
<br />
We've mentored about half a dozen students a year since GSoC started. Many students enjoyed their work and continue to be involved; perhaps your mentor will be a past GSoC student! We have a high rate of acceptance of student code into the core codebase. Indeed, GSoC projects have been a key source of some of Inkscape's best features in the past several releases.<br />
<br />
If you are interested in joining us this summer, it is time to get your proposal ready. You can choose a proposal from our list of suggestions or come up with one of your own. In either either case, you '''must''' give us a detailed outline of what you plan to do. It is '''highly''' recommended that you discuss your idea as early as possible with Inkscape developers. They not only can give you guidance as you flesh out your proposal but ultimately you must convince them that you can do the work planned in the time allotted. '''If you have not discussed your proposal with Inkscape developers before you apply, your application will be rejected!'''<br />
<br />
= Candidate Applications =<br />
<br />
* Google program information:<br />
** [https://summerofcode.withgoogle.com/ Home page].<br />
** Summer of Code Application form. Applications open at 18:00 UTC on March 20th, 2023.<br />
<br />
* Inkscape-specific information:<br />
** [[SOC Application Template]].<br />
** [[Roadmap | Inkscape Roadmap]] - to see our overall objectives.<br />
** [[Projects | Inkscape Development Project Ideas]] - broader list of development ideas.<br />
** [[SOC Writing Project Proposals]] - some guidelines for proposals.<br />
** [[SOC Selection Criteria]] - how we rate applications.<br />
<br />
'''Candidate Applications for GSoC 2023 must be submitted to the GSoC site by 18:00 UTC on April 4th 2023.'''<br />
<br />
= The "two patches" rule =<br />
<br />
We require two patches from each potential GSoC student, before accepting the student for GSoC participation (it is the same requirement as for obtaining rights to commit changes to the code repository).<br />
<br />
The reason for this requirement is that you can show us that you have succeeded in building Inkscape on your PC, and that you have understood a little piece of Inkscape's code and are able to improve it. <br />
Inkscape is a large project, and you really should not try to understand all the code. Many (all?) developers know only parts of the program code!<br />
You can join our [https://inkscape.org/community/discussion/ IRC] channel or [https://chat.inkscape.org/channel/team_devel Rocket Chat] and ask developers for help.<br />
<br />
== Suggested "easy" bug fixes or improvements ==<br />
<br />
To get you started on Inkscape development, you can find (probably) easy-to-fix bugs or small improvements that require very little knowledge of the whole program by searching our [https://gitlab.com/inkscape/inkscape/issues/ bug-tracker] for bugs tagged with 'easy-fix'.<br />
<br />
= Performance Evaluation =<br />
<br />
GSoC has two formal evaluation points, at the ''mid-term'' and at the end. These evaluations determine if you receive the stipend from Google. In order to receive a pass for the evaluations you will need to show adequate progress toward your project's goals.<br />
<br />
To help you meet your goals and so that your mentor can better evaluate your progress you need to:<br />
<br />
* Have frequent, public discussions of your progress. (Don't rely on just your mentor for advice.)<br />
* Have a public Inkscape branch for your code to which you commit regularly.<br />
* Give weekly status reports.<br />
<br />
For the final pass, you will normally be required to merge your code into Inkscape trunk.<br />
<br />
Remember: ''we want you to succeed!''<br />
<br />
= Suggested Project Ideas =<br />
<br />
The following is a list of formal project suggestions, but do not feel limited to only these - some of our best contributions have been unique ideas that students had in mind from other sources!<br />
<br />
See also [[Development Project Ideas]], [[Refactoring projects]], [[Projects]], and https://blueprints.launchpad.net/inkscape/<br />
<br />
==P1. Better CSS Style Sheet Support==<br />
<br />
Enhance Inkscape's support for CSS style sheets.<br />
<br />
* Estimation of difficulty: Moderately hard - Long (350h)<br />
* Potential mentors: Tavmjong Bah<br />
* Programming skills needed: C++<br />
* Prerequisites: Experience with CSS style sheets.<br />
<br />
<u>Detailed Description</u><br />
<br />
Inkscape has basic support for CSS style sheets that can read and parse internal style sheets. A 2016 GSoC project added a simple style dialog that can create and modify the internal style sheet. The dialog is very limited and is not intuitive to use. A 2017 GSoC project added support for CSS 3 selectors. More work has been done recently, creating the ''Selectors and CSS'' dialog... This project will extend the usefulness of that dialog by making it more user friendly and by extending its functionality.<br />
<br />
<u>Use Cases</u><br />
<br />
* Support externally created SVGs.<br />
* Producing better SVGs for the Web.<br />
* Changing style on multiple objects at once (palettes).<br />
<br />
<u>Related Material</u><br />
<br />
* [https://www.w3.org/TR/CSS2/ CSS 2 Specification]<br />
* [https://www.w3.org/TR/css-2015/ CSS 2015 Snapshot]<br />
<br />
==P5. UI-Free Inkscape ==<br />
<br />
* Estimation of difficulty: Difficult - Long (350h)<br />
* Potential mentors: Marc Jeanmougin<br />
* Programming skills: C++, CMake<br />
* Prerequisites: Minimal knowledge of build systems. Experience with GtkMM helpful.<br />
<br />
<u>Detailed Description</u><br />
Inkscape currently builds with X11 and gtk and a lot of graphical dependencies. But since it is allowed to run in commandline, and there are controlled environments (servers) that use it to convert svg to png and to perform actions, there should be no need to force it to build with those. The main goal of this project is to add a WITH_GUI compilation flag that when OFF, does *not* link Inkscape with any graphical dependency. While much work has been done towards this goal, much remains to be done. DONE <s>As a next step, Inkscape's "verbs" which are mostly GUI dependent (even if there is no reason to be) need to be converted to Gio::Actions.</s> More work needs to be done to separate out hidden GUI dependencies that remain after the Verb to Action transition.<br />
<br />
<u>Use cases</u><br />
* Server installs, scripts<br />
<br />
==P6. Refactoring==<br />
* Estimation of difficulty: Moderate - Short or Long depending on scope (175h or 350h)<br />
* Potential mentors: Tavmjong Bah<br />
* Programming skills: C++<br />
* Prerequisites: proficient C++.<br />
<br />
<u>Detailed Description</u><br />
Inkscape began life as the C program Sodipodi. Sodipodi was mostly the work of one person who had a clear vision of how the code should work. A major motivation of the Inkscape fork was to allow others to easily contribute to development. This resulted in rapid development but at a cost: the code has become much messier and now lacks a clear vision. This project is to work on refactoring the code. Refactoring can take many forms. It could be creating a better directory structure with README's that describe the purpose and function of the code in each directory. This would include rewriting code to reduce dependencies across directories (which would help, for example, in achieving a headless version of Inkscape). It could be the continued transition from C to C++ which often results in major reductions in the number of code lines. Or it could be identifying and eliminating redundant code. Refactoring is an important skill of which many books have been written. Here's a chance to gain valuable experience!<br />
<br />
See https://wiki.inkscape.org/wiki/index.php/Refactoring_projects for some ideas of projects.<br />
<br />
==P8. Add Text and Image Support to Live Path Effect System ==<br />
* Estimation of difficulty: Hard - Short (175h)<br />
* Potential mentors: Jabier Arraiza (Spanish, English(not native))<br />
* Programming skills: C++<br />
* Prerequisites: Experience managing bitmaps<br />
<u>Detailed Description</u><br />
Live Path Effects are non destructive effects applied to paths and shapes standalone or inside a group.<br /> <br />
This is done keepeng a reference to the original data to reaply when needed.<br /><br />
But ignore text and image elements.<br /><br />
Things to do:<br />
* Study add image, text, both and maybe others SVG elements to the LPE system.<br />
* Create/adapt minimun one LPE for each new type of element acepted as reference. Suggestion Perspective-Envelope.<br />
<u>Use cases</u><br />
* Apply live effects to images and text based in C++ code in a non destructive way even in groups with mixed elements types.<br />
<br />
==P9. Path Library Improvements ==<br />
* Estimation of difficulty: Hard - Long (350h)<br />
* Potential mentors: Tavmjong Bah, KK<br />
* Programming skills: C++<br />
* Prerequisites: Strong math skills, specifically in geometry.<br />
<u>Detailed Description</u><br />
Inkscape relies on two geometry libraries for path manipulations: lib2geom and livarot. lib2geom is a generic modern library written specifically with Inkscape in mind. lib2geom is missing some functionality that Inkscape requires and that is found in livarot. This project is to move that functionality into lib2geom (or into separate files) using lib2geom path descriptions. A 2020 GSoC student did a significant amount of work understanding and documenting the issues involved. This project would be to build on his work.<br />
<br />
Specifically, the functionality needed is<br />
* Path offset/inset functions.<br />
* Path simplify.<br />
* Stroke to path function.<br />
* Line scanning (used for flowing text into a shape).<br />
<br />
==P11. Improvements to Paint Server Dialog ==<br />
<br />
* Estimation of difficulty: Easy to Medium - Short (175h)<br />
* Potential mentors: Tavmjong<br />
* Programming skills: C++<br />
* Prerequisites: Some knowledge of GTK and CSS.<br />
<u>Detailed Description</u><br />
The ''Paint Server Dialog'' allows a user to visually select a pattern or hatch to use in painting the ''fill'' or ''stroke'' of an object. This project would be to expand the dialog to cover gradients, meshes, and solid colors as well as make other improvements to the dialog. Interaction with the Inkscape's ''UX'' team will be required.<br />
<br />
== P13. Node-based filter editor ==<br />
<br />
*Estimation of difficulty: Hard - Long (350h)<br />
* Potential mentors: Mc<br />
* Programming skills: C++<br />
* Prerequisites: Minimal knowledge of build systems<br />
<br />
<u>Detailed Description:</u> The filter editor is kind of hard to understand and master based on its current UI. Using a node-based tool for it, such as what can be done with https://notabug.org/grindhold/libgtkflow would help people create and master the filter primitives easier.<br />
<br />
[https://gitlab.com/inkscape/ux/-/issues/40 '''Full poposal''']<br />
==P14. Cached styles for inkex==<br />
<br />
*Estimation of difficulty: Medium - Short (175h)<br />
*Potential mentors: Jonathan<br />
* Programming skills: Python, CSS<br />
* Prerequisites: minimal knowledge of test-driven development<br />
<br />
<u>Detailed Description:</u> When inkex, the Python library behind Inkscape's extension system, computes styles, this is relatively slow, especially for documents with either many style sheets or documents with many elements / highly nested documents. This is because for each element, the XPATH of each CSS rule is computed, and then it is checked whether the current element is in the XPATH result. Then, the same computation is repeated for the parent. Since Python is not very fast itself, such inefficiencies quickly make style evaluation unusable for big documents.<br />
<br />
With this project, we would explore ways to speed up those computations, mainly using caching and more intelligent ways of evaluating CSS rules. Some approaches might be taken from [https://hacks.mozilla.org/2017/08/inside-a-super-fast-css-engine-quantum-css-aka-stylo/ a recent firefox refactoring].<br />
<br />
Ideally, the caching will be tuned to support read-only (export), read-heavy (modify path), write-heavy (generate from path) and write-only (import) extensions, which have different caching needs.<br />
<br />
The work should be done in a test-driven development approach.<br />
<br />
== P15. Import and Export extensions ==<br />
<br />
*Estimation of difficulty: Flexible, usually easy to medium, Short or Long depending on scope (175h or 350h)<br />
*Potential mentors: Jonathan<br />
* Programming skills: Python, Ability to read technical documents, depending on the format: some reverse engineering<br />
* Prerequisites: minimal knowledge of test-driven development<br />
<br />
<u>Detailed Description:</u> Inkscape is alway looking to improve compatibility! Some ideas of relevant file formats - each of them more than enough for one GSoC:*Refactor our '''DXF input and output''' extensions, and expand support towards binary DXF<br />
*Write an as-complete-as-possible '''EPS export''', circumventing the internal information loss in ghostscript (EPS is still relevant for scientific papers, but more and more tools are dropping support, so this is a chance to grab market share - the results of Adobe Distiller are much better than ghostscript's...)<br />
*Rewrite the '''XAML importer''' in Python (currenly XSLT) to match the capabilities of the new XAML exporter (i.e. support for different target frameworks, better text support...) - would have to select carefully what to support (drawing primitives) and what not (control elements) - the boundary is not as clear-cut as it seems.<br />
* Update the '''Synfig export''' to support the latest Synfig developments<br />
* '''Import or export of TikZ'''. There are a few abandoned extensions out there (from which we can borrow), but it's very widely used in science - both import and export could serve an important function in the scientific workflow.<br />
*'''Import of the proprietary fileformats''' of Affinity Design, Vectornator, Vectorstyler (especially the last two seem in their infancy and users at some point will sit on a bunch of files that they can't open anymore because their SAAS model wasn't profitable) .<br />
*'''Import of CGM''' - old, but ISO standardized. Was supported once and dropped when the uniconvertor extension was removed for 1.0.<br />
* '''Python based EMF / WMF importer -''' the current (core Inkscape) C extension is unmaintained and Python would probably be the right way to get more collaboration on it. A lot of public archives sit on mountains of EMF files. Note that the Document Foundation recently did a lot of work properly importing those files, so we can learn from them / maybe even join forces...<br />
*your favorite file format? - also have a look here: https://office.inkscape.org/nextcloud/index.php/s/Tq6cdDDGay6taCw<br />
==P16. Gcodetools refactoring and documentation==<br />
<br />
*Estimation of difficulty: Easy- Short or Long depending on scope (175h or 350h)<br />
*Potential mentors: Jonathan<br />
* Programming skills: Python<br />
* Prerequisites: Maker background / familiarity with the Maker community<br />
<br />
<u>Detailed Description:</u> [https://gitlab.com/inkscape/extras/extensions-gcodetools/ Gcodetools] is a set of Inkscape extensions that deal with reading and creating Gcode files, mostly for use in laser cutters or plotters. For this project, ideally someone with a Makerspace background will<br />
#query maker spaces on their needs regarding gcodetools,<br />
#implement those needs together with unit tests,<br />
# improve the test coverage of Gcodetools,<br />
#write proper documentation for it. (doesn't really exist at the moment).<br />
==P17. Packing / Nesting as an Inkscape extension==<br />
<br />
*Estimation of difficulty: Medium, Short or Long depending on scope (175h or 350h)<br />
*Potential mentors: Jonathan<br />
* Programming skills: Python<br />
* Prerequisites: Computational geometry<br />
<br />
<u>Detailed Description:</u> In this project, a set of packing / nesting algorithms will be implemented:<br />
*[https://en.wikipedia.org/wiki/Cutting_stock_problem Linear nesting] is not too useful in SVG, but might be a good place to get acquainted with the problem. 2D cutting stock problem would be very interesting to have and would work great with the new multipage functionality.<br />
*For efficient packing of free form objects, we might just re-implement [https://github.com/Jack000/SVGnest SVGNest] in Python. There are probably some more recent research papers which would be interesting to implement as a comparison.<br />
<br />
== P18. Improving UX of Node tool and Bezier tool ==<br />
*Estimation of difficulty: Medium - Hard, Short or Long depending on scope (175h or 350h)<br />
*Potential mentors: Tav, ??<br />
* Programming skills: C++,<br />
*Prerequisites: Computational geometry<br />
<br />
<u>Detailed Description:</u> This project would improve workflow of editing of geometry of paths. Combining strengths of Pen tool and Node tool with modifiers and new behaviors. This improvement should benefit pro users but also beginners. Good example of this implementation is in blenders new pen tool.<br />
<br />
'''[https://gitlab.com/inkscape/ux/-/issues/5 Full Proposal here]'''[[File:Imageasdasd.png|thumb|184x184px]]<br />
<br />
== P19. Improving UI of Live path effects ==<br />
*Estimation of difficulty: Medium- Hard, Short or Long depending on scope (175h or 350h)<br />
*Potential mentors: Mike, jabier ,??<br />
* Programming skills: GTK 4, C++<br />
*Prerequisites: Front end UI , familiarity with Live path effects<br />
[[File:Imageasdasda qrq.png|thumb|146x146px]]<br />
<br />
<u>Detailed Description:</u> This project Should implement Proposed UI clean up of Controls . LPE controls shoulbe be more user freindly and predictive,<br />
<br />
[https://gitlab.com/inkscape/ux/-/issues/?sort=popularity&state=opened&label_name%5B%5D=Dialog%3A%3ALPE&first_page_size=100 '''Full Proposed designs''']<br />
<br />
<br />
== P20. Recolor Artwork ==<br />
* Estimation of difficulty: Variable - Short (90h or 175h)<br />
* Potential mentors: Adam Belis ?<br />
* Programming skills: usually C++<br />
* Prerequisites: <br />
<br />
<u>Detailed Description</u><br />
An easy and convenient way how to change any color from the selection. Useful for experimenting and tweaking colors.<br />
<br />
<br />
[https://gitlab.com/inkscape/inbox/-/issues/6095 '''Full proposal Here''']<br />
<br />
<br />
<u>Use cases</u><br />
* Amaze us!<br />
<br />
==Pxx. Your project ==<br />
* Estimation of difficulty: Variable - Short or Long (175h or 350h)<br />
* Potential mentors: Marc Jeanmougin<br />
* Programming skills: usually C++<br />
* Prerequisites: good ideas<br />
<br />
<u>Detailed Description</u><br />
The most successful GSoC we had in the past were students coming with their own past, use cases and ideas for Inkscape. Many basic tools like 3d cubes or connectors you can see in Inkscape now have been brought by brilliant people (like you) with ideas. If we think that your project fits with Inkscape (ie: has its place with a vector graphic editor), we can help you refining your ideas and help bring shiny new stuff to life!<br />
<br />
<u>Use cases</u><br />
* Amaze us!<br />
<br />
= Successful SOC Projects from Previous Years =<br />
* 2005<br />
** Connectors<br />
** Inkboard<br />
** [http://www.openclipart.org/ Open Clip Art Library (OCAL)] Interface<br />
** DXF Import / Export<br />
* [[Google Summer of Code 2006|2006]]<br />
** Support for SVG Filters<br />
** Filter Effects<br />
** PDF export<br />
** Inkboard Protocol Spec / Lib Conversion<br />
* [[Google Summer of Code 2007|2007]]<br />
** Text Style Improvements<br />
** PDF import<br />
** Live Path Effects<br />
** 3D Box Tool<br />
** UI for SVG Filter Effects<br />
** Raster Functionality<br />
** Importing from, and Exporting to, a remote ccHost instance<br />
* [[Google Summer of Code 2008|2008]]<br />
** SVG Fonts support<br />
** 2Geom refactoring project - port most geometry code to 2Geom<br />
** lib2geom: interactive applications showing off the power of lib2geom<br />
** Tech drawing abilities<br />
** A test suite<br />
* 2009<br />
** [[GSoC2009 Node Tool Rewrite|Node tool rewrite]]<br />
** D-Bus scripting API<br />
** Connector tool improvements<br />
** ICC/CMYK workflow<br />
* 2010<br />
** Cairo-based rendering<br />
** C++ification of SP Layer<br />
* 2011<br />
** Rendering caching<br />
** Javascript support improvements<br />
** CSS support improvements<br />
* 2012<br />
** Usibility Improvements for Guides<br />
** [[Tiling tool|On-canvas support for Tessellations]]<br />
** Creating python bindings for lib2geom<br />
* [[Google Summer of Code 2013|2013]]<br />
** Recolor Tool<br />
** Improved Units Support<br />
** Electronics CAD Support<br />
** New From Templates Dialog<br />
** New Raster to Vector Algorithm<br />
* 2014<br />
** Better Support for SVG Paints<br />
** Robust Boolean and Stroking Operations for 2Geom<br />
* 2016<br />
** [[GSoC 2016 Better data structure for selections|Better data structure for selections]]<br />
** [[Style Editor|CSS Style Sheet Editor]]<br />
* 2017<br />
** SVG 2 Text Support<br />
** Better CSS Style Sheet Support<br />
* 2019<br />
** Mesh gradient and hatches polyfills. Paint server dialog.<br />
* 2020<br />
** [https://gitlab.com/vanntile/inkscape-gsoc-2020 New dialog system.]<br />
** [https://gitlab.com/rathod-sahaab/gsoc-2020-inkscape Command palette dialog.]<br />
** Path operations.<br />
* 2021<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/3420 On canvas marker editing.]<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/3328 Verbs to Gio::Actions.]<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/3294 On canvas alignment snapping.]<br />
* 2022<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/4692 Tab Structure.]<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/4694 Font Collections.]<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/4756 Modernizing Memory Management.]<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/4504 OCR Support.]<br />
* 2023<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/5335 GTK4 toolbar port preparation]<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/5624 Customizable Appearance of Canvas Controls]<br />
<br />
[[Category:Developer Documentation]]<br />
</div></div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Google_Summer_of_Code&diff=122654Google Summer of Code2024-02-09T23:31:13Z<p>Mc: </p>
<hr />
<div><div style="max-width:70em; margin-left: auto; margin-right: auto"><br />
= Welcome to Inkscape! =<br />
<br />
For quite a few years Inkscape has been successfully participating in [http://code.google.com/soc/ Google Summer of Code].<br />
<br />
Google has opened up the program to students AND beginners to Open Source who are 18 years are older. Projects can be medium size (~175 hours) or large size (~350 hours). Finish times are flexible, 12 to 22 weeks (with agreement of mentor).<br />
<br />
GSoC is a program where Google funds the development of specific features in open source software by university students and other new to open source. You don't need to be a Computer Science student to apply. Features to be developed are picked by Inkscape administrators from the pool of proposals submitted by applicants.<br />
<br />
We've mentored about half a dozen students a year since GSoC started. Many students enjoyed their work and continue to be involved; perhaps your mentor will be a past GSoC student! We have a high rate of acceptance of student code into the core codebase. Indeed, GSoC projects have been a key source of some of Inkscape's best features in the past several releases.<br />
<br />
If you are interested in joining us this summer, it is time to get your proposal ready. You can choose a proposal from our list of suggestions or come up with one of your own. In either either case, you '''must''' give us a detailed outline of what you plan to do. It is '''highly''' recommended that you discuss your idea as early as possible with Inkscape developers. They not only can give you guidance as you flesh out your proposal but ultimately you must convince them that you can do the work planned in the time allotted. '''If you have not discussed your proposal with Inkscape developers before you apply, your application will be rejected!'''<br />
<br />
= Candidate Applications =<br />
<br />
* Google program information:<br />
** [https://summerofcode.withgoogle.com/ Home page].<br />
** Summer of Code Application form. Applications open at 18:00 UTC on March 20th, 2023.<br />
<br />
* Inkscape-specific information:<br />
** [[SOC Application Template]].<br />
** [[Roadmap | Inkscape Roadmap]] - to see our overall objectives.<br />
** [[Projects | Inkscape Development Project Ideas]] - broader list of development ideas.<br />
** [[SOC Writing Project Proposals]] - some guidelines for proposals.<br />
** [[SOC Selection Criteria]] - how we rate applications.<br />
<br />
'''Candidate Applications for GSoC 2023 must be submitted to the GSoC site by 18:00 UTC on April 4th 2023.'''<br />
<br />
= The "two patches" rule =<br />
<br />
We require two patches from each potential GSoC student, before accepting the student for GSoC participation (it is the same requirement as for obtaining rights to commit changes to the code repository).<br />
<br />
The reason for this requirement is that you can show us that you have succeeded in building Inkscape on your PC, and that you have understood a little piece of Inkscape's code and are able to improve it. <br />
Inkscape is a large project, and you really should not try to understand all the code. Many (all?) developers know only parts of the program code!<br />
You can join our [https://inkscape.org/community/discussion/ IRC] channel or [https://chat.inkscape.org/channel/team_devel Rocket Chat] and ask developers for help.<br />
<br />
== Suggested "easy" bug fixes or improvements ==<br />
<br />
To get you started on Inkscape development, you can find (probably) easy-to-fix bugs or small improvements that require very little knowledge of the whole program by searching our [https://gitlab.com/inkscape/inkscape/issues/ bug-tracker] for bugs tagged with 'easy-fix'.<br />
<br />
= Performance Evaluation =<br />
<br />
GSoC has two formal evaluation points, at the ''mid-term'' and at the end. These evaluations determine if you receive the stipend from Google. In order to receive a pass for the evaluations you will need to show adequate progress toward your project's goals.<br />
<br />
To help you meet your goals and so that your mentor can better evaluate your progress you need to:<br />
<br />
* Have frequent, public discussions of your progress. (Don't rely on just your mentor for advice.)<br />
* Have a public Inkscape branch for your code to which you commit regularly.<br />
* Give weekly status reports.<br />
<br />
For the final pass, you will normally be required to merge your code into Inkscape trunk.<br />
<br />
Remember: ''we want you to succeed!''<br />
<br />
= Suggested Project Ideas =<br />
<br />
The following is a list of formal project suggestions, but do not feel limited to only these - some of our best contributions have been unique ideas that students had in mind from other sources!<br />
<br />
See also [[Development Project Ideas]], [[Refactoring projects]], [[Projects]], and https://blueprints.launchpad.net/inkscape/<br />
<br />
==P1. Better CSS Style Sheet Support==<br />
<br />
Enhance Inkscape's support for CSS style sheets.<br />
<br />
* Estimation of difficulty: Moderately hard - Long (350h)<br />
* Potential mentors: Tavmjong Bah<br />
* Programming skills needed: C++<br />
* Prerequisites: Experience with CSS style sheets.<br />
<br />
<u>Detailed Description</u><br />
<br />
Inkscape has basic support for CSS style sheets that can read and parse internal style sheets. A 2016 GSoC project added a simple style dialog that can create and modify the internal style sheet. The dialog is very limited and is not intuitive to use. A 2017 GSoC project added support for CSS 3 selectors. More work has been done recently, creating the ''Selectors and CSS'' dialog... This project will extend the usefulness of that dialog by making it more user friendly and by extending its functionality.<br />
<br />
<u>Use Cases</u><br />
<br />
* Support externally created SVGs.<br />
* Producing better SVGs for the Web.<br />
* Changing style on multiple objects at once (palettes).<br />
<br />
<u>Related Material</u><br />
<br />
* [https://www.w3.org/TR/CSS2/ CSS 2 Specification]<br />
* [https://www.w3.org/TR/css-2015/ CSS 2015 Snapshot]<br />
<br />
==P5. UI-Free Inkscape ==<br />
<br />
* Estimation of difficulty: Difficult - Long (350h)<br />
* Potential mentors: Marc Jeanmougin<br />
* Programming skills: C++, CMake<br />
* Prerequisites: Minimal knowledge of build systems. Experience with GtkMM helpful.<br />
<br />
<u>Detailed Description</u><br />
Inkscape currently builds with X11 and gtk and a lot of graphical dependencies. But since it is allowed to run in commandline, and there are controlled environments (servers) that use it to convert svg to png and to perform actions, there should be no need to force it to build with those. The main goal of this project is to add a WITH_GUI compilation flag that when OFF, does *not* link Inkscape with any graphical dependency. While much work has been done towards this goal, much remains to be done. DONE <s>As a next step, Inkscape's "verbs" which are mostly GUI dependent (even if there is no reason to be) need to be converted to Gio::Actions.</s> More work needs to be done to separate out hidden GUI dependencies that remain after the Verb to Action transition.<br />
<br />
<u>Use cases</u><br />
* Server installs, scripts<br />
<br />
==P6. Refactoring==<br />
* Estimation of difficulty: Moderate - Short or Long depending on scope (175h or 350h)<br />
* Potential mentors: Tavmjong Bah<br />
* Programming skills: C++<br />
* Prerequisites: proficient C++.<br />
<br />
<u>Detailed Description</u><br />
Inkscape began life as the C program Sodipodi. Sodipodi was mostly the work of one person who had a clear vision of how the code should work. A major motivation of the Inkscape fork was to allow others to easily contribute to development. This resulted in rapid development but at a cost: the code has become much messier and now lacks a clear vision. This project is to work on refactoring the code. Refactoring can take many forms. It could be creating a better directory structure with README's that describe the purpose and function of the code in each directory. This would include rewriting code to reduce dependencies across directories (which would help, for example, in achieving a headless version of Inkscape). It could be the continued transition from C to C++ which often results in major reductions in the number of code lines. Or it could be identifying and eliminating redundant code. Refactoring is an important skill of which many books have been written. Here's a chance to gain valuable experience!<br />
<br />
See https://wiki.inkscape.org/wiki/index.php/Refactoring_projects for some ideas of projects.<br />
<br />
==P8. Add Text and Image Support to Live Path Effect System ==<br />
* Estimation of difficulty: Hard - Short (175h)<br />
* Potential mentors: Jabier Arraiza (Spanish, English(not native))<br />
* Programming skills: C++<br />
* Prerequisites: Experience managing bitmaps<br />
<u>Detailed Description</u><br />
Live Path Effects are non destructive effects applied to paths and shapes standalone or inside a group.<br /> <br />
This is done keepeng a reference to the original data to reaply when needed.<br /><br />
But ignore text and image elements.<br /><br />
Things to do:<br />
* Study add image, text, both and maybe others SVG elements to the LPE system.<br />
* Create/adapt minimun one LPE for each new type of element acepted as reference. Suggestion Perspective-Envelope.<br />
<u>Use cases</u><br />
* Apply live effects to images and text based in C++ code in a non destructive way even in groups with mixed elements types.<br />
<br />
==P9. Path Library Improvements ==<br />
* Estimation of difficulty: Hard - Long (350h)<br />
* Potential mentors: Tavmjong Bah, KK<br />
* Programming skills: C++<br />
* Prerequisites: Strong math skills, specifically in geometry.<br />
<u>Detailed Description</u><br />
Inkscape relies on two geometry libraries for path manipulations: lib2geom and livarot. lib2geom is a generic modern library written specifically with Inkscape in mind. lib2geom is missing some functionality that Inkscape requires and that is found in livarot. This project is to move that functionality into lib2geom (or into separate files) using lib2geom path descriptions. A 2020 GSoC student did a significant amount of work understanding and documenting the issues involved. This project would be to build on his work.<br />
<br />
Specifically, the functionality needed is<br />
* Path offset/inset functions.<br />
* Path simplify.<br />
* Stroke to path function.<br />
* Line scanning (used for flowing text into a shape).<br />
<br />
==P11. Improvements to Paint Server Dialog ==<br />
<br />
* Estimation of difficulty: Easy to Medium - Short (175h)<br />
* Potential mentors: Tavmjong<br />
* Programming skills: C++<br />
* Prerequisites: Some knowledge of GTK and CSS.<br />
<u>Detailed Description</u><br />
The ''Paint Server Dialog'' allows a user to visually select a pattern or hatch to use in painting the ''fill'' or ''stroke'' of an object. This project would be to expand the dialog to cover gradients, meshes, and solid colors as well as make other improvements to the dialog. Interaction with the Inkscape's ''UX'' team will be required.<br />
<br />
== P13. Node-based filter editor ==<br />
<br />
*Estimation of difficulty: Hard - Long (350h)<br />
* Potential mentors: Mc<br />
* Programming skills: C++<br />
* Prerequisites: Minimal knowledge of build systems<br />
<br />
<u>Detailed Description:</u> The filter editor is kind of hard to understand and master based on its current UI. Using a node-based tool for it, such as what can be done with https://notabug.org/grindhold/libgtkflow would help people create and master the filter primitives easier.<br />
<br />
[https://gitlab.com/inkscape/ux/-/issues/40 '''Full poposal''']<br />
==P14. Cached styles for inkex==<br />
<br />
*Estimation of difficulty: Medium - Short (175h)<br />
*Potential mentors: Jonathan<br />
* Programming skills: Python, CSS<br />
* Prerequisites: minimal knowledge of test-driven development<br />
<br />
<u>Detailed Description:</u> When inkex, the Python library behind Inkscape's extension system, computes styles, this is relatively slow, especially for documents with either many style sheets or documents with many elements / highly nested documents. This is because for each element, the XPATH of each CSS rule is computed, and then it is checked whether the current element is in the XPATH result. Then, the same computation is repeated for the parent. Since Python is not very fast itself, such inefficiencies quickly make style evaluation unusable for big documents.<br />
<br />
With this project, we would explore ways to speed up those computations, mainly using caching and more intelligent ways of evaluating CSS rules. Some approaches might be taken from [https://hacks.mozilla.org/2017/08/inside-a-super-fast-css-engine-quantum-css-aka-stylo/ a recent firefox refactoring].<br />
<br />
Ideally, the caching will be tuned to support read-only (export), read-heavy (modify path), write-heavy (generate from path) and write-only (import) extensions, which have different caching needs.<br />
<br />
The work should be done in a test-driven development approach.<br />
<br />
== P15. Import and Export extensions ==<br />
<br />
*Estimation of difficulty: Flexible, usually easy to medium, Short or Long depending on scope (175h or 350h)<br />
*Potential mentors: Jonathan<br />
* Programming skills: Python, Ability to read technical documents, depending on the format: some reverse engineering<br />
* Prerequisites: minimal knowledge of test-driven development<br />
<br />
<u>Detailed Description:</u> Inkscape is alway looking to improve compatibility! Some ideas of relevant file formats - each of them more than enough for one GSoC:*Refactor our '''DXF input and output''' extensions, and expand support towards binary DXF<br />
*Write an as-complete-as-possible '''EPS export''', circumventing the internal information loss in ghostscript (EPS is still relevant for scientific papers, but more and more tools are dropping support, so this is a chance to grab market share - the results of Adobe Distiller are much better than ghostscript's...)<br />
*Rewrite the '''XAML importer''' in Python (currenly XSLT) to match the capabilities of the new XAML exporter (i.e. support for different target frameworks, better text support...) - would have to select carefully what to support (drawing primitives) and what not (control elements) - the boundary is not as clear-cut as it seems.<br />
* Update the '''Synfig export''' to support the latest Synfig developments<br />
* '''Import or export of TikZ'''. There are a few abandoned extensions out there (from which we can borrow), but it's very widely used in science - both import and export could serve an important function in the scientific workflow.<br />
*'''Import of the proprietary fileformats''' of Affinity Design, Vectornator, Vectorstyler (especially the last two seem in their infancy and users at some point will sit on a bunch of files that they can't open anymore because their SAAS model wasn't profitable) .<br />
*'''Import of CGM''' - old, but ISO standardized. Was supported once and dropped when the uniconvertor extension was removed for 1.0.<br />
* '''Python based EMF / WMF importer -''' the current (core Inkscape) C extension is unmaintained and Python would probably be the right way to get more collaboration on it. A lot of public archives sit on mountains of EMF files. Note that the Document Foundation recently did a lot of work properly importing those files, so we can learn from them / maybe even join forces...<br />
*your favorite file format? - also have a look here: https://office.inkscape.org/nextcloud/index.php/s/Tq6cdDDGay6taCw<br />
==P16. Gcodetools refactoring and documentation==<br />
<br />
*Estimation of difficulty: Easy- Short or Long depending on scope (175h or 350h)<br />
*Potential mentors: Jonathan<br />
* Programming skills: Python<br />
* Prerequisites: Maker background / familiarity with the Maker community<br />
<br />
<u>Detailed Description:</u> [https://gitlab.com/inkscape/extras/extensions-gcodetools/ Gcodetools] is a set of Inkscape extensions that deal with reading and creating Gcode files, mostly for use in laser cutters or plotters. For this project, ideally someone with a Makerspace background will<br />
#query maker spaces on their needs regarding gcodetools,<br />
#implement those needs together with unit tests,<br />
# improve the test coverage of Gcodetools,<br />
#write proper documentation for it. (doesn't really exist at the moment).<br />
==P17. Packing / Nesting as an Inkscape extension==<br />
<br />
*Estimation of difficulty: Medium, Short or Long depending on scope (175h or 350h)<br />
*Potential mentors: Jonathan<br />
* Programming skills: Python<br />
* Prerequisites: Computational geometry<br />
<br />
<u>Detailed Description:</u> In this project, a set of packing / nesting algorithms will be implemented:<br />
*[https://en.wikipedia.org/wiki/Cutting_stock_problem Linear nesting] is not too useful in SVG, but might be a good place to get acquainted with the problem. 2D cutting stock problem would be very interesting to have and would work great with the new multipage functionality.<br />
*For efficient packing of free form objects, we might just re-implement [https://github.com/Jack000/SVGnest SVGNest] in Python. There are probably some more recent research papers which would be interesting to implement as a comparison.<br />
<br />
== P18. Improving UX of Node tool and Bezier tool ==<br />
*Estimation of difficulty: Medium - Hard, Short or Long depending on scope (175h or 350h)<br />
*Potential mentors: Tav, ??<br />
* Programming skills: C++,<br />
*Prerequisites: Computational geometry<br />
<br />
<u>Detailed Description:</u> This project would improve workflow of editing of geometry of paths. Combining strengths of Pen tool and Node tool with modifiers and new behaviors. This improvement should benefit pro users but also beginners. Good example of this implementation is in blenders new pen tool.<br />
<br />
'''[https://gitlab.com/inkscape/ux/-/issues/5 Full Proposal here]'''[[File:Imageasdasd.png|thumb|184x184px]]<br />
<br />
== P19. Improving UI of Live path effects ==<br />
*Estimation of difficulty: Medium- Hard, Short or Long depending on scope (175h or 350h)<br />
*Potential mentors: Mike, jabier ,??<br />
* Programming skills: GTK 4, C++<br />
*Prerequisites: Front end UI , familiarity with Live path effects<br />
[[File:Imageasdasda qrq.png|thumb|146x146px]]<br />
<br />
<u>Detailed Description:</u> This project Should implement Proposed UI clean up of Controls . LPE controls shoulbe be more user freindly and predictive,<br />
<br />
[https://gitlab.com/inkscape/ux/-/issues/?sort=popularity&state=opened&label_name%5B%5D=Dialog%3A%3ALPE&first_page_size=100 '''Full Proposed designs''']<br />
<br />
<br />
== P20. Recolor Artwork ==<br />
* Estimation of difficulty: Variable - Short (90h or 175h)<br />
* Potential mentors: Adam Belis ?<br />
* Programming skills: usually C++<br />
* Prerequisites: <br />
<br />
<u>Detailed Description</u><br />
An easy and convenient way how to change any color from the selection. Useful for experimenting and tweaking colors.<br />
<br />
<br />
[https://gitlab.com/inkscape/inbox/-/issues/6095 '''Full proposal Here''']<br />
<br />
<br />
<u>Use cases</u><br />
* Amaze us!<br />
<br />
==Pxx. Your project ==<br />
* Estimation of difficulty: Variable - Short or Long (175h or 350h)<br />
* Potential mentors: Marc Jeanmougin<br />
* Programming skills: usually C++<br />
* Prerequisites: good ideas<br />
<br />
<u>Detailed Description</u><br />
The most successful GSoC we had in the past were students coming with their own past, use cases and ideas for Inkscape. Many basic tools like 3d cubes or connectors you can see in Inkscape now have been brought by brilliant people (like you) with ideas. If we think that your project fits with Inkscape (ie: has its place with a vector graphic editor), we can help you refining your ideas and help bring shiny new stuff to life!<br />
<br />
<u>Use cases</u><br />
* Amaze us!<br />
<br />
= Successful SOC Projects from Previous Years =<br />
* 2005<br />
** Connectors<br />
** Inkboard<br />
** [http://www.openclipart.org/ Open Clip Art Library (OCAL)] Interface<br />
** DXF Import / Export<br />
* [[Google Summer of Code 2006|2006]]<br />
** Support for SVG Filters<br />
** Filter Effects<br />
** PDF export<br />
** Inkboard Protocol Spec / Lib Conversion<br />
* [[Google Summer of Code 2007|2007]]<br />
** Text Style Improvements<br />
** PDF import<br />
** Live Path Effects<br />
** 3D Box Tool<br />
** UI for SVG Filter Effects<br />
** Raster Functionality<br />
** Importing from, and Exporting to, a remote ccHost instance<br />
* [[Google Summer of Code 2008|2008]]<br />
** SVG Fonts support<br />
** 2Geom refactoring project - port most geometry code to 2Geom<br />
** lib2geom: interactive applications showing off the power of lib2geom<br />
** Tech drawing abilities<br />
** A test suite<br />
* 2009<br />
** [[GSoC2009 Node Tool Rewrite|Node tool rewrite]]<br />
** D-Bus scripting API<br />
** Connector tool improvements<br />
** ICC/CMYK workflow<br />
* 2010<br />
** Cairo-based rendering<br />
** C++ification of SP Layer<br />
* 2011<br />
** Rendering caching<br />
** Javascript support improvements<br />
** CSS support improvements<br />
* 2012<br />
** Usibility Improvements for Guides<br />
** [[Tiling tool|On-canvas support for Tessellations]]<br />
** Creating python bindings for lib2geom<br />
* [[Google Summer of Code 2013|2013]]<br />
** Recolor Tool<br />
** Improved Units Support<br />
** Electronics CAD Support<br />
** New From Templates Dialog<br />
** New Raster to Vector Algorithm<br />
* 2014<br />
** Better Support for SVG Paints<br />
** Robust Boolean and Stroking Operations for 2Geom<br />
* 2016<br />
** [[GSoC 2016 Better data structure for selections|Better data structure for selections]]<br />
** [[Style Editor|CSS Style Sheet Editor]]<br />
* 2017<br />
** SVG 2 Text Support<br />
** Better CSS Style Sheet Support<br />
* 2019<br />
** Mesh gradient and hatches polyfills. Paint server dialog.<br />
* 2020<br />
** [https://gitlab.com/vanntile/inkscape-gsoc-2020 New dialog system.]<br />
** [https://gitlab.com/rathod-sahaab/gsoc-2020-inkscape Command palette dialog.]<br />
** Path operations.<br />
* 2021<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/3420 On canvas marker editing.]<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/3328 Verbs to Gio::Actions.]<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/3294 On canvas alignment snapping.]<br />
* 2022<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/4692 Tab Structure.]<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/4694 Font Collections.]<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/4756 Modernizing Memory Management.]<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/4504 OCR Support.]<br />
[[Category:Developer Documentation]]<br />
</div></div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Google_Summer_of_Code&diff=122653Google Summer of Code2024-02-04T20:42:43Z<p>Mc: </p>
<hr />
<div><div style="max-width:70em; margin-left: auto; margin-right: auto"><br />
= Welcome to Inkscape! =<br />
<br />
For quite a few years Inkscape has been successfully participating in [http://code.google.com/soc/ Google Summer of Code].<br />
<br />
Google has opened up the program to students AND beginners to Open Source who are 18 years are older. Projects can be medium size (~175 hours) or large size (~350 hours). Finish times are flexible, 12 to 22 weeks (with agreement of mentor).<br />
<br />
GSoC is a program where Google funds the development of specific features in open source software by university students and other new to open source. You don't need to be a Computer Science student to apply. Features to be developed are picked by Inkscape administrators from the pool of proposals submitted by applicants.<br />
<br />
We've mentored about half a dozen students a year since GSoC started. Many students enjoyed their work and continue to be involved; perhaps your mentor will be a past GSoC student! We have a high rate of acceptance of student code into the core codebase. Indeed, GSoC projects have been a key source of some of Inkscape's best features in the past several releases.<br />
<br />
If you are interested in joining us this summer, it is time to get your proposal ready. You can choose a proposal from our list of suggestions or come up with one of your own. In either either case, you '''must''' give us a detailed outline of what you plan to do. It is '''highly''' recommended that you discuss your idea as early as possible with Inkscape developers. They not only can give you guidance as you flesh out your proposal but ultimately you must convince them that you can do the work planned in the time allotted. '''If you have not discussed your proposal with Inkscape developers before you apply, your application will be rejected!'''<br />
<br />
= Candidate Applications =<br />
<br />
* Google program information:<br />
** [https://summerofcode.withgoogle.com/ Home page].<br />
** Summer of Code Application form. Applications open at 18:00 UTC on March 20th, 2023.<br />
<br />
* Inkscape-specific information:<br />
** [[SOC Application Template]].<br />
** [[Roadmap | Inkscape Roadmap]] - to see our overall objectives.<br />
** [[Projects | Inkscape Development Project Ideas]] - broader list of development ideas.<br />
** [[SOC Writing Project Proposals]] - some guidelines for proposals.<br />
** [[SOC Selection Criteria]] - how we rate applications.<br />
<br />
'''Candidate Applications for GSoC 2023 must be submitted to the GSoC site by 18:00 UTC on April 4th 2023.'''<br />
<br />
= The "two patches" rule =<br />
<br />
We require two patches from each potential GSoC student, before accepting the student for GSoC participation (it is the same requirement as for obtaining rights to commit changes to the code repository).<br />
<br />
The reason for this requirement is that you can show us that you have succeeded in building Inkscape on your PC, and that you have understood a little piece of Inkscape's code and are able to improve it. <br />
Inkscape is a large project, and you really should not try to understand all the code. Many (all?) developers know only parts of the program code!<br />
You can join our [https://inkscape.org/community/discussion/ IRC] channel or [https://chat.inkscape.org/channel/team_devel Rocket Chat] and ask developers for help.<br />
<br />
== Suggested "easy" bug fixes or improvements ==<br />
<br />
To get you started on Inkscape development, you can find (probably) easy-to-fix bugs or small improvements that require very little knowledge of the whole program by searching our [https://gitlab.com/inkscape/inkscape/issues/ bug-tracker] for bugs tagged with 'easy-fix'.<br />
<br />
= Performance Evaluation =<br />
<br />
GSoC has two formal evaluation points, at the ''mid-term'' and at the end. These evaluations determine if you receive the stipend from Google. In order to receive a pass for the evaluations you will need to show adequate progress toward your project's goals.<br />
<br />
To help you meet your goals and so that your mentor can better evaluate your progress you need to:<br />
<br />
* Have frequent, public discussions of your progress. (Don't rely on just your mentor for advice.)<br />
* Have a public Inkscape branch for your code to which you commit regularly.<br />
* Give weekly status reports.<br />
<br />
For the final pass, you will normally be required to merge your code into Inkscape trunk.<br />
<br />
Remember: ''we want you to succeed!''<br />
<br />
= Suggested Project Ideas =<br />
<br />
The following is a list of formal project suggestions, but do not feel limited to only these - some of our best contributions have been unique ideas that students had in mind from other sources!<br />
<br />
See also [[Development Project Ideas]], [[Refactoring projects]], [[Projects]], and https://blueprints.launchpad.net/inkscape/<br />
<br />
==P1. Better CSS Style Sheet Support==<br />
<br />
Enhance Inkscape's support for CSS style sheets.<br />
<br />
* Estimation of difficulty: Moderately hard - Long (350h)<br />
* Potential mentors: Tavmjong Bah<br />
* Programming skills needed: C++<br />
* Prerequisites: Experience with CSS style sheets.<br />
<br />
<u>Detailed Description</u><br />
<br />
Inkscape has basic support for CSS style sheets that can read and parse internal style sheets. A 2016 GSoC project added a simple style dialog that can create and modify the internal style sheet. The dialog is very limited and is not intuitive to use. A 2017 GSoC project added support for CSS 3 selectors. More work has been done recently, creating the ''Selectors and CSS'' dialog... This project will extend the usefulness of that dialog by making it more user friendly and by extending its functionality.<br />
<br />
<u>Use Cases</u><br />
<br />
* Support externally created SVGs.<br />
* Producing better SVGs for the Web.<br />
* Changing style on multiple objects at once (palettes).<br />
<br />
<u>Related Material</u><br />
<br />
* [https://www.w3.org/TR/CSS2/ CSS 2 Specification]<br />
* [https://www.w3.org/TR/css-2015/ CSS 2015 Snapshot]<br />
<br />
==P5. UI-Free Inkscape ==<br />
<br />
* Estimation of difficulty: Difficult - Long (350h)<br />
* Potential mentors: Marc Jeanmougin<br />
* Programming skills: C++, CMake<br />
* Prerequisites: Minimal knowledge of build systems. Experience with GtkMM helpful.<br />
<br />
<u>Detailed Description</u><br />
Inkscape currently builds with X11 and gtk and a lot of graphical dependencies. But since it is allowed to run in commandline, and there are controlled environments (servers) that use it to convert svg to png and to perform actions, there should be no need to force it to build with those. The main goal of this project is to add a WITH_GUI compilation flag that when OFF, does *not* link Inkscape with any graphical dependency. While much work has been done towards this goal, much remains to be done. DONE <s>As a next step, Inkscape's "verbs" which are mostly GUI dependent (even if there is no reason to be) need to be converted to Gio::Actions.</s> More work needs to be done to separate out hidden GUI dependencies that remain after the Verb to Action transition.<br />
<br />
<u>Use cases</u><br />
* Server installs, scripts<br />
<br />
==P6. Refactoring==<br />
* Estimation of difficulty: Moderate - Short or Long depending on scope (175h or 350h)<br />
* Potential mentors: Tavmjong Bah<br />
* Programming skills: C++<br />
* Prerequisites: proficient C++.<br />
<br />
<u>Detailed Description</u><br />
Inkscape began life as the C program Sodipodi. Sodipodi was mostly the work of one person who had a clear vision of how the code should work. A major motivation of the Inkscape fork was to allow others to easily contribute to development. This resulted in rapid development but at a cost: the code has become much messier and now lacks a clear vision. This project is to work on refactoring the code. Refactoring can take many forms. It could be creating a better directory structure with README's that describe the purpose and function of the code in each directory. This would include rewriting code to reduce dependencies across directories (which would help, for example, in achieving a headless version of Inkscape). It could be the continued transition from C to C++ which often results in major reductions in the number of code lines. Or it could be identifying and eliminating redundant code. Refactoring is an important skill of which many books have been written. Here's a chance to gain valuable experience!<br />
<br />
See https://wiki.inkscape.org/wiki/index.php/Refactoring_projects for some ideas of projects.<br />
<br />
==<strike>P7. Tesseract OCR</strike> 2022 GSoC==<br />
<br />
* Estimation of difficulty: Easy - Short (175h)<br />
* Potential mentors: unknown<br />
* Programming skills: C / C++, AI<br />
* Prerequisites: unknown<br />
<br />
<u>Detailed Description</u><br />
The Tesseract OCR library available here https://github.com/tesseract-ocr/tesseract gives the ability to detect text, lines, and other shapes within a document. This type of vectorisation is currently missing from Inkscape. Plenty of other open source and proprietary tools have made use of this library.<br />
<br />
<u>Use cases</u><br />
* User interface design, converting screenshots<br />
<br />
==P8. Add Text and Image Support to Live Path Effect System ==<br />
* Estimation of difficulty: Hard - Short (175h)<br />
* Potential mentors: Jabier Arraiza (Spanish, English(not native))<br />
* Programming skills: C++<br />
* Prerequisites: Experience managing bitmaps<br />
<u>Detailed Description</u><br />
Live Path Effects are non destructive effects applied to paths and shapes standalone or inside a group.<br /> <br />
This is done keepeng a reference to the original data to reaply when needed.<br /><br />
But ignore text and image elements.<br /><br />
Things to do:<br />
* Study add image, text, both and maybe others SVG elements to the LPE system.<br />
* Create/adapt minimun one LPE for each new type of element acepted as reference. Suggestion Perspective-Envelope.<br />
<u>Use cases</u><br />
* Apply live effects to images and text based in C++ code in a non destructive way even in groups with mixed elements types.<br />
<br />
==P9. Path Library Improvements ==<br />
* Estimation of difficulty: Hard - Long (350h)<br />
* Potential mentors: Tavmjong Bah, KK<br />
* Programming skills: C++<br />
* Prerequisites: Strong math skills, specifically in geometry.<br />
<u>Detailed Description</u><br />
Inkscape relies on two geometry libraries for path manipulations: lib2geom and livarot. lib2geom is a generic modern library written specifically with Inkscape in mind. lib2geom is missing some functionality that Inkscape requires and that is found in livarot. This project is to move that functionality into lib2geom (or into separate files) using lib2geom path descriptions. A 2020 GSoC student did a significant amount of work understanding and documenting the issues involved. This project would be to build on his work.<br />
<br />
Specifically, the functionality needed is<br />
* Path offset/inset functions.<br />
* Path simplify.<br />
* Stroke to path function.<br />
* Line scanning (used for flowing text into a shape).<br />
<br />
==<strike>P10. Font Selection Improvements</strike> 2022 GSoC==<br />
* Estimation of difficulty: Medium - Short (175h)<br />
* Potential mentors: Tavmjong Bah, ??<br />
* Programming skills: C++<br />
* Prerequisites: Some knowledge of GTK.<br />
<u>Detailed Description</u><br />
Inkscape's ''Text toolbar'' and ''Text and Font dialog'' present the user with a long list of font family choices. Designers often have hundreds if not thousands of fonts on their system to choose from making the use of these lists difficult and time consuming (and generating font previews slows Inkscape down). This project is to add a ''Font Selection dialog'' where the user can create a list of "Document Fonts" (along with CSS fallbacks). Only these documents fonts will then be shown in the drop-down menus in the Inkscape's Text toolbar and Text and Font dialog. The ''Font Selection'' dialog should show the designer previews of all available fonts, provide "filtering" mechanisms, and allow easily moving fonts to and from the document font list. Interaction with Inkscape's ''UX'' team will be crucial. A bonus feature would be to allow the user to add @font-face rules (Inkscape has some support for these already but has no UX for them).<br />
<br />
==P11. Improvements to Paint Server Dialog ==<br />
<br />
* Estimation of difficulty: Easy to Medium - Short (175h)<br />
* Potential mentors: Tavmjong<br />
* Programming skills: C++<br />
* Prerequisites: Some knowledge of GTK and CSS.<br />
<u>Detailed Description</u><br />
The ''Paint Server Dialog'' allows a user to visually select a pattern or hatch to use in painting the ''fill'' or ''stroke'' of an object. This project would be to expand the dialog to cover gradients, meshes, and solid colors as well as make other improvements to the dialog. Interaction with the Inkscape's ''UX'' team will be required.<br />
<br />
==<strike>P12. Customizable Appearance of Canvas Controls</strike> GSOC 2023 ==<br />
[[File:Nodes.png|frame|alt=Screenshot of node handles|Node handles (Inkscape 1.2)]]<br />
* Estimation of difficulty: Medium - Short (175h)<br />
* Potential mentors: Rafał Siejakowski, ??<br />
* Programming skills: C, C++<br />
* Prerequisites: Some knowledge of CSS.<br />
<u>Detailed Description</u><br />
Interacting with path nodes and tangent handles (e.g., using the ''Node Tool'') is one of the core workflows in Inkscape (see screenshot).<br />
Unfortunately, the appearance of these on-canvas controls is currently very ugly (gray with black border, no support for outline)<br />
and hardcoded (except for size, which can be adjusted in the Preferences).<br />
The goal of this project is to make Inkscape read the styles of the node handles from an external CSS file shipped with Inkscape installations.<br />
This feature will enable UI designers to easily tweak the appearance of on-canvas controls using CSS and will in particular implement<br />
the [https://gitlab.com/inkscape/ux/-/issues/115 existing restyling proposal].<br />
It will also open up the road to potential future improvements: user-customizability, theming support, styling support for other UI elements.<br/><br />
<u>Technical details</u><br />
Inkscape already uses a library called <code>libcroco</code> for CSS parsing.<br />
The proposed mechanism will support only a small subset of CSS, suitable for styling the canvas controls.<br />
Their shape could be represented by <code>list-style-type</code> values of <code>disc</code>, <code>square</code> and string values <code>"diamond"</code>, etc.<br />
The feature should also support <code>background-color</code>, <code>border-color</code>, <code>border-width</code>, <code>outline-color</code>, <code>outline-width</code>, where the widths could be set as absolute dimensions in <code>px</code> or relative values (percentages).<br />
Hover, mousedown and selected states should also be specified, using CSS pseudo-classes such as <code>:hover</code>.<br />
If time permits, additional CSS properties (such as <code>mix-blend-mode</code>) and more node shapes could be added.<br />
A simple renderer for the on-canvas controls must be implemented, which will create cached bitmaps at the requested size, taking the styling information into account.[[File:Imageasdasda.png|thumb]]<br />
<br />
== P13. Node-based filter editor ==<br />
<br />
*Estimation of difficulty: Hard - Long (350h)<br />
* Potential mentors: Mc<br />
* Programming skills: C++<br />
* Prerequisites: Minimal knowledge of build systems<br />
<br />
<u>Detailed Description:</u> The filter editor is kind of hard to understand and master based on its current UI. Using a node-based tool for it, such as what can be done with https://notabug.org/grindhold/libgtkflow would help people create and master the filter primitives easier.<br />
<br />
[https://gitlab.com/inkscape/ux/-/issues/40 '''Full poposal''']<br />
==P14. Cached styles for inkex==<br />
<br />
*Estimation of difficulty: Medium - Short (175h)<br />
*Potential mentors: Jonathan<br />
* Programming skills: Python, CSS<br />
* Prerequisites: minimal knowledge of test-driven development<br />
<br />
<u>Detailed Description:</u> When inkex, the Python library behind Inkscape's extension system, computes styles, this is relatively slow, especially for documents with either many style sheets or documents with many elements / highly nested documents. This is because for each element, the XPATH of each CSS rule is computed, and then it is checked whether the current element is in the XPATH result. Then, the same computation is repeated for the parent. Since Python is not very fast itself, such inefficiencies quickly make style evaluation unusable for big documents.<br />
<br />
With this project, we would explore ways to speed up those computations, mainly using caching and more intelligent ways of evaluating CSS rules. Some approaches might be taken from [https://hacks.mozilla.org/2017/08/inside-a-super-fast-css-engine-quantum-css-aka-stylo/ a recent firefox refactoring].<br />
<br />
Ideally, the caching will be tuned to support read-only (export), read-heavy (modify path), write-heavy (generate from path) and write-only (import) extensions, which have different caching needs.<br />
<br />
The work should be done in a test-driven development approach.<br />
<br />
== P15. Import and Export extensions ==<br />
<br />
*Estimation of difficulty: Flexible, usually easy to medium, Short or Long depending on scope (175h or 350h)<br />
*Potential mentors: Jonathan<br />
* Programming skills: Python, Ability to read technical documents, depending on the format: some reverse engineering<br />
* Prerequisites: minimal knowledge of test-driven development<br />
<br />
<u>Detailed Description:</u> Inkscape is alway looking to improve compatibility! Some ideas of relevant file formats - each of them more than enough for one GSoC:*Refactor our '''DXF input and output''' extensions, and expand support towards binary DXF<br />
*Write an as-complete-as-possible '''EPS export''', circumventing the internal information loss in ghostscript (EPS is still relevant for scientific papers, but more and more tools are dropping support, so this is a chance to grab market share - the results of Adobe Distiller are much better than ghostscript's...)<br />
*Rewrite the '''XAML importer''' in Python (currenly XSLT) to match the capabilities of the new XAML exporter (i.e. support for different target frameworks, better text support...) - would have to select carefully what to support (drawing primitives) and what not (control elements) - the boundary is not as clear-cut as it seems.<br />
* Update the '''Synfig export''' to support the latest Synfig developments<br />
* '''Import or export of TikZ'''. There are a few abandoned extensions out there (from which we can borrow), but it's very widely used in science - both import and export could serve an important function in the scientific workflow.<br />
*'''Import of the proprietary fileformats''' of Affinity Design, Vectornator, Vectorstyler (especially the last two seem in their infancy and users at some point will sit on a bunch of files that they can't open anymore because their SAAS model wasn't profitable) .<br />
*'''Import of CGM''' - old, but ISO standardized. Was supported once and dropped when the uniconvertor extension was removed for 1.0.<br />
* '''Python based EMF / WMF importer -''' the current (core Inkscape) C extension is unmaintained and Python would probably be the right way to get more collaboration on it. A lot of public archives sit on mountains of EMF files. Note that the Document Foundation recently did a lot of work properly importing those files, so we can learn from them / maybe even join forces...<br />
*your favorite file format? - also have a look here: https://office.inkscape.org/nextcloud/index.php/s/Tq6cdDDGay6taCw<br />
==P16. Gcodetools refactoring and documentation==<br />
<br />
*Estimation of difficulty: Easy- Short or Long depending on scope (175h or 350h)<br />
*Potential mentors: Jonathan<br />
* Programming skills: Python<br />
* Prerequisites: Maker background / familiarity with the Maker community<br />
<br />
<u>Detailed Description:</u> [https://gitlab.com/inkscape/extras/extensions-gcodetools/ Gcodetools] is a set of Inkscape extensions that deal with reading and creating Gcode files, mostly for use in laser cutters or plotters. For this project, ideally someone with a Makerspace background will<br />
#query maker spaces on their needs regarding gcodetools,<br />
#implement those needs together with unit tests,<br />
# improve the test coverage of Gcodetools,<br />
#write proper documentation for it. (doesn't really exist at the moment).<br />
==P17. Packing / Nesting as an Inkscape extension==<br />
<br />
*Estimation of difficulty: Medium, Short or Long depending on scope (175h or 350h)<br />
*Potential mentors: Jonathan<br />
* Programming skills: Python<br />
* Prerequisites: Computational geometry<br />
<br />
<u>Detailed Description:</u> In this project, a set of packing / nesting algorithms will be implemented:<br />
*[https://en.wikipedia.org/wiki/Cutting_stock_problem Linear nesting] is not too useful in SVG, but might be a good place to get acquainted with the problem. 2D cutting stock problem would be very interesting to have and would work great with the new multipage functionality.<br />
*For efficient packing of free form objects, we might just re-implement [https://github.com/Jack000/SVGnest SVGNest] in Python. There are probably some more recent research papers which would be interesting to implement as a comparison.<br />
<br />
== P18. Improving UX of Node tool and Bezier tool ==<br />
*Estimation of difficulty: Medium - Hard, Short or Long depending on scope (175h or 350h)<br />
*Potential mentors: Tav, ??<br />
* Programming skills: C++,<br />
*Prerequisites: Computational geometry<br />
<br />
<u>Detailed Description:</u> This project would improve workflow of editing of geometry of paths. Combining strengths of Pen tool and Node tool with modifiers and new behaviors. This improvement should benefit pro users but also beginners. Good example of this implementation is in blenders new pen tool.<br />
<br />
'''[https://gitlab.com/inkscape/ux/-/issues/5 Full Proposal here]'''[[File:Imageasdasd.png|thumb|184x184px]]<br />
<br />
== P19. Improving UI of Live path effects ==<br />
*Estimation of difficulty: Medium- Hard, Short or Long depending on scope (175h or 350h)<br />
*Potential mentors: Mike, jabier ,??<br />
* Programming skills: GTK 4, C++<br />
*Prerequisites: Front end UI , familiarity with Live path effects<br />
[[File:Imageasdasda qrq.png|thumb|146x146px]]<br />
<br />
<u>Detailed Description:</u> This project Should implement Proposed UI clean up of Controls . LPE controls shoulbe be more user freindly and predictive,<br />
<br />
[https://gitlab.com/inkscape/ux/-/issues/?sort=popularity&state=opened&label_name%5B%5D=Dialog%3A%3ALPE&first_page_size=100 '''Full Proposed designs''']<br />
<br />
<br />
== P20. Recolor Artwork ==<br />
* Estimation of difficulty: Variable - Short or Long (175h or 350h)<br />
* Potential mentors: Marc Jeanmougin<br />
* Programming skills: usually C++<br />
* Prerequisites: <br />
<br />
<u>Detailed Description</u><br />
An easy and convenient way how to change any color from the selection. Useful for experimenting and tweaking colors.<br />
<br />
<br />
[https://gitlab.com/inkscape/inbox/-/issues/6095 '''Full proposal Here''']<br />
<br />
<br />
<u>Use cases</u><br />
* Amaze us!<br />
<br />
==Pxx. Your project ==<br />
* Estimation of difficulty: Variable - Short or Long (175h or 350h)<br />
* Potential mentors: Marc Jeanmougin<br />
* Programming skills: usually C++<br />
* Prerequisites: good ideas<br />
<br />
<u>Detailed Description</u><br />
The most successful GSoC we had in the past were students coming with their own past, use cases and ideas for Inkscape. Many basic tools like 3d cubes or connectors you can see in Inkscape now have been brought by brilliant people (like you) with ideas. If we think that your project fits with Inkscape (ie: has its place with a vector graphic editor), we can help you refining your ideas and help bring shiny new stuff to life!<br />
<br />
<u>Use cases</u><br />
* Amaze us!<br />
<br />
= Successful SOC Projects from Previous Years =<br />
* 2005<br />
** Connectors<br />
** Inkboard<br />
** [http://www.openclipart.org/ Open Clip Art Library (OCAL)] Interface<br />
** DXF Import / Export<br />
* [[Google Summer of Code 2006|2006]]<br />
** Support for SVG Filters<br />
** Filter Effects<br />
** PDF export<br />
** Inkboard Protocol Spec / Lib Conversion<br />
* [[Google Summer of Code 2007|2007]]<br />
** Text Style Improvements<br />
** PDF import<br />
** Live Path Effects<br />
** 3D Box Tool<br />
** UI for SVG Filter Effects<br />
** Raster Functionality<br />
** Importing from, and Exporting to, a remote ccHost instance<br />
* [[Google Summer of Code 2008|2008]]<br />
** SVG Fonts support<br />
** 2Geom refactoring project - port most geometry code to 2Geom<br />
** lib2geom: interactive applications showing off the power of lib2geom<br />
** Tech drawing abilities<br />
** A test suite<br />
* 2009<br />
** [[GSoC2009 Node Tool Rewrite|Node tool rewrite]]<br />
** D-Bus scripting API<br />
** Connector tool improvements<br />
** ICC/CMYK workflow<br />
* 2010<br />
** Cairo-based rendering<br />
** C++ification of SP Layer<br />
* 2011<br />
** Rendering caching<br />
** Javascript support improvements<br />
** CSS support improvements<br />
* 2012<br />
** Usibility Improvements for Guides<br />
** [[Tiling tool|On-canvas support for Tessellations]]<br />
** Creating python bindings for lib2geom<br />
* [[Google Summer of Code 2013|2013]]<br />
** Recolor Tool<br />
** Improved Units Support<br />
** Electronics CAD Support<br />
** New From Templates Dialog<br />
** New Raster to Vector Algorithm<br />
* 2014<br />
** Better Support for SVG Paints<br />
** Robust Boolean and Stroking Operations for 2Geom<br />
* 2016<br />
** [[GSoC 2016 Better data structure for selections|Better data structure for selections]]<br />
** [[Style Editor|CSS Style Sheet Editor]]<br />
* 2017<br />
** SVG 2 Text Support<br />
** Better CSS Style Sheet Support<br />
* 2019<br />
** Mesh gradient and hatches polyfills. Paint server dialog.<br />
* 2020<br />
** [https://gitlab.com/vanntile/inkscape-gsoc-2020 New dialog system.]<br />
** [https://gitlab.com/rathod-sahaab/gsoc-2020-inkscape Command palette dialog.]<br />
** Path operations.<br />
* 2021<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/3420 On canvas marker editing.]<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/3328 Verbs to Gio::Actions.]<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/3294 On canvas alignment snapping.]<br />
* 2022<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/4692 Tab Structure.]<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/4694 Font Collections.]<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/4756 Modernizing Memory Management.]<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/4504 OCR Support.]<br />
[[Category:Developer Documentation]]<br />
</div></div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Using_Visual_Studio&diff=122237Using Visual Studio2023-03-13T14:49:13Z<p>Mc: Replaced content with "{{Deleted}}"</p>
<hr />
<div>{{Deleted}}</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Hackfest2023_Bensberg&diff=122179Hackfest2023 Bensberg2023-02-20T17:10:31Z<p>Mc: travel times - Mc</p>
<hr />
<div>[[File:Hackfest bensberg sticker.png|left|thumb|150x150px]]<br />
This page '''<big>IS WORK IN PROGRESS</big>''' and details the planning of Inkscape's 2023 hackfest in Bensberg, Germany. The hackfest will take place on '''March 13-17, 2023'''. We are looking to bring together a group of '''10 attendees'''. <s>but do not let that number discourage you from throwing your hat in the ring in case we reach/go over it.</s> We are fully booked and the number of participants is final now.<br />
<br />
This hackfest is a standalone event and not organized around any other event or FOSS conference.<br />
<br />
Previous events: [[Hackfest2019 Saarbrücken]], [[Hackfest2019 SCALE]], [[Hackfest2018 Kiel]], [[Hackfest2018 LGM]], [[Hackfest2018]], [[Hackfest2017]], [[Hackfest2016]], [[Hackfest2015]].<br />
[[Category:Hackfest]]<br />
<br />
<br />
=Description=<br />
It's a hackfest! We will work on Inkscape bugs, new features, packaging, website issues, ... in fact anything that can benefit from us being physically in the same space. And let's not forget about the social component - we get to hang and talk and laugh in person since we usually only meet virtually :).<br />
==Bensberg==<br />
Bensberg is part of Bergisch Gladbach, a city in the western part of Germany, about 15 km east of Cologne. It is beautifully located in the countryside, surrounded by lush forests slightly elevated to give a great view depending on weather conditions. The nearest airport is Cologne Bonn (CGN) which is an international airport. <br />
*[https://en.wikipedia.org/wiki/Bergisch_Gladbach Bergisch Gladbach on Wikipedia]<br />
[[File:Bensberg.png|none|thumb|Bensberg (range indicated to Cologne's Cathedral). Screenshot from Google Maps.]]<br />
<br />
==Venue==<br />
Our host is the [https://www.akademie-generali.de/en/home Generali Akademie], the dedicated education and conference center of the Generali Group in Germany (it's an insurance company). The location's special appeal is its all-inclusive package: conference rooms, hotel rooms and full catering service are conveniently provided on-site.<br />
<br />
''(full disclosure: as an employee, RdH has been there multiple times)''<br />
{| class="wikitable"<br />
|+<br />
!official address<br />
!for navigation systems<br />
|-<br />
|Generali Akademie<br />
Am Schloss 1-3<br />
<br />
51429 Bergisch-Gladbach<br />
<br />
Germany<br />
|Generali Akademie<br />
Jan-Wellem-Straße<br />
<br />
51429 Bergisch-Gladbach<br />
<br />
Germany<br />
|}<br />
<br />
===Catering===<br />
We have full catering on-site, i.e. breakfast, lunch and dinner including non-alcoholic drinks. Our meeting room also comes with coffee and beverages throughout the day.<br />
===Facilities===<br />
*Wireless networking (fast broadband), powered by [https://www.m3connect.de/ m3connect]<br />
* <u>No wired network available</u><br />
*Europlug type F<br />
** we should bring some power strips<br />
*LCD projector, DVD player, VHS VCR (lol!)<br />
*swimming pool, whirlpool, sauna<br />
=== Vicinity===<br />
Nature. A castle. A small city.<br />
<br />
=== Arrival and Departure ===<br />
All times UTC+1.<br />
<br />
* earliest arrival on Monday: 8am<br />
** hotel rooms available: 3pm<br />
* latest departure on Friday: 5pm<br />
** We have some flexibility here, but we need to tell our hosts in advance.<br />
<br />
==Travel information==<br />
Your main destination is Cologne.<br />
<br />
=== from Cologne/Bonn airport (CGN) to central station ===<br />
Take the tram [https://ekap-download.vrs.de/downloads/linien/mini-fahrplan/2023_1219_S19.pdf?1671001552 S19] to Cologne central station. Travel time is about 15 minutes. The tram is scheduled every 20 minutes for most of the day.<br />
<br />
=== from Cologne central station to Bensberg (public transportation) ===<br />
Take the bus [https://ekap-download.vrs.de/downloads/linien/mini-fahrplan/2023_40_SB40.pdf?1670826858 Schnellbus SB 40] that directly connects Cologne central station to Bensberg (final stop). Travel time is about 30 minutes. This bus is scheduled every half hour between 6am and 8pm.<br />
[[File:Central station.png|none|thumb]]<br />
Once you arrive at the [https://ekap-download.vrs.de/downloads/haltestellen/lageplan/u_Bergisch_Gladbach_Bensberg.pdf?1670243814 bus stop in Bensberg], you can either take a taxi or walk about 900m to our location.<br />
[[File:Bus stop bensberg.png|none|thumb]]<br />
<br />
=== from Cologne central station to Bensberg (cab) ===<br />
Our hosts have special conditions with a local cab service (https://www.transfer-nurdogan.de/). I can't tell if that's cheaper compared to the others or just for a classy look:<br />
<br />
* 45 € (standard)<br />
* 50 € (large cab, suitable for sharing)<br />
<br />
== Hotels ==<br />
Hotel rooms are provided on-site and are part of our conference package, no dedicated booking necessary.<br />
<br />
==Cost calculation==<br />
<br />
=== per attendee ===<br />
<br />
The fee for housing and catering per attendee is 837 € and is due on the last day of the event, payable via debit or credit card (VISA, Mastercard) by each individual themself. A billing address needs to be provided in advance.<syntaxhighlight lang="text"><br />
hotel room incl. breakfast 127 € x 4 days = 508 €<br />
catering service (days 1-4) 70 € x 4 days = 280 €<br />
catering service (day 5) 49 € x 1 day = 49 €<br />
-------------------------------------------- 837 €<br />
</syntaxhighlight><br />
<br />
=== joint event ===<br />
One attendee (RdH) needs to pay the additional fees for the joint event. This covers the meeting room (900 €) and all the alcoholic drinks (estimated 500 €) that have been consumed during the event. ''(Alcoholic drinks are not included in our otherwise "all inclusive" package and individual payment is not possible.)''<syntaxhighlight lang="text"><br />
meeting room (days 1-5) 180 € x 5 days = 900 €<br />
alcoholic drinks 500 € x 1 = 500 €<br />
-------------------------------------------- 1,400 €<br />
</syntaxhighlight><br />
<br />
=== Total ===<br />
<br />
Using the interim results from above, this brings us to a total cost (excl. travel) of 9,770 €.<syntaxhighlight lang="text"><br />
participants 837 € x 10 = 8,370 €<br />
joint event 1400 € x 1 = 1,400 €<br />
-------------------------------------------- 9,770 €<br />
</syntaxhighlight><br />
=Attendance =<br />
<br />
*Hackfest Bensberg 2023 takes place on '''March 13-17, 2023'''<br />
*deadline to apply for attendance is '''February 01, 2023'''<br />
<br />
== preface==<br />
In an initial poll, 8 people expressed their interest/availability for this hackfest. Based on this number we are planning for 10 attendees. Should more people be interested, we'll try our best to expand - the earlier we know, the better! If we don't reach 10, we will try to scale down our booking. If you are interested, don't hold yourself back!<br />
<br />
==I want to attend!==<br />
That's great! Be aware of the following: <br />
<br />
*You are making a commitment here which will produce expenses for the project. Please make sure that you will be able to honor this commitment! ''(Are you table to take the week off from your day job? Are you able to travel? etc.)''<br />
* Every attendee will have to pay their fee of 837 € on the last day of the hackfest. There is something special about payment methods that we will have to talk about privately, I'll contact everyone. ''(After the hackfest you can follow the reimbursement procedure.)''<br />
*You are eligible to apply no matter if you participated in the initial poll/"call for interest". ''(Only in case we end up being seriously overbooked and cannot accommodate for everybody we will take the initial poll into account.)''<br />
<br />
Now go ahead and add yourself to this table (or ask in [https://gitlab.com/inkscape/inbox/-/issues/8109 this issue] and it will be done for you):<br />
<br />
<br />
Join the Signal phone group to keep in touch with everyone during the event.<br />
{| class="wikitable"<br />
|+<br />
!Name<br />
!GitLab handle<br />
!Inbound<br />
!Outbound<br />
|-<br />
|Martin Owens<br />
|@doctormo<br />
|LH423 13T05:15 FRA<br />
|UA8853 21T10:50 FRA<br />
|-<br />
|Jonathan Neuhauser<br />
|@joneuhauser<br />
|13.03. 9:55 (Bensberg)<br />
|17.03. 16:08 (Bensberg)<br />
|-<br />
|Tavmjong Bah<br />
|@Tavmjong<br />
|13.03 13:15 Cologne<br />
|17.03 18:43 Cologne<br />
|-<br />
|Marc Jeanmougin<br />
|@marcjeanmougin<br />
|12.03 13h15 Cologne Hbf<br />
|19.03 13h42 Cologne Hbf<br />
|-<br />
|Chris Rogers<br />
|@CRogers <br />
|booked - ok!<br />
|booked - ok!<br />
|-<br />
|René de Hesselle<br />
|@dehesselle<br />
|13.03. 9:00 (Bensberg)<br />
|17.03. 17:00 (Bensberg)<br />
|-<br />
|Jabier Arraiza<br />
|@jabiertxof<br />
|<br />
|<br />
|-<br />
|Thomas Holder<br />
|@speleo3<br />
|<br />
|<br />
|-<br />
|Ted Gould<br />
|@ted.gould<br />
|<br />
|<br />
|-<br />
|Nicco Kunzmann<br />
|@niccokunzmann<br />
|<br />
|<br />
|}<br />
<br />
== I want SFC to pay for my flight/train ==<br />
<br />
* @doctormo<br />
* @jabiertxof<br />
* @niccokunzmann<br />
<br />
== Hackfest Agenda ==<br />
<br />
=== Add your ideas here! We'll make a tentative agenda at the start ===<br />
<br />
* Organization<br />
** Community: Vectors, Testers, Translators, etc.<br />
*** Social video call with Vectors.<br />
***Is there interest in merging communities? E.g. our user channel and Discord?<br />
** Board election<br />
** Financial status<br />
** Paid development<br />
* Infrastructure<br />
** Website, social media<br />
** Resources for developers<br />
* GSoC and Outreachy<br />
* Development discussions<br />
** Releases<br />
** Dependencies<br />
** Bug fixing<br />
** GTK4<br />
** Refactoring<br />
**advancing C++ standard (depends on change in macOS pipeline)<br />
***getting rid of boost<br />
***using newer stuff from std<br />
** etc.<br />
* Hacking<br />
** Code reviews<br />
** Critical bugs for 1.3</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Google_Summer_of_Code&diff=122067Google Summer of Code2023-02-03T15:08:27Z<p>Mc: add p13</p>
<hr />
<div><div style="max-width:70em; margin-left: auto; margin-right: auto"><br />
= Welcome to Inkscape! =<br />
<br />
For quite a few years Inkscape has been successfully participating in [http://code.google.com/soc/ Google Summer of Code].<br />
<br />
'''New this year!''' Google is opening up the program to new-comers to Open Source who are 18 years are older. Projects can be medium size (~175 hours) or large size (~350 hours). Finish times are flexible, 12 to 22 weeks (with agreement of mentor).<br />
<br />
GSoC is a program where Google funds the development of specific features in open source software by university students and other new to open source. You don't need to be a Computer Science student to apply. Features to be developed are picked by Inkscape administrators from the pool of proposals submitted by applicants.<br />
<br />
We've mentored about half a dozen students a year since GSoC started. Many students enjoyed their work and continue to be involved; perhaps your mentor will be a past GSoC student! We have a high rate of acceptance of student code into the core codebase. Indeed, GSoC projects have been a key source of some of Inkscape's best features in the past several releases.<br />
<br />
If you are interested in joining us this summer, it is time to get your proposal ready. You can choose a proposal from our list of suggestions or come up with one of your own. In either either case, you '''must''' give us a detailed outline of what you plan to do. It is '''highly''' recommended that you discuss your idea as early as possible with Inkscape developers. They not only can give you guidance as you flesh out your proposal but ultimately you must convince them that you can do the work planned in the time allotted. '''If you have not discussed your proposal with Inkscape developers before you apply, your application will be rejected!'''<br />
<br />
= Candidate Applications =<br />
<br />
* Google program information:<br />
** [https://summerofcode.withgoogle.com/ Home page].<br />
** Summer of Code Application form. Applications open at 18:00 UTC on April 4th 2022.<br />
<br />
* Inkscape-specific information:<br />
** [[SOC Application Template]].<br />
** [[Roadmap | Inkscape Roadmap]] - to see our overall objectives.<br />
** [[Projects | Inkscape Development Project Ideas]] - broader list of development ideas.<br />
** [[SOC Writing Project Proposals]] - some guidelines for proposals.<br />
** [[SOC Selection Criteria]] - how we rate applications.<br />
<br />
'''Candidate Applications for GSoC 2022 must be submitted to the GSoC site by 18:00 UTC on April 19th 2022.'''<br />
<br />
= The "two patches" rule =<br />
<br />
We require two patches from each potential GSoC student, before accepting the student for GSoC participation (it is the same requirement as for obtaining rights to commit changes to the code repository).<br />
<br />
The reason for this requirement is that you can show us that you have succeeded in building Inkscape on your PC, and that you have understood a little piece of Inkscape's code and are able to improve it. <br />
Inkscape is a large project, and you really should not try to understand all the code. Many (all?) developers know only parts of the program code!<br />
You can join our [https://inkscape.org/community/discussion/ IRC] channel or [https://chat.inkscape.org/channel/team_devel Rocket Chat] and ask developers for help.<br />
<br />
== Suggested "easy" bug fixes or improvements ==<br />
<br />
To get you started on Inkscape development, you can find (probably) easy-to-fix bugs or small improvements that require very little knowledge of the whole program by searching our [https://gitlab.com/inkscape/inkscape/issues/ bug-tracker] for bugs tagged with 'easy-fix'.<br />
<br />
= Performance Evaluation =<br />
<br />
GSoC has two formal evaluation points, at the ''mid-term'' and at the end. These evaluations determine if you receive the stipend from Google. In order to receive a pass for the evaluations you will need to show adequate progress toward your project's goals.<br />
<br />
To help you meet your goals and so that your mentor can better evaluate your progress you need to:<br />
<br />
* Have frequent, public discussions of your progress. (Don't rely on just your mentor for advice.)<br />
* Have a public Inkscape branch for your code to which you commit regularly.<br />
* Give weekly status reports.<br />
<br />
For the final pass, you will normally be required to merge your code into Inkscape trunk.<br />
<br />
Remember: ''we want you to succeed!''<br />
<br />
= Suggested Project Ideas =<br />
<br />
The following is a list of formal project suggestions, but do not feel limited to only these - some of our best contributions have been unique ideas that students had in mind from other sources!<br />
<br />
See also [[Development Project Ideas]], [[Refactoring projects]], [[Projects]], and https://blueprints.launchpad.net/inkscape/<br />
<br />
==P1. Better CSS Style Sheet Support==<br />
<br />
Enhance Inkscape's support for CSS style sheets.<br />
<br />
* Estimation of difficulty: Moderately hard - Long (350h)<br />
* Potential mentors: Tavmjong Bah<br />
* Programming skills needed: C++<br />
* Prerequisites: Experience with CSS style sheets.<br />
<br />
<u>Detailed Description</u><br />
<br />
Inkscape has basic support for CSS style sheets that can read and parse internal style sheets. A 2016 GSoC project added a simple style dialog that can create and modify the internal style sheet. The dialog is very limited and is not intuitive to use. A 2017 GSoC project added support for CSS 3 selectors. More work has been done recently, creating the ''Selectors and CSS'' dialog... This project will extend the usefulness of that dialog by making it more user friendly and by extending its functionality.<br />
<br />
<u>Use Cases</u><br />
<br />
* Support externally created SVGs.<br />
* Producing better SVGs for the Web.<br />
* Changing style on multiple objects at once (palettes).<br />
<br />
<u>Related Material</u><br />
<br />
* [https://www.w3.org/TR/CSS2/ CSS 2 Specification]<br />
* [https://www.w3.org/TR/css-2015/ CSS 2015 Snapshot]<br />
<br />
==P5. UI-Free Inkscape ==<br />
<br />
* Estimation of difficulty: Difficult - Long (350h)<br />
* Potential mentors: Marc Jeanmougin<br />
* Programming skills: C++, CMake<br />
* Prerequisites: Minimal knowledge of build systems. Experience with GtkMM helpful.<br />
<br />
<u>Detailed Description</u><br />
Inkscape currently builds with X11 and gtk and a lot of graphical dependencies. But since it is allowed to run in commandline, and there are controlled environments (servers) that use it to convert svg to png and to perform actions, there should be no need to force it to build with those. The main goal of this project is to add a WITH_GUI compilation flag that when OFF, does *not* link Inkscape with any graphical dependency. While much work has been done towards this goal, much remains to be done. DONE <s>As a next step, Inkscape's "verbs" which are mostly GUI dependent (even if there is no reason to be) need to be converted to Gio::Actions.</s> More work needs to be done to separate out hidden GUI dependencies that remain after the Verb to Action transition.<br />
<br />
<u>Use cases</u><br />
* Server installs, scripts<br />
<br />
==P6. Refactoring==<br />
* Estimation of difficulty: Moderate - Short or Long depending on scope (175h or 350h)<br />
* Potential mentors: Tavmjong Bah<br />
* Programming skills: C++<br />
* Prerequisites: proficient C++.<br />
<br />
<u>Detailed Description</u><br />
Inkscape began life as the C program Sodipodi. Sodipodi was mostly the work of one person who had a clear vision of how the code should work. A major motivation of the Inkscape fork was to allow others to easily contribute to development. This resulted in rapid development but at a cost: the code has become much messier and now lacks a clear vision. This project is to work on refactoring the code. Refactoring can take many forms. It could be creating a better directory structure with README's that describe the purpose and function of the code in each directory. This would include rewriting code to reduce dependencies across directories (which would help, for example, in achieving a headless version of Inkscape). It could be the continued transition from C to C++ which often results in major reductions in the number of code lines. Or it could be identifying and eliminating redundant code. Refactoring is an important skill of which many books have been written. Here's a chance to gain valuable experience!<br />
<br />
See https://wiki.inkscape.org/wiki/index.php/Refactoring_projects for some ideas of projects.<br />
<br />
==P7. Tesseract OCR==<br />
<br />
* Estimation of difficulty: Easy - Short (175h)<br />
* Potential mentors: unknown<br />
* Programming skills: C / C++, AI<br />
* Prerequisites: unknown<br />
<br />
<u>Detailed Description</u><br />
The Tesseract OCR library available here https://github.com/tesseract-ocr/tesseract gives the ability to detect text, lines, and other shapes within a document. This type of vectorisation is currently missing from Inkscape. Plenty of other open source and proprietary tools have made use of this library.<br />
<br />
<u>Use cases</u><br />
* User interface design, converting screenshots<br />
<br />
==P8. Add Text and Image Support to Live Path Effect System ==<br />
* Estimation of difficulty: Hard - Short (175h)<br />
* Potential mentors: Jabier Arraiza (Spanish, English(not native))<br />
* Programming skills: C++<br />
* Prerequisites: Experience managing bitmaps<br />
<u>Detailed Description</u><br />
Live Path Effects are non destructive effects applied to paths and shapes standalone or inside a group.<br /> <br />
This is done keepeng a reference to the original data to reaply when needed.<br /><br />
But ignore text and image elements.<br /><br />
Things to do:<br />
* Study add image, text, both and maybe others SVG elements to the LPE system.<br />
* Create/adapt minimun one LPE for each new type of element acepted as reference. Suggestion Perspective-Envelope.<br />
<u>Use cases</u><br />
* Apply live effects to images and text based in C++ code in a non destructive way even in groups with mixed elements types.<br />
<br />
==P9. Path Library Improvements ==<br />
* Estimation of difficulty: Hard - Long (350h)<br />
* Potential mentors: Tavmjong Bah, KK<br />
* Programming skills: C++<br />
* Prerequisites: Strong math skills, specifically in geometry.<br />
<u>Detailed Description</u><br />
Inkscape relies on two geometry libraries for path manipulations: lib2geom and livarot. lib2geom is a generic modern library written specifically with Inkscape in mind. lib2geom is missing some functionality that Inkscape requires and that is found in livarot. This project is to move that functionality into lib2geom (or into separate files) using lib2geom path descriptions. A 2020 GSoC student did a significant amount of work understanding and documenting the issues involved. This project would be to build on his work.<br />
<br />
Specifically, the functionality needed is<br />
* Path offset/inset functions.<br />
* Path simplify.<br />
* Stroke to path function.<br />
* Line scanning (used for flowing text into a shape).<br />
<br />
==P10. Font Selection Improvements ==<br />
* Estimation of difficulty: Medium - Short (175h)<br />
* Potential mentors: Tavmjong Bah, ??<br />
* Programming skills: C++<br />
* Prerequisites: Some knowledge of GTK.<br />
<u>Detailed Description</u><br />
Inkscape's ''Text toolbar'' and ''Text and Font dialog'' present the user with a long list of font family choices. Designers often have hundreds if not thousands of fonts on their system to choose from making the use of these lists difficult and time consuming (and generating font previews slows Inkscape down). This project is to add a ''Font Selection dialog'' where the user can create a list of "Document Fonts" (along with CSS fallbacks). Only these documents fonts will then be shown in the drop-down menus in the Inkscape's Text toolbar and Text and Font dialog. The ''Font Selection'' dialog should show the designer previews of all available fonts, provide "filtering" mechanisms, and allow easily moving fonts to and from the document font list. Interaction with Inkscape's ''UX'' team will be crucial. A bonus feature would be to allow the user to add @font-face rules (Inkscape has some support for these already but has no UX for them).<br />
<br />
==P11. Improvements to Paint Server Dialog ==<br />
<br />
* Estimation of difficulty: Easy to Medium - Short (175h)<br />
* Potential mentors: Tavmjong<br />
* Programming skills: C++<br />
* Prerequisites: Some knowledge of GTK and CSS.<br />
<u>Detailed Description</u><br />
The ''Paint Server Dialog'' allows a user to visually select a pattern or hatch to use in painting the ''fill'' or ''stroke'' of an object. This project would be to expand the dialog to cover gradients, meshes, and solid colors as well as make other improvements to the dialog. Interaction with the Inkscape's ''UX'' team will be required.<br />
<br />
==P12. Customizable Appearance of Canvas Controls ==<br />
[[File:Nodes.png|frame|alt=Screenshot of node handles|Node handles (Inkscape 1.2)]]<br />
* Estimation of difficulty: Medium - Short (175h)<br />
* Potential mentors: Rafał Siejakowski, ??<br />
* Programming skills: C, C++<br />
* Prerequisites: Some knowledge of CSS.<br />
<u>Detailed Description</u><br />
Interacting with path nodes and tangent handles (e.g., using the ''Node Tool'') is one of the core workflows in Inkscape (see screenshot).<br />
Unfortunately, the appearance of these on-canvas controls is currently very ugly (gray with black border, no support for outline)<br />
and hardcoded (except for size, which can be adjusted in the Preferences).<br />
The goal of this project is to make Inkscape read the styles of the node handles from an external CSS file shipped with Inkscape installations.<br />
This feature will enable UI designers to easily tweak the appearance of on-canvas controls using CSS and will in particular implement<br />
the [https://gitlab.com/inkscape/ux/-/issues/115 existing restyling proposal].<br />
It will also open up the road to potential future improvements: user-customizability, theming support, styling support for other UI elements.<br/><br />
<u>Technical details</u><br />
Inkscape already uses a library called <code>libcroco</code> for CSS parsing.<br />
The proposed mechanism will support only a small subset of CSS, suitable for styling the canvas controls.<br />
Their shape could be represented by <code>list-style-type</code> values of <code>disc</code>, <code>square</code> and string values <code>"diamond"</code>, etc.<br />
The feature should also support <code>background-color</code>, <code>border-color</code>, <code>border-width</code>, <code>outline-color</code>, <code>outline-width</code>, where the widths could be set as absolute dimensions in <code>px</code> or relative values (percentages).<br />
Hover, mousedown and selected states should also be specified, using CSS pseudo-classes such as <code>:hover</code>.<br />
If time permits, additional CSS properties (such as <code>mix-blend-mode</code>) and more node shapes could be added.<br />
A simple renderer for the on-canvas controls must be implemented, which will create cached bitmaps at the requested size, taking the styling information into account.<br />
<br />
== P13. Node-based filter editor ==<br />
<br />
*Estimation of difficulty: Hard - Long (350h)<br />
* Potential mentors: Mc<br />
* Programming skills: C++<br />
* Prerequisites: Minimal knowledge of build systems<br />
<br />
<u>Detailed Description:</u> The filter editor is kind of hard to understand and master based on its current UI. Using a node-based tool for it, such as what can be done with https://notabug.org/grindhold/libgtkflow would help people create and master the filter primitives easier.<br />
<br />
==Pxx. Your project ==<br />
* Estimation of difficulty: Variable - Short or Long (175h or 350h)<br />
* Potential mentors: Marc Jeanmougin<br />
* Programming skills: usually C++<br />
* Prerequisites: good ideas<br />
<br />
<u>Detailed Description</u><br />
The most successful GSoC we had in the past were students coming with their own past, use cases and ideas for Inkscape. Many basic tools like 3d cubes or connectors you can see in Inkscape now have been brought by brilliant people (like you) with ideas. If we think that your project fits with Inkscape (ie: has its place with a vector graphic editor), we can help you refining your ideas and help bring shiny new stuff to life!<br />
<br />
<u>Use cases</u><br />
* Amaze us!<br />
<br />
= Successful SOC Projects from Previous Years =<br />
* 2005<br />
** Connectors<br />
** Inkboard<br />
** [http://www.openclipart.org/ Open Clip Art Library (OCAL)] Interface<br />
** DXF Import / Export<br />
* [[Google Summer of Code 2006|2006]]<br />
** Support for SVG Filters<br />
** Filter Effects<br />
** PDF export<br />
** Inkboard Protocol Spec / Lib Conversion<br />
* [[Google Summer of Code 2007|2007]]<br />
** Text Style Improvements<br />
** PDF import<br />
** Live Path Effects<br />
** 3D Box Tool<br />
** UI for SVG Filter Effects<br />
** Raster Functionality<br />
** Importing from, and Exporting to, a remote ccHost instance<br />
* [[Google Summer of Code 2008|2008]]<br />
** SVG Fonts support<br />
** 2Geom refactoring project - port most geometry code to 2Geom<br />
** lib2geom: interactive applications showing off the power of lib2geom<br />
** Tech drawing abilities<br />
** A test suite<br />
* 2009<br />
** [[GSoC2009 Node Tool Rewrite|Node tool rewrite]]<br />
** D-Bus scripting API<br />
** Connector tool improvements<br />
** ICC/CMYK workflow<br />
* 2010<br />
** Cairo-based rendering<br />
** C++ification of SP Layer<br />
* 2011<br />
** Rendering caching<br />
** Javascript support improvements<br />
** CSS support improvements<br />
* 2012<br />
** Usibility Improvements for Guides<br />
** [[Tiling tool|On-canvas support for Tessellations]]<br />
** Creating python bindings for lib2geom<br />
* [[Google Summer of Code 2013|2013]]<br />
** Recolor Tool<br />
** Improved Units Support<br />
** Electronics CAD Support<br />
** New From Templates Dialog<br />
** New Raster to Vector Algorithm<br />
* 2014<br />
** Better Support for SVG Paints<br />
** Robust Boolean and Stroking Operations for 2Geom<br />
* 2016<br />
** [[GSoC 2016 Better data structure for selections|Better data structure for selections]]<br />
** [[Style Editor|CSS Style Sheet Editor]]<br />
* 2017<br />
** SVG 2 Text Support<br />
** Better CSS Style Sheet Support<br />
* 2019<br />
** Mesh gradient and hatches polyfills. Paint server dialog.<br />
* 2020<br />
** [https://gitlab.com/vanntile/inkscape-gsoc-2020 New dialog system.]<br />
** [https://gitlab.com/rathod-sahaab/gsoc-2020-inkscape Command palette dialog.]<br />
** Path operations.<br />
* 2021<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/3420 On canvas marker editing.]<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/3328 Verbs to Gio::Actions.]<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/3294 On canvas alignment snapping.]<br />
[[Category:Developer Documentation]]<br />
</div></div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Hackfest2023_Bensberg&diff=122051Hackfest2023 Bensberg2023-01-19T14:12:00Z<p>Mc: /* I want to attend! */</p>
<hr />
<div>[[Category:Hackfest]]<br />
<br />
This page '''<big>IS WORK IN PROGRESS</big>''' and details the planning of Inkscape's 2023 hackfest in Bensberg, Germany. The hackfest will take place on '''March 13-17, 2023'''. We are looking to bring together a group of '''10 attendees''', but do not let that number discourage you from throwing your hat in the ring in case we reach/go over it.<br />
<br />
This hackfest is a standalone event and not organized around any other event or FOSS conference.<br />
<br />
Previous events: [[Hackfest2019 Saarbrücken]], [[Hackfest2019 SCALE]], [[Hackfest2018 Kiel]], [[Hackfest2018 LGM]], [[Hackfest2018]], [[Hackfest2017]], [[Hackfest2016]], [[Hackfest2015]].<br />
=Description=<br />
It's a hackfest! We will work on Inkscape bugs, new features, packaging, website issues, ... in fact anything that can benefit from us being physically in the same space. And let's not forget about the social component - we get to hang and talk and laugh in person since we usually only meet virtually :).<br />
==Bensberg==<br />
Bensberg is part of Bergisch Gladbach, a city in the western part of Germany, about 15 km east of Cologne. It is beautifully located in the countryside, surrounded by lush forests slightly elevated to give a great view depending on weather conditions. The nearest airport is Cologne Bonn (CGN) which is an international airport. <br />
*[https://en.wikipedia.org/wiki/Bergisch_Gladbach Bergisch Gladbach on Wikipedia]<br />
[[File:Bensberg.png|none|thumb|Bensberg (range indicated to Cologne's Cathedral). Screenshot from Google Maps.]]<br />
<br />
==Venue==<br />
Our host is the [https://www.akademie-generali.de/en/home Generali Akademie], the dedicated education and conference center of the Generali Group in Germany (it's an insurance company). The location's special appeal is its all-inclusive package: conference rooms, hotel rooms and full catering service are conveniently provided on-site.<br />
<br />
''(full disclosure: as an employee, RdH has been there multiple times)''<br />
{| class="wikitable"<br />
|+<br />
!official address<br />
!for navigation systems<br />
|-<br />
|Generali Akademie<br />
Am Schloss 1-3<br />
<br />
51429 Bergisch-Gladbach<br />
<br />
Germany<br />
|Generali Akademie<br />
Jan-Wellem-Straße<br />
<br />
51429 Bergisch-Gladbach<br />
<br />
Germany<br />
|}<br />
<br />
===Catering===<br />
We have full catering on-site, i.e. breakfast, lunch and dinner including non-alcoholic drinks. Our meeting room also comes with coffee and beverages throughout the day.<br />
===Facilities===<br />
*Wireless networking (fast broadband), powered by [https://www.m3connect.de/ m3connect]<br />
* <u>No wired network available</u><br />
*Europlug type F<br />
** we should bring some power strips<br />
*(TODO - not sure if we have that) LCD projector<br />
*flip chart<br />
*(TODO add additional info e.g. pool)<br />
=== Vicinity===<br />
tbd (we're not in a city, we're in the country)<br />
<br />
===Travel information===<br />
tbd<br />
<br />
===Cost calculation===<br />
The fee per attendee is 837 € and is due on the last day of the event, payable via debit or credit card (VISA, Mastercard). A billing address needs to be provided in advance.<syntaxhighlight lang="text"><br />
hotel room incl. breakfast 127 € x 4 days = 508 €<br />
catering service (days 1-4) 70 € x 4 days = 280 €<br />
catering service (day 5) 49 € x 1 day = 49 €<br />
-------------------------------------------- 837 €<br />
</syntaxhighlight>One attendee (RdH) needs to pay the additional fee for the meeting room.<syntaxhighlight lang="text"><br />
meeting room (days 1-5) 180 € x 5 days = 900 €<br />
</syntaxhighlight><br />
<br />
==Hotels==<br />
Hotel rooms are provided on-site and are part of our conference package, no dedicated booking necessary.<br />
<br />
=Attendance =<br />
<br />
*Hackfest Bensberg 2023 takes place on '''March 13-17, 2023'''<br />
*deadline to apply for attendance is '''February 01, 2023'''<br />
<br />
== preface==<br />
In an initial poll, 8 people expressed their interest/availability for this hackfest. Based on this number we are planning for 10 attendees. Should more people be interested, we'll try our best to expand - the earlier we know, the better! If we don't reach 10, we will try to scale down our booking. If you are interested, don't hold yourself back!<br />
<br />
==I want to attend!==<br />
That's great! Be aware of the following: <br />
<br />
*You are making a commitment here which will produce expenses for the project. Please make sure that you will be able to honor this commitment! ''(Are you table to take the week off from your day job? Are you able to travel? etc.)''<br />
* Every attendee will have to pay their fee of 837 € on the last day of the hackfest. There is something special about payment methods that we will have to talk about privately, I'll contact everyone. ''(After the hackfest you can follow the reimbursement procedure.)''<br />
*You are eligible to apply no matter if you participated in the initial poll/"call for interest". ''(Only in case we end up being seriously overbooked and cannot accommodate for everybody we will take the initial poll into account.)''<br />
<br />
Now go ahead and add yourself to this table (or ask in [https://gitlab.com/inkscape/inbox/-/issues/8109 this issue] and it will be done for you):<br />
{| class="wikitable"<br />
|+<br />
!Name<br />
!GitLab handle<br />
|-<br />
|Martin Owens<br />
|@doctormo<br />
|-<br />
|Jonathan Neuhauser<br />
|@joneuhauser<br />
|-<br />
|Tavmjong Bah<br />
|@Tavmjong<br />
|-<br />
|Marc Jeanmougin<br />
|@marcjeanmougin<br />
|-<br />
|5<br />
|<br />
|-<br />
|6<br />
|<br />
|-<br />
|7<br />
|<br />
|-<br />
|8<br />
|<br />
|-<br />
|9<br />
|<br />
|-<br />
|10<br />
|<br />
|}</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Google_Summer_of_Code&diff=120959Google Summer of Code2022-02-25T07:51:23Z<p>Mc: add times</p>
<hr />
<div><div style="max-width:70em; margin-left: auto; margin-right: auto"><br />
= Welcome to Inkscape! =<br />
<br />
For quite a few years Inkscape has been successfully participating in [http://code.google.com/soc/ Google Summer of Code].<br />
<br />
'''New this year!''' Google is opening up the program to new-comers to Open Source who are 18 years are older. Projects can be medium size (~175 hours) or large size (~350 hours). Finish times are flexible, 12 to 22 weeks (with agreement of mentor).<br />
<br />
GSoC is a program where Google funds the development of specific features in open source software by university students and other new to open source. You don't need to be a Computer Science student to apply. Features to be developed are picked by Inkscape administrators from the pool of proposals submitted by applicants.<br />
<br />
We've mentored about half a dozen students a year since GSoC started. Many students enjoyed their work and continue to be involved; perhaps your mentor will be a past GSoC student! We have a high rate of acceptance of student code into the core codebase. Indeed, GSoC projects have been a key source of some of Inkscape's best features in the past several releases.<br />
<br />
If you are interested in joining us this summer, it is time to get your proposal ready. You can choose a proposal from our list of suggestions or come up with one of your own. In either either case, you '''must''' give us a detailed outline of what you plan to do. It is '''highly''' recommended that you discuss your idea as early as possible with Inkscape developers. They not only can give you guidance as you flesh out your proposal but ultimately you must convince them that you can do the work planned in the time allotted. '''If you have not discussed your proposal with Inkscape developers before you apply, your application will be rejected!'''<br />
<br />
= Candidate Applications =<br />
<br />
* Google program information:<br />
** [https://summerofcode.withgoogle.com/ Home page].<br />
** Summer of Code Application form. Applications open at 18:00 UTC on April 4th 2022.<br />
<br />
* Inkscape-specific information:<br />
** [[SOC Application Template]].<br />
** [[Roadmap | Inkscape Roadmap]] - to see our overall objectives.<br />
** [[Projects | Inkscape Development Project Ideas]] - broader list of development ideas.<br />
** [[SOC Writing Project Proposals]] - some guidelines for proposals.<br />
** [[SOC Selection Criteria]] - how we rate applications.<br />
<br />
'''Candidate Applications for GSoC 2022 must be submitted to the GSoC site by 18:00 UTC on April 19th 2022.'''<br />
<br />
= The "two patches" rule =<br />
<br />
We require two patches from each potential GSoC student, before accepting the student for GSoC participation (it is the same requirement as for obtaining rights to commit changes to the code repository).<br />
<br />
The reason for this requirement is that you can show us that you have succeeded in building Inkscape on your PC, and that you have understood a little piece of Inkscape's code and are able to improve it. <br />
Inkscape is a large project, and you really should not try to understand all the code. Many (all?) developers know only parts of the program code!<br />
You can join our [https://inkscape.org/community/discussion/ IRC] channel or [https://chat.inkscape.org/channel/team_devel Rocket Chat] and ask developers for help.<br />
<br />
== Suggested "easy" bug fixes or improvements ==<br />
<br />
To get you started on Inkscape development, you can find (probably) easy-to-fix bugs or small improvements that require very little knowledge of the whole program by searching our [https://gitlab.com/inkscape/inkscape/issues/ bug-tracker] for bugs tagged with 'easy-fix'.<br />
<br />
= Performance Evaluation =<br />
<br />
GSoC has two formal evaluation points, at the ''mid-term'' and at the end. These evaluations determine if you receive the stipend from Google. In order to receive a pass for the evaluations you will need to show adequate progress toward your project's goals.<br />
<br />
To help you meet your goals and so that your mentor can better evaluate your progress you need to:<br />
<br />
* Have frequent, public discussions of your progress. (Don't rely on just your mentor for advice.)<br />
* Have a public Inkscape branch for your code to which you commit regularly.<br />
* Give weekly status reports.<br />
<br />
For the final pass, you will normally be required to merge your code into Inkscape trunk.<br />
<br />
Remember: ''we want you to succeed!''<br />
<br />
= Suggested Project Ideas =<br />
<br />
The following is a list of formal project suggestions, but do not feel limited to only these - some of our best contributions have been unique ideas that students had in mind from other sources!<br />
<br />
See also [[Development Project Ideas]], [[Refactoring projects]], [[Projects]], and https://blueprints.launchpad.net/inkscape/<br />
<br />
==P1. Better CSS Style Sheet Support==<br />
<br />
Enhance Inkscape's support for CSS style sheets.<br />
<br />
* Estimation of difficulty: Moderately hard - Long (350h)<br />
* Potential mentors: Tavmjong Bah<br />
* Programming skills needed: C++<br />
* Prerequisites: Experience with CSS style sheets.<br />
<br />
<u>Detailed Description</u><br />
<br />
Inkscape has basic support for CSS style sheets that can read and parse internal style sheets. A 2016 GSoC project added a simple style dialog that can create and modify the internal style sheet. The dialog is very limited and is not intuitive to use. A 2017 GSoC project added support for CSS 3 selectors. More work has been done recently, creating the ''Selectors and CSS'' dialog... This project will extend the usefulness of that dialog by making it more user friendly and by extending its functionality.<br />
<br />
<u>Use Cases</u><br />
<br />
* Support externally created SVGs.<br />
* Producing better SVGs for the Web.<br />
* Changing style on multiple objects at once (palettes).<br />
<br />
<u>Related Material</u><br />
<br />
* [https://www.w3.org/TR/CSS2/ CSS 2 Specification]<br />
* [https://www.w3.org/TR/css-2015/ CSS 2015 Snapshot]<br />
<br />
==P5. UI-Free Inkscape ==<br />
<br />
* Estimation of difficulty: Difficult - Long (350h)<br />
* Potential mentors: Marc Jeanmougin<br />
* Programming skills: C++, CMake<br />
* Prerequisites: Minimal knowledge of build systems. Experience with GtkMM helpful.<br />
<br />
<u>Detailed Description</u><br />
Inkscape currently builds with X11 and gtk and a lot of graphical dependencies. But since it is allowed to run in commandline, and there are controlled environments (servers) that use it to convert svg to png and to perform actions, there should be no need to force it to build with those. The main goal of this project is to add a WITH_GUI compilation flag that when OFF, does *not* link Inkscape with any graphical dependency. While much work has been done towards this goal, much remains to be done. DONE <s>As a next step, Inkscape's "verbs" which are mostly GUI dependent (even if there is no reason to be) need to be converted to Gio::Actions.</s> More work needs to be done to separate out hidden GUI dependencies that remain after the Verb to Action transition.<br />
<br />
<u>Use cases</u><br />
* Server installs, scripts<br />
<br />
==P6. Refactoring==<br />
* Estimation of difficulty: Moderate - Short or Long depending on scope (175h or 350h)<br />
* Potential mentors: Tavmjong Bah<br />
* Programming skills: C++<br />
* Prerequisites: proficient C++.<br />
<br />
<u>Detailed Description</u><br />
Inkscape began life as the C program Sodipodi. Sodipodi was mostly the work of one person who had a clear vision of how the code should work. A major motivation of the Inkscape fork was to allow others to easily contribute to development. This resulted in rapid development but at a cost: the code has become much messier and now lacks a clear vision. This project is to work on refactoring the code. Refactoring can take many forms. It could be creating a better directory structure with README's that describe the purpose and function of the code in each directory. This would include rewriting code to reduce dependencies across directories (which would help, for example, in achieving a headless version of Inkscape). It could be the continued transition from C to C++ which often results in major reductions in the number of code lines. Or it could be identifying and eliminating redundant code. Refactoring is an important skill of which many books have been written. Here's a chance to gain valuable experience!<br />
<br />
See https://wiki.inkscape.org/wiki/index.php/Refactoring_projects for some ideas of projects.<br />
<br />
==P7. Tesseract OCR==<br />
<br />
* Estimation of difficulty: Easy - Short (175h)<br />
* Potential mentors: unknown<br />
* Programming skills: C / C++, AI<br />
* Prerequisites: unknown<br />
<br />
<u>Detailed Description</u><br />
The Tesseract OCR library available here https://github.com/tesseract-ocr/tesseract gives the ability to detect text, lines, and other shapes within a document. This type of vectorisation is currently missing from Inkscape. Plenty of other open source and proprietary tools have made use of this library.<br />
<br />
<u>Use cases</u><br />
* User interface design, converting screenshots<br />
<br />
==P8. Add Text and Image Support to Live Path Effect System ==<br />
* Estimation of difficulty: Hard - Short (175h)<br />
* Potential mentors: Jabier Arraiza (Spanish, English(not native))<br />
* Programming skills: C++<br />
* Prerequisites: Experience managing bitmaps<br />
<u>Detailed Description</u><br />
Live Path Effects are non destructive effects applied to paths and shapes standalone or inside a group.<br /> <br />
This is done keepeng a reference to the original data to reaply when needed.<br /><br />
But ignore text and image elements.<br /><br />
Things to do:<br />
* Study add image, text, both and maybe others SVG elements to the LPE system.<br />
* Create/adapt minimun one LPE for each new type of element acepted as reference. Suggestion Perspective-Envelope.<br />
<u>Use cases</u><br />
* Apply live effects to images and text based in C++ code in a non destructive way even in groups with mixed elements types.<br />
<br />
==P9. Path Library Improvements ==<br />
* Estimation of difficulty: Hard - Long (350h)<br />
* Potential mentors: Tavmjong Bah, KK<br />
* Programming skills: C++<br />
* Prerequisites: Strong math skills, specifically in geometry.<br />
<u>Detailed Description</u><br />
Inkscape relies on two geometry libraries for path manipulations: lib2geom and livarot. lib2geom is a generic modern library written specifically with Inkscape in mind. lib2geom is missing some functionality that Inkscape requires and that is found in livarot. This project is to move that functionality into lib2geom (or into separate files) using lib2geom path descriptions. A 2020 GSoC student did a significant amount of work understanding and documenting the issues involved. This project would be to build on his work.<br />
<br />
Specifically, the functionality needed is<br />
* Path offset/inset functions.<br />
* Path simplify.<br />
* Stroke to path function.<br />
* Line scanning (used for flowing text into a shape).<br />
<br />
==P10. Font Selection Improvements ==<br />
* Estimation of difficulty: Medium - Short (175h)<br />
* Potential mentors: Tavmjong Bah, ??<br />
* Programming skills: C++<br />
* Prerequisites: Some knowledge of GTK.<br />
<u>Detailed Description</u><br />
Inkscape's ''Text toolbar'' and ''Text and Font dialog'' present the user with a long list of font family choices. Designers often have hundreds if not thousands of fonts on their system to choose from making the use of these lists difficult and time consuming (and generating font previews slows Inkscape down). This project is to add a ''Font Selection dialog'' where the user can create a list of "Document Fonts" (along with CSS fallbacks). Only these documents fonts will then be shown in the drop-down menus in the Inkscape's Text toolbar and Text and Font dialog. The ''Font Selection'' dialog should show the designer previews of all available fonts, provide "filtering" mechanisms, and allow easily moving fonts to and from the document font list. Interaction with Inkscape's ''UX'' team will be crucial. A bonus feature would be to allow the user to add @font-face rules (Inkscape has some support for these already but has no UX for them).<br />
<br />
==P11. Improvements to Paint Server Dialog ==<br />
<br />
* Estimation of difficulty: Easy to Medium - Short (175h)<br />
* Potential mentors: Tavmjong<br />
* Programming skills: C++<br />
* Prerequisites: Some knowledge of GTK and CSS.<br />
<u>Detailed Description</u><br />
The ''Paint Server Dialog'' allows a user to visually select a pattern or hatch to use in painting the ''fill'' or ''stroke'' of an object. This project would be to expand the dialog to cover gradients, meshes, and solid colors as well as make other improvements to the dialog. Interaction with the Inkscape's ''UX'' team will be required.<br />
<br />
==Pxx. Your project ==<br />
* Estimation of difficulty: Variable - Short or Long (175h or 350h)<br />
* Potential mentors: Marc Jeanmougin<br />
* Programming skills: usually C++<br />
* Prerequisites: good ideas<br />
<br />
<u>Detailed Description</u><br />
The most successful GSoC we had in the past were students coming with their own past, use cases and ideas for Inkscape. Many basic tools like 3d cubes or connectors you can see in Inkscape now have been brought by brilliant people (like you) with ideas. If we think that your project fits with Inkscape (ie: has its place with a vector graphic editor), we can help you refining your ideas and help bring shiny new stuff to life!<br />
<br />
<u>Use cases</u><br />
* Amaze us!<br />
<br />
= Successful SOC Projects from Previous Years =<br />
* 2005<br />
** Connectors<br />
** Inkboard<br />
** [http://www.openclipart.org/ Open Clip Art Library (OCAL)] Interface<br />
** DXF Import / Export<br />
* [[Google Summer of Code 2006|2006]]<br />
** Support for SVG Filters<br />
** Filter Effects<br />
** PDF export<br />
** Inkboard Protocol Spec / Lib Conversion<br />
* [[Google Summer of Code 2007|2007]]<br />
** Text Style Improvements<br />
** PDF import<br />
** Live Path Effects<br />
** 3D Box Tool<br />
** UI for SVG Filter Effects<br />
** Raster Functionality<br />
** Importing from, and Exporting to, a remote ccHost instance<br />
* [[Google Summer of Code 2008|2008]]<br />
** SVG Fonts support<br />
** 2Geom refactoring project - port most geometry code to 2Geom<br />
** lib2geom: interactive applications showing off the power of lib2geom<br />
** Tech drawing abilities<br />
** A test suite<br />
* 2009<br />
** [[GSoC2009 Node Tool Rewrite|Node tool rewrite]]<br />
** D-Bus scripting API<br />
** Connector tool improvements<br />
** ICC/CMYK workflow<br />
* 2010<br />
** Cairo-based rendering<br />
** C++ification of SP Layer<br />
* 2011<br />
** Rendering caching<br />
** Javascript support improvements<br />
** CSS support improvements<br />
* 2012<br />
** Usibility Improvements for Guides<br />
** [[Tiling tool|On-canvas support for Tessellations]]<br />
** Creating python bindings for lib2geom<br />
* [[Google Summer of Code 2013|2013]]<br />
** Recolor Tool<br />
** Improved Units Support<br />
** Electronics CAD Support<br />
** New From Templates Dialog<br />
** New Raster to Vector Algorithm<br />
* 2014<br />
** Better Support for SVG Paints<br />
** Robust Boolean and Stroking Operations for 2Geom<br />
* 2016<br />
** [[GSoC 2016 Better data structure for selections|Better data structure for selections]]<br />
** [[Style Editor|CSS Style Sheet Editor]]<br />
* 2017<br />
** SVG 2 Text Support<br />
** Better CSS Style Sheet Support<br />
* 2019<br />
** Mesh gradient and hatches polyfills. Paint server dialog.<br />
* 2020<br />
** [https://gitlab.com/vanntile/inkscape-gsoc-2020 New dialog system.]<br />
** [https://gitlab.com/rathod-sahaab/gsoc-2020-inkscape Command palette dialog.]<br />
** Path operations.<br />
* 2021<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/3420 On canvas marker editing.]<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/3328 Verbs to Gio::Actions.]<br />
** [https://gitlab.com/inkscape/inkscape/-/merge_requests/3294 On canvas alignment snapping.]<br />
[[Category:Developer Documentation]]<br />
</div></div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Release_notes/1.0.2&diff=119650Release notes/1.0.22021-05-09T16:50:51Z<p>Mc: </p>
<hr />
<div><languages /><br />
<br />
<!--<br />
{{Box| These Release Notes are in Draft Status.<br />
<br />
Important Links:<br />
* [https://gitlab.com/inkscape/inkscape/commits/1.0.x Commit History Main Program (continue after: Jan 6, 2021])<br />
* [https://gitlab.com/inkscape/extensions/-/commits/1.0.x/ Commit History Extensions (continue after Oct 18, 2020, after 6b1f9a09)]<br />
* [https://gitlab.com/inkscape/inkscape-docs/documentation/-/tree/1.0.x Commit History Documentation (starting: Sept. 6 2020, after d40b3cfa)]<br />
}}<br />
<br />
{{Box| Pending questions:<br />
<br />
* https://gitlab.com/inkscape/inkscape/-/commit/573c5005cada4d9fa3f5605562bed45bb38704f6#note_446696559<br />
}}<br />
--><br />
<br />
<br />
<translate><br />
<br />
<br />
== About this release == <!--T:78--><br />
<br />
<!--T:79--><br />
<!--'''Definitely not released yet.'''--><br />
'''Released on January 17, 2021'''<br />
<br />
<!--T:80--><br />
Inkscape 1.0.2 is mainly a stability and bugfix release.<br />
<br />
== New Features == <!--T:81--><br />
<br />
<!--T:82--><br />
* Zooming by '''<kbd>middle mouse button click</kbd>''' (pressing scroll wheel) can now be deactivated in <code>Edit → Preferences → Behavior → Steps: Zoom with middle mouse click</code> ([https://gitlab.com/inkscape/inkscape/-/commit/1867368bb3c07e8add379a4f971f113e3429847c Commit 186736])<br />
* Canvas rotation by '''<kbd>Ctrl + middle mouse drag</kbd>''' / '''<kbd>Ctrl + Shift + Scroll</kbd>''' can be prevented in two ways:<br />
** temporarily for the current document from <code>View → Canvas Orientation → Lock Rotation</code> ([https://gitlab.com/inkscape/inkscape/-/commit/5eb7c56ef2a3385cdc0af37dd05fd0b1588ea381 Commit 5eb7c5])<br />
** for all new Inkscape windows in <code>Edit → Preferences → Interface: Lock canvas rotation</code> by default ([https://gitlab.com/inkscape/inkscape/-/commit/e8c10dccda0bc53d444883fea825d907625e60b5 Commit e8c10d])<br />
<br />
<!--T:83--><br />
<gallery mode="packed" heights=380px><br />
File:Steps- Zoom with middle mouse .png|Zoom with middle mouse click option in the Preferences<br />
File:Lock rotation.png|Option to lock the rotation for new documents in the Preferences<br />
</gallery><br />
<br />
== Bug fixes == <!--T:84--><br />
<br />
=== General === <!--T:85--><br />
<br />
<!--T:86--><br />
* '''Copy-Paste''': <br />
** A long-standing, very annoying bug where, when copying an object to the clipboard while also running certain other programs on Linux desktops (mainly clipboard managers), caused multiple export extension dialogs to open, has been fixed, so '''you can now again use your favorite clipboard manager''' while also using Inkscape ([https://gitlab.com/inkscape/inkscape/-/commit/fe7c68ecd6142c5e8302200aeab87b9ca69e5a86 Commit fe7c68], [https://gitlab.com/inkscape/inkscape/-/issues/575 Bug #575])<br />
** When copy-pasting some items along with their originals/frames/paths (clones, text-on-path, text-in-a-shape, linked offsets), they are '''no longer displaced''' in relation to the pasted original ([https://gitlab.com/inkscape/inkscape/-/commit/b93f2108474c5a221fb53f9ee10046b52cf7bca3 Commit b93f21], [https://gitlab.com/inkscape/inkscape/-/issues/853 Bug #853])<br />
* '''Stroke to Path''': Converting an object's stroke to a path '''no longer makes its clones vanish''' ([https://gitlab.com/inkscape/inkscape/-/issues/1120 Bug #1120])<br />
* '''Performance''': Improved rendering performance when '''zooming through multiple zoom levels''' ([https://gitlab.com/inkscape/inkscape/-/commit/28e21ec9414d1c06daf373d81f873c5fdf504d2a Commit 28e21e])<br />
* '''CSS''': CSS classes that start with a letter that isn't part of the ASCII set are '''no longer ignored''' ([https://gitlab.com/inkscape/inkscape/-/issues/1094 Bug #1094])<br />
* '''Cleanup''': An outdated link that pointed to a potentially offensive website now has been '''removed''' from a branding document ([https://gitlab.com/inkscape/inkscape/-/commit/88efa4ca78abf61255f95cce0e4d6cda5db53beb Commit 88efa4])<br />
* '''User interface''': Random actions should '''no longer cause sudden scaling''' of the canvas ([https://gitlab.com/inkscape/inkscape/-/commit/49fc369ceb5a2f9093459d815ea45b364edc6a60 Commit 49fc36])<br />
* '''Markers''': When adding a marker to a line, it can now be '''removed with a single Undo action''' again (not two) ([https://gitlab.com/inkscape/inkscape/-/commit/179fe94779e6087a2aaf4f95fcaaff80b611a1ba Commit 179fe9], [https://gitlab.com/inkscape/inkscape/-/issues/2130 Bug #2130])<br />
<br />
=== macOS === <!--T:87--><br />
<br />
<!--T:88--><br />
* '''Performance''': Packaging has been updated for macOS, which '''removes a performance regression''' in Inkscape 1.0.1 ([https://gitlab.com/inkscape/inkscape/-/commit/64328615f6d54b5e71efa9a3db147848b4b5e89a Commit 643286])<br />
* '''Icons''': File system '''icons look correct''' again now ([https://gitlab.com/inkscape/inkscape/-/commit/64328615f6d54b5e71efa9a3db147848b4b5e89a Commit 643286], [https://gitlab.com/inkscape/inkscape/-/issues/1893 Bug #1893])<br />
* '''Export''': PDF export '''no longer produces unprintable PDF files''' ([https://gitlab.com/inkscape/inkscape/-/issues/827 Bug #827], [https://gitlab.com/inkscape/inkscape/-/commit/64328615f6d54b5e71efa9a3db147848b4b5e89a Commit 643286])<br />
<br />
=== Circle Tool === <!--T:89--><br />
<br />
<!--T:90--><br />
* '''Arcs''' from Inkscape files created with versions older than 1.0 are no longer rendered as slices ([https://gitlab.com/inkscape/inkscape/-/issues/1900 Bug #1900])<br />
* When '''dragging on an ellipse's handles''' inside the ellipse to create an arc, Inkscape no longer renders it as a closed slice ([https://gitlab.com/inkscape/inkscape/-/commit/def938f714ee6683687ff5e6c36210b38faed277 Commit def938])<br />
<br />
=== Eraser Tool === <!--T:91--><br />
<br />
<!--T:92--><br />
* A long-standing issue with the Eraser tool '''painting red lines instead of erasing''' as soon as the user has interacted with a menu or dialog or another user interface element has been fixed ([https://gitlab.com/inkscape/inkscape/-/issues/2068 Bug #2068], [https://gitlab.com/inkscape/inkscape/-/commit/2057bf4baa8c538c5dbe0224603a1df24ab49173 Commit 2057bf])<br />
<br />
=== Live Path Effects === <!--T:93--><br />
<br />
<!--T:94--><br />
* Fixed some '''issues with linked LPE item transforms''' ([https://gitlab.com/inkscape/inkscape/-/commit/546b645c305cd313356b35f400efd653cc769c56 Commit 546b64], [https://gitlab.com/inkscape/inkscape/-/commit/e3cad6e10551fb75ecf44418a7af36ff17d43455 Commit e3cad6])<br />
<br />
=== Mesh Gradient tool === <!--T:95--><br />
<br />
<!--T:96--><br />
* Objects with a mesh gradient now '''keep their fill when copied to a different document''' ([https://gitlab.com/inkscape/inkscape/-/issues/579 Bug #579])<br />
<br />
=== Filter Editor dialog === <!--T:97--><br />
<br />
<!--T:98--><br />
* The dialog elements are '''readable now when using a dark theme''' ([https://gitlab.com/inkscape/inkscape/-/issues/885 Bug #885])<br />
<br />
=== Objects dialog === <!--T:99--><br />
<br />
<!--T:100--><br />
* The '''search''' function in the 'Objects' dialog '''shows results''' again ([https://gitlab.com/inkscape/inkscape/-/issues/1736 Bug #1736])<br />
<br />
=== Selectors and CSS dialog === <!--T:101--><br />
<br />
<!--T:102--><br />
* In addition to multiple crash fixes (see below), the dialog now correctly recognizes '''style tags inside the documents defs section''' ([https://gitlab.com/inkscape/inkscape/-/commit/12f4d6473f329be60a84171b1ef3249f86cb312b Commit 12f4d6], [https://gitlab.com/inkscape/inkscape/-/issues/905 Bug #905])<br />
<br />
=== Text === <!--T:103--><br />
<br />
<!--T:104--><br />
* A series of related '''bugs with text objects''' was fixed ([https://gitlab.com/inkscape/inkscape/-/merge_requests/2434 MR #2434]).<br/>All of the affected actions required a text object to behave like a path, but it behaved like a group, and the action failed. This series of bugs mostly affected new users who were following tutorials which did not work as expected.<br/>Specifically, the following actions now work again:<br />
** A text object unioned with itself results in a '''single path''' again.<br />
** Text objects can again be '''used with other objects in all Boolean operations'''.<br />
** Text objects can again be '''inset and outset'''.<br />
** Text objects can again be used to create a '''Dynamic Offset or a Linked Offset'''.<br />
* The '''font preview''' sample now contains the '''correct currency symbols €¢''' (instead of \342\202\254\302\242). One needs to reset the preferences to see the updated font sample text ([https://gitlab.com/inkscape/inkscape/-/merge_requests/2547 MR #2547]).<br />
* '''Custom font folders''' are found now and taken into account, even when the installed Pango version is newer than 1.44.7 ([https://gitlab.com/inkscape/inkscape/-/issues/1977 Bug #1977], [https://gitlab.com/inkscape/inkscape/-/commit/1771fab7bdf339f50d5e0ffabc2abfa691aa856b Commit 1771fa])<br />
<br />
== Crash fixes == <!--T:105--><br />
<br />
<!--T:106--><br />
A variety of crashes have been fixed for this current bugfix release.<br />
<br />
<!--T:107--><br />
Specifically, we fixed a crash &hellip;<br />
* &hellip; when drawing with the '''Calligraphy tool''' inside a group with the 'Rotate copies' live path effect (and possibly when adding items to groups with a different path effect applied to them) ([https://gitlab.com/inkscape/inkscape/-/commit/b62cd93859f9fb7853aa7fdd41aef90fc04f461d Commit b62cd9], [https://gitlab.com/inkscape/inkscape/-/merge_requests/2386 MR #2386])<br />
* &hellip; when '''duplicating a text''' that had lost the frame it was flowed in ([https://gitlab.com/inkscape/inkscape/-/issues/1919 Bug #1919])<br />
* &hellip; that happened randomly when using '''undo / redo''' ([https://gitlab.com/inkscape/inkscape/-/commit/3cb09a5c9721172db756aab0830f84534cfb433a Commit 3cb09a])<br />
* &hellip; when '''importing an SVGZ file by drag-and-drop''' ([https://gitlab.com/inkscape/inkscape/-/commit/b8e782258bf6c8995ab2b4b04ac617b6c157a0a8 Commit b8e782], [https://gitlab.com/inkscape/inkscape/-/issues/906 Bug #906])<br />
* &hellip; that occurred sporadically when '''closing Inkscape''' ([https://gitlab.com/inkscape/inbox/-/issues/1918 Bug #1918], [https://gitlab.com/inkscape/inkscape/-/commit/275d152af7fd89139869d5f2f692c447a9e98cf0 Commit 275d15])<br />
* &hellip; when '''popping an object out of its current group''' ([https://gitlab.com/inkscape/inkscape/-/commit/a803b14e580cdac23245904f3166459e4acd56fb Commit a803b1], [https://gitlab.com/inkscape/inkscape/-/issues/1770 Bug #1770])<br />
* &hellip; or, actually, multiple different crashes occuring with the '''Selectors and CSS dialog''' on Redo, Undo and Clone actions, as well as on closing the document and when having a duplicate window open ([https://gitlab.com/inkscape/inkscape/-/commit/12f4d6473f329be60a84171b1ef3249f86cb312b Commit 12f4d6], Bugs [https://gitlab.com/inkscape/inkscape/-/issues/142 #142], [https://gitlab.com/inkscape/inkscape/-/issues/828 #828], [https://gitlab.com/inkscape/inkscape/-/issues/1168 #1168], [https://gitlab.com/inkscape/inkscape/-/issues/1157 #1157], [https://gitlab.com/inkscape/inkscape/-/issues/688 #688])<br />
* &hellip; with the '''Clone LPE''' ([https://gitlab.com/inkscape/inkscape/-/commit/e3cad6e10551fb75ecf44418a7af36ff17d43455 Commit e3cad6])<br />
* &hellip; when trying to '''export to PDF when there are markers included''' in the document whose color is defined by context-stroke (like Inkscape stock markers) ([https://gitlab.com/inkscape/inkscape/-/issues/1984 Bug #1984], [https://gitlab.com/inkscape/inkscape/-/commit/9b5de7815fcd93c2801c7fb8703491125ef906b5 Commit 9b5de7])<br />
* &hellip; / a freeze that occured '''when importing a PDF file with many icc color spaces defined''' ([https://gitlab.com/inkscape/inkscape/-/issues/1878 Bug #1878], [https://gitlab.com/inkscape/inkscape/-/commit/5c1048983e4e44e8b00f52c48d0f35782f74336c Commit 5c1048])<br />
* &hellip; when trying to import a PDF file with Poppler version 21.0.1 ([https://gitlab.com/inkscape/inkscape/-/commit/c30ae8943c6c724862c59c25b7d040256a2aceab Commit c30ae8], [https://gitlab.com/inkscape/inkscape/-/issues/2180 Bug #2180])<br />
* &hellip; when starting Inkscape compiled with [https://en.wikipedia.org/wiki/Musl musl] instead of glibc (affecting certain Linux distributions e.g. VoidLinux, Alpine, Gentoo) ([https://gitlab.com/inkscape/inkscape/-/commit/a32669771381bf3b940b83001e0cfb0d77d36d27 Commit #a32669], [https://gitlab.com/inkscape/inkscape/-/issues/2147 Bug #2147])<br />
<br />
== Extension bug fixes == <!--T:108--><br />
<br />
=== Specific extensions === <!--T:109--><br />
<br />
<!--T:110--><br />
* A few '''label texts''' were improved in the new '''"Scribus PDF Export"''' extension ([https://gitlab.com/inkscape/extensions/-/merge_requests/226 MR #226])<br />
* The '''preview''' works again for the '''"Interpolate"''' extension ([https://gitlab.com/inkscape/extensions/-/issues/303 Bug #303])<br />
<br />
=== Extension failure fixes === <!--T:111--><br />
<br />
<!--T:112--><br />
* '''"Change case"''' extension works again ([https://gitlab.com/inkscape/extensions/-/issues/302 Bug #302])<br />
* '''"Interpolate attribute in a group"''' extension works again ([https://gitlab.com/inkscape/extensions/-/issues/310 Bug #310])<br />
<br />
== Translations == <!--T:113--><br />
<br />
<!--T:114--><br />
<!-- The following '''user interface translations''' received updates:<br />
<br />
<!--T:115--><br />
* language<br />
<br />
<!--T:116--><br />
The following '''documentation''' translations received updates:<br />
<br />
<!--T:117--><br />
* language --><br />
<br />
=== Contributing to translations === <!--T:118--><br />
<br />
<!--T:119--><br />
Want to help with translations? [https://inkscape.org/contribute/translations/ Learn how to help!]<br />
<br />
== Documentation == <!--T:120--><br />
<br />
<!--T:121--><br />
<!-- * Update 1 --><br />
<br />
=== Contributing to documentation and documentation translation === <!--T:77--><br />
<br />
<!--T:122--><br />
Contributions to the documentation translations, as well as improvements to its contents, are welcome at [https://gitlab.com/inkscape/inkscape-docs/documentation the inkscape-docs repository].<br />
<br />
== Known issues == <!--T:123--><br />
<br />
<!--T:124--><br />
* Generate from Path extensions not working on Windows ([https://gitlab.com/inkscape/inkscape/-/issues/2187 Bug #2187])<br />
* Crash when using the Node tool while adding the Corners LPE ([https://gitlab.com/inkscape/inkscape/-/issues/1940 Bug #1940])<br />
<br />
== Other releases ==<br />
<br />
{{:Release notes}}<br />
<br />
</translate></div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Compiling_Inkscape&diff=119215Compiling Inkscape2021-01-17T20:23:50Z<p>Mc: --recurse-submodules</p>
<hr />
<div><mark>Hopefully, Inkscape will compile right out of the box, according to the 'Getting Started' instructions on https://inkscape.org/develop/getting-started/ . If it doesn't, well that's what this page is for. </mark><br />
<br />
<br />
<mark> '''If you've come here without reading the Getting Started page, [https://inkscape.org/develop/getting-started/ please do so first], as it mentions some important things that this page does not.'''<br />
</mark><br />
<br />
<br />
Jot down notes, questions, findings, tips, etc. here on things you run into. It's a good idea to make mention of what version of the code you're trying to compile, the distribution you're running, and other such information that might be pertinent.<br />
<br />
If legitimate bugs are found or patches developed, please move them to the [https://inkscape.org/contribute/report-bugs/ tracker] rather than inlining them here. <br />
<br />
== Notes ==<br />
<br />
Please use CMake instead of Automake for Inkscape 0.92 onwards.<br />
<br />
CMake is a crossplatform makefile generator similar to autotools. It tests dependencies and creates makefiles to be used with make.<br />
<br />
Please see the [[CMake]] wiki page.<br />
<br />
== OS & Distribution Specific ==<br />
<br />
* '''Linux'''<br />
** [[CompilingUbuntu|Ubuntu]]<br />
** [[CompilingSlackware|Slackware]]<br />
* [[CompilingMacOsX|Mac OS X]]<br />
* [[Compiling Inkscape on Windows|Windows]]<br />
* [[Compiling Inkscape on Chrome OS|Chrome OS]]<br />
* '''Cross-compiling'''<br />
** [[CrossCompilingOsX|For OS X (from Linux)]]<br />
** [[CrossCompilingWindows|For Windows (from Linux)]]<br />
<br />
== Package Config (pkg-config) ==<br />
<br />
If you must compile and install any of these from source, you may find an error like this when trying to<br />
compile them or Inkscape itself:<br />
<pre><br />
checking for gtk+-2.0 >= 2.0.0 libxml-2.0 >= 2-2.4.24 sigc++-1.2 gtkmm-2.0... Package gtkmm-2.0 was not found in the pkg-config search path.<br />
Perhaps you should add the directory containing `gtkmm-2.0.pc'<br />
to the PKG_CONFIG_PATH environment variable<br />
No package 'gtkmm-2.0' found<br />
</pre><br />
<br />
A solution is to set the PKG_CONFIG_PATH variable as so:<br />
* for Bash: <code>export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig</code><br />
* for csh: <code>setenv PKG_CONFIG_PATH /usr/local/lib/pkgconfig:/usr/lib/pkgconfig</code><br />
<br />
A good place to put this line is in your .bashrc or .cshrc file.<br />
<br />
== Dependencies ==<br />
<br />
If your distro does not have some packages available (like many don't, ie, Fedora Core 2), you must often download and build source packages and/or install them yourself. See [[Tracking Dependencies]].<br />
<br />
== Developer Compilation ==<br />
<br />
Plain vanilla compilation is done as documented in INSTALL.<br />
<br />
Now, you should use [[CMake]] to compile Inkscape:<br />
<pre><br />
mkdir build<br />
cd build<br />
cmake ..<br />
make<br />
</pre><br />
<br />
For old versions of inkscape before 0.92, you can still use autoconf:<br />
<pre><br />
./autogen.sh # optionally<br />
./configure<br />
make<br />
</pre><br />
<br />
Then, to run tests and install Inkscape, you may do:<br />
<pre><br />
make check<br />
sudo make install || su -c "make install"<br />
</pre><br />
<br />
See INSTALL.md for more on that.<br />
<br />
But if you're going to be doing a lot of development, there's some tricks and techniques you should know, to get best results.<br />
<br />
# Turn off optimization.<br />
# Use ccache for faster compilation.<br />
# Set up a separate build directory (nice for testing both gcc and g++, or cross-compiling).<br />
# Use ninja or the make -j N flag to increment the number of threads available to make, with N = 1 + number of processors.<br />
<br />
Example: Setting up the build environment (in separate tree), and using ccache for faster<br />
compilations on a dual-processor machine, with no optimization and full debug symbols, assuming /bin/bash:<br />
<pre><br />
mkdir build<br />
git clone --recurse-submodules https://gitlab.com/inkscape/inkscape.git<br />
cd build<br />
cmake ../inkscape -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE=Debug -G Ninja<br />
ninja<br />
</pre><br />
<br />
See [[Testing Inkscape]] for information on building and executing (unit) tests.<br />
<br />
[[Category:Developer Documentation]]</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Tracking_Dependencies&diff=119042Tracking Dependencies2020-11-06T10:10:38Z<p>Mc: remove lcms from Optional Dependencies</p>
<hr />
<div>== Overview ==<br />
<br />
We need help getting our basic lib dependencies listed out and kept up to date. Also we need to track which versions of which distros have the needed dependencies.<br />
<br />
To get glib and GTK+ dependencies figured out, people can go through the API documentation and look for the 'since' entries saying when calls were added. Then look for those calls in our source. Voila! we'll have base minimum dependencies figured out.<br />
<br />
== Compilers ==<br />
<br />
For C++11 features, see [[C++11]]<br />
<br />
=== gcc ===<br />
=== clang ===<br />
<br />
== Libs ==<br />
<br />
C++ bindings are not included, since their required versions match those of the C counterparts.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Library<br />
! v 0.92<br />
! v 1.0<br />
! master<br />
|-<br />
| Boehm-GC<br />
| 7.2<br />
| 7.2<br />
|<br />
|-<br />
| Cairo<br />
| 1.14<br />
| 1.14 (1.15.4 required for PDF links)<br />
| 1.16*<br />
|-<br />
| double-conversion [https://github.com/google/double-conversion]<br/>''(lib2geom dependency)''<br />
| ''(not required)''<br />
| any<br />
|<br />
|-<br />
| GDL<br />
| N/A<br />(3.4)<br />
| 3.4<br />
| 3.6<br />
|-<br />
| Glib<br />
| 2.28<br />
| 2.48<br />
| 2.56 or 2.62*<br />
|-<br />
| GTK+<br />
| 2.24<br />(3.8)<br />
| 3.22<br />
| 3.24*<br />
|-<br />
| GNU Scientific Library<br />
| ?<br />
| ?<br />
|<br />
|-<br />
| libsigc++<br />
| ''2.0.12*''<br />
| ''2.0.12*''<br />
| 2.10*<br />
|-<br />
| libSoup<br />
| ''(not required)''<br />
| (any)<br />
|<br />
|-<br />
| libpotrace<br />
| ''(not required)''<br />
| (any)<br />
|<br />
|-<br />
| libxml<br />
| ''2.6.11*''<br />
| ''2.6.11*''<br />
|<br />
|-<br />
| libxslt<br />
| ''1.0.15*''<br />
| ''1.0.15*''<br />
|-<br />
| lcms<br />
| 1.13<br />
| 2.2<br />
| 2.2 (2.9*)<br />
|-<br />
| Pango<br />
| 1.24<br />
| 1.24 (1.41.1 required for variable fonts)<br />
| 1.42*<br />
|-<br />
| Poppler<br />
| 0.20.0<br />
| 0.20.0<br />
| 0.29 (0.71*)<br />
|-<br />
| [https://formulae.brew.sh/formula/gtk-mac-integration gtk-mac-integration]<br>[https://www.macports.org/ports.php?by=library&substr=gtk-osx-application-gtk3 gtk-osx-application-gtk3]<br />
| N/A<br />
| 2.0.8 ([[CompilingMacOsX|macOS only]])<br />
|<br />
|}<br />
<br />
''* Tentative dependency''<br />
<br />
== Distros ==<br />
<br />
Note: This table is not relevant to (non-fink) MacOS X, where we ship the desired version with Inkscape.<br />
<br />
"Inkscape" column is default or distro version / oldest that builds - latest that builds. If no latest is given then that means trunk is expected to build on the given platform.<br />
<br />
e.g. for a distro that ships with 0.48 but should support building of trunk you might get:<br />
0.48 / 0.47-<br />
<br />
'''General rules:'''<br />
* Support last Debian Stable<br />
* Support last Ubuntu LTS<br />
* Support last CentOS/Redhat (as best effort).<br />
* Support last two Fedora releases.<br />
* Don't break ''point'' releases.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Distro<br />
! Inkscape<br />
! gcc<br />
! clang<br />
! cairo<br />
! cairomm<br />
! glib<br />
! glibmm<br />
! gtk+<br />
! gtkmm<br />
! pango<br />
! poppler<br />
! gdl<br />
! lcms2<br />
! libsigc++<br />
! libgc <!-- Fedora rpm: gc --><br />
! libsoup<br />
|-<br />
| Windows MSYS2 (2018-11-08)<br/>([https://github.com/Alexpux/MINGW-packages mingw-w64 packages] from MSYS2 project)<br />
<!-- see http://quodlibet.duckdns.org/msys2/base for list of latest package versions --><br />
| -<br />
| 8.2.0<br />
| <abbr title="compiles but fails to link due to long path issue (help welcome)">(7.0.0)</abbr><br />
| 1.16.0<br />
| 1.12.2<br />
| 2.58.1<br />
| 2.58.0<br />
| 2.24.32<br />3.24.1<br />
| 2.24.5<br />3.22.3<br />
| 1.42.4<br />
| 0.69.0<br />
| 3.28.0<br />
| 1.19<br />2.9<br />
| 2.10.1<br />
| 7.6.8<br />
| 2.64.2<br />
|-<br />
| Debian 10 (Buster, <i>stable</i>) <small>EOL 2024-06</small><br />
| 0.92.4<br />
| 8.3.0<br />
| 7.0<br />
| 1.16<br />
| 1.12.2<br />
| 2.58.3<br />
| 2.58.0<br />
| 2.24.32<br />3.24.5<br />
| 2.24.5<br />3.24.0<br />
| 1.42.4<br />
| 0.71.0<br />
| 3.28.0<br />
| 2.9<br />
| 2.10.1<br />
| 7.6.4<br />
| 2.64.2<br />
|-<br />
| style="background:Violet;"|(RHEL) / CentOS 8.1 <small>EOFS 2024-05</small><br/>Based on Centros 8.1 package list<br />
| 0.92.3<br />
| 8.3.1<br />
| 8.0.1<br />
| 1.15.12<br />
| 1.12.0<br />
| 2.56.4<br />
| 2.56.0<br />
| 2.24.32<br />3.22.30<br />
| 2.24.5<br />3.22.2<br />
| 1.42.4<br />
| 0.66.0<br />
| style="background:Violet;"|?<br />
| 2.9<br />
| 2.10.0<br />
| 7.6.4<br />
| 2.62.3<br />
|-<br />
| Ubuntu 18.04 LTS (Bionic) <small>EOL 2023-04</small><br />
| 0.92.3<br />
| 7.3<br />
| 6.0<br />
| 1.15.10<br />
| 1.12.2<br />
| 2.56.1<br />
| 2.56.0<br />
| 2.24.32<br />3.22.30<br />
| 2.24.5<br />3.22.2<br />
| 1.40.14<br />
| 0.62.0<br />
| 3.28.0<br />
| 2.9<br />
| 2.10.0<br />
| 7.4.2<br />
| 2.62.1<br />
|-<br />
| Ubuntu 20.04 LTS (Focal Fossa) <small>EOL 2025-04</small><br />
| 0.92.5<br />
| 10<br />
| 10<br />
| 1.16<br />
| 1.12.2<br />
| 2.64.1<br />
| 2.64.2<br />
| 2.24.32<br />3.24.17<br />
| 2.24.5<br />3.24.2<br />
| 1.44.7<br />
| 0.86.1<br />
| 3.34.0<br />
| 2.9.4<br />
| 2.10.2<br />
| 10<br />
| 2.70.0<br />
|}<br />
<br />
{| class="wikitable"<br />
|-<br />
! Legend<br />
|-<br />
| style="background:Orange;"| Inkscape 1.0.x unsupported<br />
|-<br />
| style="background:Violet;"| GTK+ 3 builds unsupported<br />
|}<br />
<br />
* Agreed to at Saarbrücken hackfest.<br />
<br />
== Getting and Installing Source packages ==<br />
<br />
If your distro does not have some packages available (like many don't, ie, Fedora Core 2), you must often download<br />
source packages and build and install them yourself. Actually this is not that hard, and is similar to<br />
doing a Gentoo 'emerge.'<br />
<br />
* Usually you download a file with a name like somepackage-1.0.tar.gz. Unpack it with<br />
<br />
$ tar zxf somepackage-1.0.tar.gz<br />
or<br />
$ tar jxf somepackage-1.0.tar.bz2<br />
<br />
* Then 'cd' into the new directory.<br />
<br />
* Configure it with the command:<br />
<br />
$ ./configure<br />
<br />
* Build it with:<br />
<br />
$ make<br />
<br />
* As the 'root' user, install it with:<br />
<br />
# make install<br />
<br />
=== Boehm-GC ===<br />
<br />
Website: http://www.hboehm.info/gc/<br />
<br />
GitHub Project: https://github.com/ivmai/bdwgc<br />
<br />
Binaries: If searching for a package for GC, the name of it is sometimes:<br />
<br />
* gc<br />
* libgc<br />
* gc-devel<br />
* libgc-devel<br />
* boehm-gc (on Gentoo)<br />
* debian/ubuntu: sudo apt-get install libgc-dev<br />
<br />
=== libSigc++ ===<br />
<br />
Source: http://ftp.gnome.org/pub/GNOME/sources/libsigc++/2.2/libsigc++-2.2.3.tar.bz2<br />
<br />
With this file, and for GlibMM and GtkMM below, it is usually desirable for us developers to<br />
build this C++ library statically. This removes a dependency that might be difficult for an<br />
end-user during installation. Configure it with:<br />
<br />
./configure --enable-static --disable-shared<br />
<br />
=== GlibMM ===<br />
Try to match your Glib2 version with GlibMM's version. For example, if your Glib2 is 2.16.6, download glibmm-2.16.4.tar.bz2.<br />
<br />
Latest source: http://ftp.gnome.org/pub/GNOME/sources/glibmm/<br />
<br />
=== GtkMM ===<br />
Usually you can try the latest version of GtkMM, but if you get version mismatch errors, try older releases.<br />
<br />
Source: http://ftp.gnome.org/pub/GNOME/sources/gtkmm/2.12/gtkmm-2.12.7.tar.bz2<br />
<br />
=== cairomm ===<br />
<br />
if you got prompted about cairomm, try first solve your cairo version, so you can grab [http://www.cairographics.org/releases/ there] a compatible version.<br />
<br />
<br />
=== Boost ===<br />
<br />
Many users have reported when building from source that after installing the above dependencies, the configure script still requires a "boost" package. It can be found below, but even after installing, you will need to create a symlink to allow the configure script to find it:<br />
<br />
ln -s /usr/local/include/boost_1_xx_x/boost /usr/local/include/boost<br />
<br />
Source: http://www.boost.org/users/download/<br />
<br />
<br />
=== Boost-Filesystem ===<br />
<br />
Boost filesystem is a temporary dependency we discussed in September 2020 because compilers we wanted to support (in particular gcc-8 and some macos compilers) do not yet support std::filesystem.<br />
<br />
Once all compilers we support get std::filesystem, we will drop this dep<br />
<br />
<br />
<br />
=== Poppler ===<br />
<br />
Source: http://poppler.freedesktop.org/<br />
<br />
Poppler is required for PDF import. There are several potential issues:<br />
* Some Linux distributions do not ship the Xpdf headers required by Inkscape. In such cases, you need to recompile Poppler, passing --enable-xpdf-headers on the configure line or install the libpoppler-private-dev package. See [https://bugs.launchpad.net/inkscape/+bug/254849 this wishlist bug]. This typically manifests in error messages like this:<br />
<pre>In file included from extension/internal/pdfinput/svg-builder.cpp:19:<br />
extension/internal/pdfinput/svg-builder.h:32:23: error: CharTypes.h: No such file or directory<br />
...<br />
make[2]: *** [extension/internal/pdfinput/svg-builder.o] Error 1<br />
make[2]: Leaving directory `/tmp/build/inkscape-0.46/src'<br />
make[1]: *** [all-recursive] Error 1<br />
make[1]: Leaving directory `/tmp/build/inkscape-0.46'<br />
make: *** [all] Error 2</pre><br />
* Inkscape 0.47 does not compile with Poppler >= 0.12.2. If you need to compile Inkscape on such systems, use the development version from Bazaar, where this bug is fixed. See [https://bugs.launchpad.net/inkscape/+bug/487038 the bug report] for details and a minimal patch.<br />
* Inkscape compiled with Poppler <= 0.12.1 will run on systems with Poppler >= 0.12.2, but the PDF import function will crash instantly. This problem does not concern Windows users, since the correct Poppler version is contained in the Windows installer package. This cannot be fixed on Inkscape's side: those two versions of Poppler are not ABI compatible, yet share the same soname. See [https://bugs.launchpad.net/inkscape/+bug/258504 this bug] for more details.<br />
* Poppler's Xpdf headers are not guaranteed to be API-compatible between releases. It's likely that future Poppler versions will break PDF import in some way. PDF import works at least up to 0.12.4 but might not work with later versions.<br />
<br />
== Optional Dependencies ==<br />
<br />
Inkscape will still compile without these, but some features may be missing if they are absent during compilation:<br />
<br />
{| class="wikitable"<br />
|-<br />
! scope="col"| Library<br />
! scope="col"| Needed for<br />
! scope="col"| Default<br />
|-<br />
|aspell<br />
|Dictionaries for spell checking<br />
|On<br />
|-<br />
|libcdr<br />
|Open Corel Draw files<br />
|On<br />
|-<br />
|gettext/msgformat<br />
|Translation support<br />
|On<br />
|-<br />
|gtest/gmock<br />
|Automatted testing<br />
|Off<br />
|-<br />
|gspell<br />
|Spell checking<br />
|On<br />
|-<br />
|imagemagick<br />
|Bitmap editing extensions, bitmap import resolution<br />
|On<br />
|-<br />
|jpeg<br />
|jpeg import?<br />
|On<br />
|-<br />
|OpenMP<br />
|Multi-threaded filter rendering<br />
|On<br />
|-<br />
|scour<br />
|Save as Optimized SVG<br />
|(not needed during compiling, Python)<br />
|-<br />
|libvisio<br />
|Open Visio Files, use Visio stencils<br />
|On<br />
|-<br />
|libwpg<br />
|Open WordPerfect Graphics<br />
|On<br />
|-<br />
|}<br />
<br />
<br />
<br />
[[Category:About Inkscape]]<br />
[[Category:Developer Documentation]]</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Tracking_Dependencies&diff=118980Tracking Dependencies2020-09-29T23:08:01Z<p>Mc: </p>
<hr />
<div>== Overview ==<br />
<br />
We need help getting our basic lib dependencies listed out and kept up to date. Also we need to track which versions of which distros have the needed dependencies.<br />
<br />
To get glib and GTK+ dependencies figured out, people can go through the API documentation and look for the 'since' entries saying when calls were added. Then look for those calls in our source. Voila! we'll have base minimum dependencies figured out.<br />
<br />
== Compilers ==<br />
<br />
For C++11 features, see [[C++11]]<br />
<br />
=== gcc ===<br />
=== clang ===<br />
<br />
== Libs ==<br />
<br />
C++ bindings are not included, since their required versions match those of the C counterparts.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Library<br />
! v 0.92<br />
! v 1.0<br />
! master<br />
|-<br />
| Boehm-GC<br />
| 7.2<br />
| 7.2<br />
|<br />
|-<br />
| Cairo<br />
| 1.14<br />
| 1.14 (1.15.4 required for PDF links)<br />
| 1.16*<br />
|-<br />
| double-conversion [https://github.com/google/double-conversion]<br/>''(lib2geom dependency)''<br />
| ''(not required)''<br />
| any<br />
|<br />
|-<br />
| GDL<br />
| N/A<br />(3.4)<br />
| 3.4<br />
| 3.6<br />
|-<br />
| Glib<br />
| 2.28<br />
| 2.48<br />
| 2.56 or 2.62*<br />
|-<br />
| GTK+<br />
| 2.24<br />(3.8)<br />
| 3.22<br />
| 3.24*<br />
|-<br />
| GNU Scientific Library<br />
| ?<br />
| ?<br />
|<br />
|-<br />
| libsigc++<br />
| ''2.0.12*''<br />
| ''2.0.12*''<br />
| 2.10*<br />
|-<br />
| libSoup<br />
| ''(not required)''<br />
| (any)<br />
|<br />
|-<br />
| libpotrace<br />
| ''(not required)''<br />
| (any)<br />
|<br />
|-<br />
| libxml<br />
| ''2.6.11*''<br />
| ''2.6.11*''<br />
|<br />
|-<br />
| libxslt<br />
| ''1.0.15*''<br />
| ''1.0.15*''<br />
|-<br />
| LittleCMS<br />
| 1.13<br />
| 1.13<br />
|<br />
|-<br />
| Pango<br />
| 1.24<br />
| 1.24 (1.41.1 required for variable fonts)<br />
| 1.42*<br />
|-<br />
| Poppler<br />
| 0.20.0<br />
| 0.20.0<br />
| 0.71*<br />
|-<br />
| [https://formulae.brew.sh/formula/gtk-mac-integration gtk-mac-integration]<br>[https://www.macports.org/ports.php?by=library&substr=gtk-osx-application-gtk3 gtk-osx-application-gtk3]<br />
| N/A<br />
| 2.0.8 ([[CompilingMacOsX|macOS only]])<br />
|<br />
|}<br />
<br />
''* Tentative dependency''<br />
<br />
== Distros ==<br />
<br />
Note: This table is not relevant to (non-fink) MacOS X, where we ship the desired version with Inkscape.<br />
<br />
"Inkscape" column is default or distro version / oldest that builds - latest that builds. If no latest is given then that means trunk is expected to build on the given platform.<br />
<br />
e.g. for a distro that ships with 0.48 but should support building of trunk you might get:<br />
0.48 / 0.47-<br />
<br />
'''General rules:'''<br />
* Support last Debian Stable<br />
* Support last Ubuntu LTS<br />
* Support last CentOS/Redhat (as best effort).<br />
* Support last two Fedora releases.<br />
* Don't break ''point'' releases.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Distro<br />
! Inkscape<br />
! gcc<br />
! clang<br />
! cairo<br />
! cairomm<br />
! glib<br />
! glibmm<br />
! gtk+<br />
! gtkmm<br />
! pango<br />
! poppler<br />
! gdl<br />
! lcms2<br />
! libsigc++<br />
! libgc <!-- Fedora rpm: gc --><br />
! libsoup<br />
|-<br />
| Windows MSYS2 (2018-11-08)<br/>([https://github.com/Alexpux/MINGW-packages mingw-w64 packages] from MSYS2 project)<br />
<!-- see http://quodlibet.duckdns.org/msys2/base for list of latest package versions --><br />
| -<br />
| 8.2.0<br />
| <abbr title="compiles but fails to link due to long path issue (help welcome)">(7.0.0)</abbr><br />
| 1.16.0<br />
| 1.12.2<br />
| 2.58.1<br />
| 2.58.0<br />
| 2.24.32<br />3.24.1<br />
| 2.24.5<br />3.22.3<br />
| 1.42.4<br />
| 0.69.0<br />
| 3.28.0<br />
| 1.19<br />2.9<br />
| 2.10.1<br />
| 7.6.8<br />
| 2.64.2<br />
|-<br />
| Debian 10 (Buster, <i>stable</i>) <small>EOL 2024-06</small><br />
| 0.92.4<br />
| 8.3.0<br />
| 7.0<br />
| 1.16<br />
| 1.12.2<br />
| 2.58.3<br />
| 2.58.0<br />
| 2.24.32<br />3.24.5<br />
| 2.24.5<br />3.24.0<br />
| 1.42.4<br />
| 0.71.0<br />
| 3.28.0<br />
| 2.9<br />
| 2.10.1<br />
| 7.6.4<br />
| 2.64.2<br />
|-<br />
| style="background:Violet;"|(RHEL) / CentOS 8.1 <small>EOFS 2024-05</small><br/>Based on Centros 8.1 package list<br />
| 0.92.3<br />
| 8.3.1<br />
| 8.0.1<br />
| 1.15.12<br />
| 1.12.0<br />
| 2.56.4<br />
| 2.56.0<br />
| 2.24.32<br />3.22.30<br />
| 2.24.5<br />3.22.2<br />
| 1.42.4<br />
| 0.66.0<br />
| style="background:Violet;"|?<br />
| 2.9<br />
| 2.10.0<br />
| 7.6.4<br />
| 2.62.3<br />
|-<br />
| Ubuntu 18.04 LTS (Bionic) <small>EOL 2023-04</small><br />
| 0.92.3<br />
| 7.3<br />
| 6.0<br />
| 1.15.10<br />
| 1.12.2<br />
| 2.56.1<br />
| 2.56.0<br />
| 2.24.32<br />3.22.30<br />
| 2.24.5<br />3.22.2<br />
| 1.40.14<br />
| 0.62.0<br />
| 3.28.0<br />
| 2.9<br />
| 2.10.0<br />
| 7.4.2<br />
| 2.62.1<br />
|-<br />
| Ubuntu 20.04 LTS (Focal Fossa) <small>EOL 2025-04</small><br />
| 0.92.5<br />
| 10<br />
| 10<br />
| 1.16<br />
| 1.12.2<br />
| 2.64.1<br />
| 2.64.2<br />
| 2.24.32<br />3.24.17<br />
| 2.24.5<br />3.24.2<br />
| 1.44.7<br />
| 0.86.1<br />
| 3.34.0<br />
| 2.9.4<br />
| 2.10.2<br />
| 10<br />
| 2.70.0<br />
|}<br />
<br />
{| class="wikitable"<br />
|-<br />
! Legend<br />
|-<br />
| style="background:Orange;"| Inkscape 1.0.x unsupported<br />
|-<br />
| style="background:Violet;"| GTK+ 3 builds unsupported<br />
|}<br />
<br />
* Agreed to at Saarbrücken hackfest.<br />
<br />
== Getting and Installing Source packages ==<br />
<br />
If your distro does not have some packages available (like many don't, ie, Fedora Core 2), you must often download<br />
source packages and build and install them yourself. Actually this is not that hard, and is similar to<br />
doing a Gentoo 'emerge.'<br />
<br />
* Usually you download a file with a name like somepackage-1.0.tar.gz. Unpack it with<br />
<br />
$ tar zxf somepackage-1.0.tar.gz<br />
or<br />
$ tar jxf somepackage-1.0.tar.bz2<br />
<br />
* Then 'cd' into the new directory.<br />
<br />
* Configure it with the command:<br />
<br />
$ ./configure<br />
<br />
* Build it with:<br />
<br />
$ make<br />
<br />
* As the 'root' user, install it with:<br />
<br />
# make install<br />
<br />
=== Boehm-GC ===<br />
<br />
Website: http://www.hboehm.info/gc/<br />
<br />
GitHub Project: https://github.com/ivmai/bdwgc<br />
<br />
Binaries: If searching for a package for GC, the name of it is sometimes:<br />
<br />
* gc<br />
* libgc<br />
* gc-devel<br />
* libgc-devel<br />
* boehm-gc (on Gentoo)<br />
* debian/ubuntu: sudo apt-get install libgc-dev<br />
<br />
=== libSigc++ ===<br />
<br />
Source: http://ftp.gnome.org/pub/GNOME/sources/libsigc++/2.2/libsigc++-2.2.3.tar.bz2<br />
<br />
With this file, and for GlibMM and GtkMM below, it is usually desirable for us developers to<br />
build this C++ library statically. This removes a dependency that might be difficult for an<br />
end-user during installation. Configure it with:<br />
<br />
./configure --enable-static --disable-shared<br />
<br />
=== GlibMM ===<br />
Try to match your Glib2 version with GlibMM's version. For example, if your Glib2 is 2.16.6, download glibmm-2.16.4.tar.bz2.<br />
<br />
Latest source: http://ftp.gnome.org/pub/GNOME/sources/glibmm/<br />
<br />
=== GtkMM ===<br />
Usually you can try the latest version of GtkMM, but if you get version mismatch errors, try older releases.<br />
<br />
Source: http://ftp.gnome.org/pub/GNOME/sources/gtkmm/2.12/gtkmm-2.12.7.tar.bz2<br />
<br />
=== cairomm ===<br />
<br />
if you got prompted about cairomm, try first solve your cairo version, so you can grab [http://www.cairographics.org/releases/ there] a compatible version.<br />
<br />
<br />
=== Boost ===<br />
<br />
Many users have reported when building from source that after installing the above dependencies, the configure script still requires a "boost" package. It can be found below, but even after installing, you will need to create a symlink to allow the configure script to find it:<br />
<br />
ln -s /usr/local/include/boost_1_xx_x/boost /usr/local/include/boost<br />
<br />
Source: http://www.boost.org/users/download/<br />
<br />
<br />
=== Boost-Filesystem ===<br />
<br />
Boost filesystem is a temporary dependency we discussed in September 2020 because compilers we wanted to support (in particular gcc-8 and some macos compilers) do not yet support std::filesystem.<br />
<br />
Once all compilers we support get std::filesystem, we will drop this dep<br />
<br />
<br />
<br />
=== Poppler ===<br />
<br />
Source: http://poppler.freedesktop.org/<br />
<br />
Poppler is required for PDF import. There are several potential issues:<br />
* Some Linux distributions do not ship the Xpdf headers required by Inkscape. In such cases, you need to recompile Poppler, passing --enable-xpdf-headers on the configure line or install the libpoppler-private-dev package. See [https://bugs.launchpad.net/inkscape/+bug/254849 this wishlist bug]. This typically manifests in error messages like this:<br />
<pre>In file included from extension/internal/pdfinput/svg-builder.cpp:19:<br />
extension/internal/pdfinput/svg-builder.h:32:23: error: CharTypes.h: No such file or directory<br />
...<br />
make[2]: *** [extension/internal/pdfinput/svg-builder.o] Error 1<br />
make[2]: Leaving directory `/tmp/build/inkscape-0.46/src'<br />
make[1]: *** [all-recursive] Error 1<br />
make[1]: Leaving directory `/tmp/build/inkscape-0.46'<br />
make: *** [all] Error 2</pre><br />
* Inkscape 0.47 does not compile with Poppler >= 0.12.2. If you need to compile Inkscape on such systems, use the development version from Bazaar, where this bug is fixed. See [https://bugs.launchpad.net/inkscape/+bug/487038 the bug report] for details and a minimal patch.<br />
* Inkscape compiled with Poppler <= 0.12.1 will run on systems with Poppler >= 0.12.2, but the PDF import function will crash instantly. This problem does not concern Windows users, since the correct Poppler version is contained in the Windows installer package. This cannot be fixed on Inkscape's side: those two versions of Poppler are not ABI compatible, yet share the same soname. See [https://bugs.launchpad.net/inkscape/+bug/258504 this bug] for more details.<br />
* Poppler's Xpdf headers are not guaranteed to be API-compatible between releases. It's likely that future Poppler versions will break PDF import in some way. PDF import works at least up to 0.12.4 but might not work with later versions.<br />
<br />
== Optional Dependencies ==<br />
<br />
Inkscape will still compile without these, but some features may be missing if they are absent during compilation:<br />
<br />
{| class="wikitable"<br />
|-<br />
! scope="col"| Library<br />
! scope="col"| Needed for<br />
! scope="col"| Default<br />
|-<br />
|aspell<br />
|Dictionaries for spell checking<br />
|On<br />
|-<br />
|libcdr<br />
|Open Corel Draw files<br />
|On<br />
|-<br />
|gettext/msgformat<br />
|Translation support<br />
|On<br />
|-<br />
|gtest/gmock<br />
|Automatted testing<br />
|Off<br />
|-<br />
|gspell<br />
|Spell checking<br />
|On<br />
|-<br />
|imagemagick<br />
|Bitmap editing extensions, bitmap import resolution<br />
|On<br />
|-<br />
|jpeg<br />
|jpeg import?<br />
|On<br />
|-<br />
|lcms<br />
|Color management<br />
|On<br />
|-<br />
|OpenMP<br />
|Multi-threaded filter rendering<br />
|On<br />
|-<br />
|scour<br />
|Save as Optimized SVG<br />
|(not needed during compiling, Python)<br />
|-<br />
|libvisio<br />
|Open Visio Files, use Visio stencils<br />
|On<br />
|-<br />
|libwpg<br />
|Open WordPerfect Graphics<br />
|On<br />
|-<br />
|}<br />
<br />
<br />
<br />
[[Category:About Inkscape]]<br />
[[Category:Developer Documentation]]</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Compiling_Inkscape&diff=118629Compiling Inkscape2020-08-20T07:57:29Z<p>Mc: </p>
<hr />
<div><mark>Hopefully, Inkscape will compile right out of the box, according to the 'Getting Started' instructions on https://inkscape.org/develop/getting-started/ . If it doesn't, well that's what this page is for. </mark><br />
<br />
<br />
<mark> '''If you've come here without reading the Getting Started page, [https://inkscape.org/develop/getting-started/ please do so first], as it mentions some important things that this page does not.'''<br />
</mark><br />
<br />
<br />
Jot down notes, questions, findings, tips, etc. here on things you run into. It's a good idea to make mention of what version of the code you're trying to compile, the distribution you're running, and other such information that might be pertinent.<br />
<br />
If legitimate bugs are found or patches developed, please move them to the [https://inkscape.org/contribute/report-bugs/ tracker] rather than inlining them here. <br />
<br />
== Notes ==<br />
<br />
Please use CMake instead of Automake for Inkscape 0.92 onwards.<br />
<br />
CMake is a crossplatform makefile generator similar to autotools. It tests dependencies and creates makefiles to be used with make.<br />
<br />
Please see the [[CMake]] wiki page.<br />
<br />
== OS & Distribution Specific ==<br />
<br />
* '''Linux'''<br />
** [[CompilingUbuntu|Ubuntu]]<br />
** [[CompilingSlackware|Slackware]]<br />
* [[CompilingMacOsX|Mac OS X]]<br />
* [[Compiling Inkscape on Windows|Windows]]<br />
* [[Compiling Inkscape on Chrome OS|Chrome OS]]<br />
* '''Cross-compiling'''<br />
** [[CrossCompilingOsX|For OS X (from Linux)]]<br />
** [[CrossCompilingWindows|For Windows (from Linux)]]<br />
<br />
== Package Config (pkg-config) ==<br />
<br />
If you must compile and install any of these from source, you may find an error like this when trying to<br />
compile them or Inkscape itself:<br />
<pre><br />
checking for gtk+-2.0 >= 2.0.0 libxml-2.0 >= 2-2.4.24 sigc++-1.2 gtkmm-2.0... Package gtkmm-2.0 was not found in the pkg-config search path.<br />
Perhaps you should add the directory containing `gtkmm-2.0.pc'<br />
to the PKG_CONFIG_PATH environment variable<br />
No package 'gtkmm-2.0' found<br />
</pre><br />
<br />
A solution is to set the PKG_CONFIG_PATH variable as so:<br />
* for Bash: <code>export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig</code><br />
* for csh: <code>setenv PKG_CONFIG_PATH /usr/local/lib/pkgconfig:/usr/lib/pkgconfig</code><br />
<br />
A good place to put this line is in your .bashrc or .cshrc file.<br />
<br />
== Dependencies ==<br />
<br />
If your distro does not have some packages available (like many don't, ie, Fedora Core 2), you must often download and build source packages and/or install them yourself. See [[Tracking Dependencies]].<br />
<br />
== Developer Compilation ==<br />
<br />
Plain vanilla compilation is done as documented in INSTALL.<br />
<br />
Now, you should use [[CMake]] to compile Inkscape:<br />
<pre><br />
mkdir build<br />
cd build<br />
cmake ..<br />
make<br />
</pre><br />
<br />
For old versions of inkscape before 0.92, you can still use autoconf:<br />
<pre><br />
./autogen.sh # optionally<br />
./configure<br />
make<br />
</pre><br />
<br />
Then, to run tests and install Inkscape, you may do:<br />
<pre><br />
make check<br />
sudo make install || su -c "make install"<br />
</pre><br />
<br />
See INSTALL.md for more on that.<br />
<br />
But if you're going to be doing a lot of development, there's some tricks and techniques you should know, to get best results.<br />
<br />
# Turn off optimization.<br />
# Use ccache for faster compilation.<br />
# Set up a separate build directory (nice for testing both gcc and g++, or cross-compiling).<br />
# Use ninja or the make -j N flag to increment the number of threads available to make, with N = 1 + number of processors.<br />
<br />
Example: Setting up the build environment (in separate tree), and using ccache for faster<br />
compilations on a dual-processor machine, with no optimization and full debug symbols, assuming /bin/bash:<br />
<pre><br />
mkdir build<br />
git clone https://gitlab.com/inkscape/inkscape.git<br />
cd build<br />
cmake ../inkscape -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE=Debug -G Ninja<br />
ninja<br />
</pre><br />
<br />
See [[Testing Inkscape]] for information on building and executing (unit) tests.<br />
<br />
[[Category:Developer Documentation]]</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Release_notes/1.1&diff=118516Release notes/1.12020-05-30T07:41:01Z<p>Mc: /* Improvements */</p>
<hr />
<div>{{Other languages | en = {{FULLPAGENAME}}}}<br />
<br />
== Release highlights ==<br />
<br />
'''Definitely not released yet.'''<br />
<br />
Inkscape 1.1 is a stability and bugfix release. <br />
<br />
[For changes made even before the 1.0 release that aren't in 1.0, try to find out if the checked and not stroked ones here: https://gitlab.com/inkscape/inkscape/-/issues/1030 have really not been cherrypicked]<br />
<br />
The most notable improvements are: <br />
<br />
* Fill in<br />
<br />
== Important changes ==<br />
<br />
=== For packagers ===<br />
<br />
* We no longer depend on GtkSpell and ASpell but on GSpell for spell checking.<br />
* lib2geom has been moved into its own git submodule (like the extensions).<br />
<br />
== Improvements ==<br />
<br />
* In Edit > Preferences > Imported images : Import, there is a new option that allows you to disable relative paths to linked files ("Store absolute file path for linked images", active by default).<br />
* [https://en.wikipedia.org/wiki/XInclude XInclude] support<br />
* Hidden dialogs stop receiving signals and release resources<br />
* Shell mode: a history of commands is now remembered and can be accessed with the up and down arrow keys. [Tab ... autocompletion?]<br />
<br />
=== General User Interface ===<br />
<br />
* Dock layouts are now saved in an xml file (<code>docklayout.xml</code>) in the user preferences directory, making them transferable.<br />
* The legacy gradient editor (a dialog that could previously be enabled in the preferences for the gradient tool) has been removed.<br />
<br />
=== Canvas ===<br />
==== Rotation lock ====<br />
<br />
A new menu item has been added to allow the user to prevent the rotation of the canvas with key bindings commonly associated with zooming in other applications. This setting can be toggled on a per-window basis. In addition, a new preference option has been added to allow users to set the mode to be on when a new window is opened.<br />
<br />
<gallery mode="packed" heights=250px><br />
File:Canvas rotation lock toggle.png|New "Rotation lock" menu item<br />
File:Default rotation lock toggle.png|Configuration option to lock the rotation by default<br />
</gallery><br />
<br />
=== Live Path Effects ===<br />
<br />
==== Automatic fill preservation for Path Effects ====<br />
<br />
LPEs which render strokes as fills (<code>Join Type</code>, <code>Power Stroke</code>, and <code>Taper Stroke</code>) have been modified to automatically preserve the previous fill by creating a linked path when applied to an object.<br />
<br />
<gallery mode="packed" heights=250px><br />
File:Sadchrys original drawing with fill.png|Original drawing<br />
File:Sadchrys after applying LPE previous versions.png|Previous versions of Inkscape would preserve the stroke settings but remove the fill when applied.<br />
File:Sadchrys after applying LPE 1.1 original path.png|Now, Inkscape will automatically preserve the fill by creating a linked path underneath.<br />
File:Sadchrys after applying LPE 1.1 linked fill.png|LPE options for the linked fill<br />
</gallery><br />
<br />
==== Taper Stroke LPE improved ====<br />
<br />
The Taper stroke LPE has been updated to include taper direction options (allowing the taper to run to one side of the path, instead of to the middle) and smoothing options for both ends of the path, allowing more interesting paths to be made in the effect. In addition, using the keybind '''Shift+click''' on the on-canvas knots allows quickly alternating between the different possible taper shapes.<br />
<br />
<gallery mode="packed" heights=250px><br />
File:Taper stroke direction control.png|Direction control options<br />
File:Taper stroke new parameter list.png|New parameter list<br />
</gallery><br />
<br />
==== New shortcut for Fill between many LPE ====<br />
<br />
A new shortcut has been added under the Path menu to automatically create a linked fill path using the '''Fill between many''' path effect. The effect is created beneath the selected paths and automatically selected to faciliate moving the path into the correct z-order and styling it as intended. For greater efficiency, the shortcut can also be bound to a hotkey using the '''Preferences''' dialog.<br />
<br />
<gallery mode="packed" heights=250px><br />
File:Fill between many shortcut menuitem.png|Previously, using this effect required tediously copying every path to the clipboard and pasting it into the parameter list of a new path.<br />
File:Fill between many result.png|Now, Inkscape can perform this task automatically, without any tedium.<br />
</gallery><br />
<br />
<br />
=== Extensions ===<br />
<br />
A new extension allows to directly save as a PDF through Scribus, if Scribus 1.5+ is found in the path. This should allow to produce a color-managed PDF if the SVG is color-managed.<br />
<br />
<br />
<!-- == Regression fixes ==<br />
<br />
* ... --><br />
<br />
== Notable bugfixes ==<br />
<br />
* Fill in<br />
<br />
== Breaking changes / Action required ==<br />
<br />
=== Extensions ===<br />
<br />
Element selections API has been improved, the API in 10 of using `self.svg.selected` is deprecated in favour of the new `self.svg.selection` interface. The previous API will continue to work for the time being but should be updated to the new API. Selection is now a type of ElementList which provides filtering, ordering and other generalised functionality, if you need an element list for example to make a bounding box, this is the way to do it.<br />
<br />
== Crash fixes ==<br />
<br />
Fix a crash &hellip;<br />
* &hellip; when ... ([https://gitlab.com/inkscape/inkscape/-/issues/ #number])<br />
<br />
== More bug fixes ==<br />
<br />
There were even more issues fixed than those listed above, but these probably only affect a small portion of users, or are relevant for development and packaging only.<br />
<br />
For a complete list, visit [https://gitlab.com/inkscape/inkscape/-/milestones/2 our GitLab issue tracker] and see the [https://gitlab.com/inkscape/inkscape/-/commits/1.0.x commit history] (all changes since DATE until release date).<br />
<br />
== Translations ==<br />
<br />
The following UI translations received updates:<br />
<br />
* Language<br />
<br />
The following documentation translations received updates:<br />
<br />
* Language<br />
<br />
=== Contributing to interface translations ===<br />
<br />
Want to help with translations? [https://inkscape.org/contribute/translations/ Learn how to help!]<br />
<br />
== Documentation ==<br />
<br />
* Some missing options were added to the man page (command line help)<br />
* Some missing keyboard shortcuts were added to the keyboard shortcut reference<br />
<br />
=== Contributing to documentation and documentation translation ===<br />
Contributions to the documentation translations, as well as improvements to its contents, are welcome at [https://gitlab.com/inkscape/inkscape-docs/documentation the inkscape-docs repository].<br />
<br />
== Known issues ==<br />
<br />
* Fill in<br />
* Many of Inkscape's old bug reports still need to be [https://alpha.inkscape.org/bug-migration/ tested and migrated to the new bug and feature request reporting page]. While some progress has already been made, we still need your help with that task.<br />
* All (migrated and new) open issues for the project are listed on [https://gitlab.com/groups/inkscape/-/issues GitLab]. If you have some time on your hands and can help fixing them, [https://chat.inkscape.org/channel/team_devel join us in the development chat] and let us tackle them together.<br />
<br />
== Previous releases ==<br />
* [[Release notes/0.92]]<br />
* [[Release notes/0.92.1]]<br />
* [[Release notes/0.92.2]]<br />
* [[Release notes/0.92.3]]<br />
* [[Release notes/0.92.4]]<br />
* [[Release notes/0.92.5]]<br />
* [[Release notes/1.0]]</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Release_notes/1.1&diff=118302Release notes/1.12020-05-03T23:44:23Z<p>Mc: </p>
<hr />
<div>{{Other languages | en = {{FULLPAGENAME}}}}<br />
<br />
== Release highlights ==<br />
<br />
'''Definitely not released yet.'''<br />
<br />
Inkscape 1.1 is a stability and bugfix release. <br />
<br />
[For changes made even before the 1.0 release that aren't in 1.0, try to find out if the checked and not stroked ones here: https://gitlab.com/inkscape/inkscape/-/issues/1030 have really not been cherrypicked]<br />
<br />
The most notable improvements are: <br />
<br />
* Fill in<br />
<br />
== Important changes ==<br />
<br />
* For packagers: we do not depend on GtkSpell but on GSpell for spelling checks.<br />
<br />
== Improvements ==<br />
<br />
* In Edit > Preferences > Imported images : Import, there is a new option that allows you to disable relative paths to linked files ("Store absolute file path for linked images", active by default).<br />
* [https://en.wikipedia.org/wiki/XInclude XInclude] support<br />
* Hidden dialogs stop receiving signals and release resources<br />
* Shell mode: a history of commands is now remembered and can be accessed with the up and down arrow keys. [Tab ... autocompletion?]<br />
<br />
<!-- == Regression fixes ==<br />
<br />
* ... --><br />
<br />
== Notable bugfixes ==<br />
<br />
* Fill in<br />
<br />
== Crash fixes ==<br />
<br />
Fix a crash &hellip;<br />
* &hellip; when ... ([https://gitlab.com/inkscape/inkscape/issues/ #number])<br />
<br />
== More bug fixes ==<br />
<br />
There were even more issues fixed than those listed above, but these probably only affect a small portion of users, or are relevant for development and packaging only.<br />
<br />
For a complete list, visit [https://gitlab.com/inkscape/inkscape/milestones/2 our GitLab issue tracker] and see the [https://gitlab.com/inkscape/inkscape/commits/1.0.x commit history] (all changes since DATE until release date).<br />
<br />
== Translations ==<br />
<br />
The following UI translations received updates:<br />
<br />
* Language<br />
<br />
The following documentation translations received updates:<br />
<br />
* Language<br />
<br />
=== Contributing to interface translations ===<br />
<br />
Want to help with translations? [https://inkscape.org/contribute/translations/ Learn how to help!]<br />
<br />
== Documentation ==<br />
<br />
* Some missing options were added to the man page (command line help)<br />
* Some missing keyboard shortcuts were added to the keyboard shortcut reference<br />
<br />
=== Contributing to documentation and documentation translation ===<br />
Contributions to the documentation translations, as well as improvements to its contents, are welcome at [https://gitlab.com/inkscape/inkscape-docs/documentation the inkscape-docs repository].<br />
<br />
== Known issues ==<br />
<br />
* Fill in<br />
* Many of Inkscape's old bug reports still need to be [https://alpha.inkscape.org/bug-migration/ tested and migrated to the new bug and feature request reporting page]. While some progress has already been made, we still need your help with that task.<br />
* All (migrated and new) open issues for the project are listed on [https://gitlab.com/groups/inkscape/-/issues GitLab]. If you have some time on your hands and can help fixing them, [https://chat.inkscape.org/channel/team_devel join us in the development chat] and let us tackle them together.<br />
<br />
== Previous releases ==<br />
* [[Release notes/0.92]]<br />
* [[Release notes/0.92.1]]<br />
* [[Release notes/0.92.2]]<br />
* [[Release notes/0.92.3]]<br />
* [[Release notes/0.92.4]]<br />
* [[Release notes/0.92.5]]<br />
* [[Release notes/1.0]]</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Tracking_Dependencies&diff=118301Tracking Dependencies2020-05-03T16:10:42Z<p>Mc: /* Optional Dependencies */</p>
<hr />
<div>== Overview ==<br />
<br />
We need help getting our basic lib dependencies listed out and kept up to date. Also we need to track which versions of which distros have the needed dependencies.<br />
<br />
To get glib and GTK+ dependencies figured out, people can go through the API documentation and look for the 'since' entries saying when calls were added. Then look for those calls in our source. Voila! we'll have base minimum dependencies figured out.<br />
<br />
== Compilers ==<br />
<br />
For C++11 features, see [[C++11]]<br />
<br />
=== gcc ===<br />
=== clang ===<br />
<br />
== Libs ==<br />
<br />
C++ bindings are not included, since their required versions match those of the C counterparts.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Library<br />
! v 0.92<br />
! v 1.0<br />
! master<br />
|-<br />
| Boehm-GC<br />
| 7.2<br />
| 7.2<br />
|<br />
|-<br />
| Cairo<br />
| 1.14<br />
| 1.14 (1.15.4 required for PDF links)<br />
| 1.16*<br />
|-<br />
| double-conversion [https://github.com/google/double-conversion]<br/>''(lib2geom dependency)''<br />
| ''(not required)''<br />
| any<br />
|<br />
|-<br />
| GDL<br />
| N/A<br />(3.4)<br />
| 3.4<br />
|<br />
|-<br />
| Glib<br />
| 2.28<br />
| 2.48<br />
| 2.56 or 2.62*<br />
|-<br />
| GTK+<br />
| 2.24<br />(3.8)<br />
| 3.22<br />
| 3.24*<br />
|-<br />
| GNU Scientific Library<br />
| ?<br />
| ?<br />
|<br />
|-<br />
| libsigc++<br />
| ''2.0.12*''<br />
| ''2.0.12*''<br />
| 2.10*<br />
|-<br />
| libSoup<br />
| ''(not required)''<br />
| (any)<br />
|<br />
|-<br />
| libpotrace<br />
| ''(not required)''<br />
| (any)<br />
|<br />
|-<br />
| libxml<br />
| ''2.6.11*''<br />
| ''2.6.11*''<br />
|<br />
|-<br />
| libxslt<br />
| ''1.0.15*''<br />
| ''1.0.15*''<br />
|-<br />
| LittleCMS<br />
| 1.13<br />
| 1.13<br />
|<br />
|-<br />
| Pango<br />
| 1.24<br />
| 1.24 (1.41.1 required for variable fonts)<br />
| 1.42*<br />
|-<br />
| Poppler<br />
| 0.20.0<br />
| 0.20.0<br />
| 0.71*<br />
|-<br />
| [https://formulae.brew.sh/formula/gtk-mac-integration gtk-mac-integration]<br>[https://www.macports.org/ports.php?by=library&substr=gtk-osx-application-gtk3 gtk-osx-application-gtk3]<br />
| N/A<br />
| 2.0.8 ([[CompilingMacOsX|macOS only]])<br />
|<br />
|}<br />
<br />
''* Tentative dependency''<br />
<br />
== Distros ==<br />
<br />
Note: This table is not relevant to (non-fink) MacOS X, where we ship the desired version with Inkscape.<br />
<br />
"Inkscape" column is default or distro version / oldest that builds - latest that builds. If no latest is given then that means trunk is expected to build on the given platform.<br />
<br />
e.g. for a distro that ships with 0.48 but should support building of trunk you might get:<br />
0.48 / 0.47-<br />
<br />
'''General rules:'''<br />
* Support last Debian Stable<br />
* Support last Ubuntu LTS<br />
* Support last CentOS/Redhat (as best effort).<br />
* Support last two Fedora releases.<br />
* Don't break ''point'' releases.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Distro<br />
! Inkscape<br />
! gcc<br />
! clang<br />
! cairo<br />
! cairomm<br />
! glib<br />
! glibmm<br />
! gtk+<br />
! gtkmm<br />
! pango<br />
! poppler<br />
! gdl<br />
! lcms2<br />
! libsigc++<br />
! libgc <!-- Fedora rpm: gc --><br />
! libsoup<br />
|-<br />
| Windows MSYS2 (2018-11-08)<br/>([https://github.com/Alexpux/MINGW-packages mingw-w64 packages] from MSYS2 project)<br />
<!-- see http://quodlibet.duckdns.org/msys2/base for list of latest package versions --><br />
| -<br />
| 8.2.0<br />
| <abbr title="compiles but fails to link due to long path issue (help welcome)">(7.0.0)</abbr><br />
| 1.16.0<br />
| 1.12.2<br />
| 2.58.1<br />
| 2.58.0<br />
| 2.24.32<br />3.24.1<br />
| 2.24.5<br />3.22.3<br />
| 1.42.4<br />
| 0.69.0<br />
| 3.28.0<br />
| 1.19<br />2.9<br />
| 2.10.1<br />
| 7.6.8<br />
| 2.64.2<br />
|-<br />
| Debian 10 (Buster, <i>stable</i>) <small>EOL 2024-06</small><br />
| 0.92.4<br />
| 8.3.0<br />
| 7.0<br />
| 1.16<br />
| 1.12.2<br />
| 2.58.3<br />
| 2.58.0<br />
| 2.24.32<br />3.24.5<br />
| 2.24.5<br />3.24.0<br />
| 1.42.4<br />
| 0.71.0<br />
| 3.28.0<br />
| 2.9<br />
| 2.10.1<br />
| 7.6.4<br />
| 2.64.2<br />
|-<br />
| style="background:Violet;"|(RHEL) / CentOS 8.1 <small>EOFS 2024-05</small><br/>Based on Centros 8.1 package list<br />
| 0.92.3<br />
| 8.3.1<br />
| 8.0.1<br />
| 1.15.12<br />
| 1.12.0<br />
| 2.56.4<br />
| 2.56.0<br />
| 2.24.32<br />3.22.30<br />
| 2.24.5<br />3.22.2<br />
| 1.42.4<br />
| 0.66.0<br />
| style="background:Violet;"|?<br />
| 2.9<br />
| 2.10.0<br />
| 7.6.4<br />
| 2.62.3<br />
|-<br />
| Ubuntu 18.04 LTS (Bionic) <small>EOL 2023-04</small><br />
| 0.92.3<br />
| 7.3<br />
| 6.0<br />
| 1.15.10<br />
| 1.12.2<br />
| 2.56.1<br />
| 2.56.0<br />
| 2.24.32<br />3.22.30<br />
| 2.24.5<br />3.22.2<br />
| 1.40.14<br />
| 0.62.0<br />
| 3.28.0<br />
| 2.9<br />
| 2.10.0<br />
| 7.4.2<br />
| 2.62.1<br />
|-<br />
| Ubuntu 19.10 (Eoan) <small>EOL 2020-07</small><br />
| 0.92.4<br />
| 9.2.1<br />
| 9.0<br />
| 1.16<br />
| 1.12.2<br />
| 2.62.1<br />
| 2.60.0<br />
| 2.24.32<br />3.24.12<br />
| 2.24.5<br />3.24.1<br />
| 1.42.4<br />
| 0.80<br />
| 3.34.0<br />
| 2.9.4<br />
| 2.10.2<br />
| 7.6.4<br />
| 2.68.2<br />
|-<br />
| Ubuntu 20.04 LTS (Focal Fossa) <small>EOL 2025-04</small><br />
| 0.92.5<br />
| 10<br />
| 10<br />
| 1.16<br />
| 1.12.2<br />
| 2.64.1<br />
| 2.64.2<br />
| 2.24.32<br />3.24.17<br />
| 2.24.5<br />3.24.2<br />
| 1.44.7<br />
| 0.86.1<br />
| 3.34.0<br />
| 2.9.4<br />
| 2.10.2<br />
| 10<br />
| 2.70.0<br />
|}<br />
<br />
{| class="wikitable"<br />
|-<br />
! Legend<br />
|-<br />
| style="background:Orange;"| Inkscape 1.0.x unsupported<br />
|-<br />
| style="background:Violet;"| GTK+ 3 builds unsupported<br />
|}<br />
<br />
* Agreed to at Saarbrücken hackfest.<br />
<br />
== Getting and Installing Source packages ==<br />
<br />
If your distro does not have some packages available (like many don't, ie, Fedora Core 2), you must often download<br />
source packages and build and install them yourself. Actually this is not that hard, and is similar to<br />
doing a Gentoo 'emerge.'<br />
<br />
* Usually you download a file with a name like somepackage-1.0.tar.gz. Unpack it with<br />
<br />
$ tar zxf somepackage-1.0.tar.gz<br />
or<br />
$ tar jxf somepackage-1.0.tar.bz2<br />
<br />
* Then 'cd' into the new directory.<br />
<br />
* Configure it with the command:<br />
<br />
$ ./configure<br />
<br />
* Build it with:<br />
<br />
$ make<br />
<br />
* As the 'root' user, install it with:<br />
<br />
# make install<br />
<br />
=== Boehm-GC ===<br />
<br />
Website: http://www.hboehm.info/gc/<br />
<br />
GitHub Project: https://github.com/ivmai/bdwgc<br />
<br />
Binaries: If searching for a package for GC, the name of it is sometimes:<br />
<br />
* gc<br />
* libgc<br />
* gc-devel<br />
* libgc-devel<br />
* boehm-gc (on Gentoo)<br />
* debian/ubuntu: sudo apt-get install libgc-dev<br />
<br />
=== libSigc++ ===<br />
<br />
Source: http://ftp.gnome.org/pub/GNOME/sources/libsigc++/2.2/libsigc++-2.2.3.tar.bz2<br />
<br />
With this file, and for GlibMM and GtkMM below, it is usually desirable for us developers to<br />
build this C++ library statically. This removes a dependency that might be difficult for an<br />
end-user during installation. Configure it with:<br />
<br />
./configure --enable-static --disable-shared<br />
<br />
=== GlibMM ===<br />
Try to match your Glib2 version with GlibMM's version. For example, if your Glib2 is 2.16.6, download glibmm-2.16.4.tar.bz2.<br />
<br />
Latest source: http://ftp.gnome.org/pub/GNOME/sources/glibmm/<br />
<br />
=== GtkMM ===<br />
Usually you can try the latest version of GtkMM, but if you get version mismatch errors, try older releases.<br />
<br />
Source: http://ftp.gnome.org/pub/GNOME/sources/gtkmm/2.12/gtkmm-2.12.7.tar.bz2<br />
<br />
=== cairomm ===<br />
<br />
if you got prompted about cairomm, try first solve your cairo version, so you can grab [http://www.cairographics.org/releases/ there] a compatible version.<br />
<br />
<br />
=== Boost ===<br />
<br />
Many users have reported when building from source that after installing the above dependencies, the configure script still requires a "boost" package. It can be found below, but even after installing, you will need to create a symlink to allow the configure script to find it:<br />
<br />
ln -s /usr/local/include/boost_1_xx_x/boost /usr/local/include/boost<br />
<br />
Source: http://www.boost.org/users/download/<br />
<br />
=== Poppler ===<br />
<br />
Source: http://poppler.freedesktop.org/<br />
<br />
Poppler is required for PDF import. There are several potential issues:<br />
* Some Linux distributions do not ship the Xpdf headers required by Inkscape. In such cases, you need to recompile Poppler, passing --enable-xpdf-headers on the configure line or install the libpoppler-private-dev package. See [https://bugs.launchpad.net/inkscape/+bug/254849 this wishlist bug]. This typically manifests in error messages like this:<br />
<pre>In file included from extension/internal/pdfinput/svg-builder.cpp:19:<br />
extension/internal/pdfinput/svg-builder.h:32:23: error: CharTypes.h: No such file or directory<br />
...<br />
make[2]: *** [extension/internal/pdfinput/svg-builder.o] Error 1<br />
make[2]: Leaving directory `/tmp/build/inkscape-0.46/src'<br />
make[1]: *** [all-recursive] Error 1<br />
make[1]: Leaving directory `/tmp/build/inkscape-0.46'<br />
make: *** [all] Error 2</pre><br />
* Inkscape 0.47 does not compile with Poppler >= 0.12.2. If you need to compile Inkscape on such systems, use the development version from Bazaar, where this bug is fixed. See [https://bugs.launchpad.net/inkscape/+bug/487038 the bug report] for details and a minimal patch.<br />
* Inkscape compiled with Poppler <= 0.12.1 will run on systems with Poppler >= 0.12.2, but the PDF import function will crash instantly. This problem does not concern Windows users, since the correct Poppler version is contained in the Windows installer package. This cannot be fixed on Inkscape's side: those two versions of Poppler are not ABI compatible, yet share the same soname. See [https://bugs.launchpad.net/inkscape/+bug/258504 this bug] for more details.<br />
* Poppler's Xpdf headers are not guaranteed to be API-compatible between releases. It's likely that future Poppler versions will break PDF import in some way. PDF import works at least up to 0.12.4 but might not work with later versions.<br />
<br />
== Optional Dependencies ==<br />
<br />
Inkscape will still compile without these, but some features may be missing if they are absent during compilation:<br />
<br />
{| class="wikitable"<br />
|-<br />
! scope="col"| Library<br />
! scope="col"| Needed for<br />
! scope="col"| Default<br />
|-<br />
|aspell<br />
|Dictionaries for spell checking<br />
|On<br />
|-<br />
|libcdr<br />
|Open Corel Draw files<br />
|On<br />
|-<br />
|gettext/msgformat<br />
|Translation support<br />
|On<br />
|-<br />
|gtest/gmock<br />
|Automatted testing<br />
|Off<br />
|-<br />
|gspell<br />
|Spell checking<br />
|On<br />
|-<br />
|imagemagick<br />
|Bitmap editing extensions, bitmap import resolution<br />
|On<br />
|-<br />
|jpeg<br />
|jpeg import?<br />
|On<br />
|-<br />
|lcms<br />
|Color management<br />
|On<br />
|-<br />
|OpenMP<br />
|Multi-threaded filter rendering<br />
|On<br />
|-<br />
|scour<br />
|Save as Optimized SVG<br />
|(not needed during compiling, Python)<br />
|-<br />
|libvisio<br />
|Open Visio Files, use Visio stencils<br />
|On<br />
|-<br />
|libwpg<br />
|Open WordPerfect Graphics<br />
|On<br />
|-<br />
|libyaml<br />
|[[Using_xverbs|xverbs command line options]]<br />
|On<br />
|-<br />
|}<br />
<br />
<br />
<br />
[[Category:About Inkscape]]<br />
[[Category:Developer Documentation]]</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Google_Summer_of_Code&diff=117513Google Summer of Code2020-02-28T15:59:00Z<p>Mc: /* The "two patches" rule */</p>
<hr />
<div><div style="max-width:70em; margin-left: auto; margin-right: auto"><br />
= Welcome to Inkscape! =<br />
<br />
For quite a few years Inkscape has been successfully participating in [http://code.google.com/soc/ Google Summer of Code].<br />
<br />
GSoC is a program where Google funds the development of specific features in open source software by university students. You don't need to be a Computer Science student to apply. Features to be developed are picked by Inkscape administrators from the pool of proposals submitted by students.<br />
<br />
We've mentored about half a dozen students a year since GSoC started. Many students enjoyed their work and continue to be involved; perhaps your mentor will be a past GSoC student! We have a high rate of acceptance of student code into the core codebase. Indeed, GSoC projects have been a key source of some of Inkscape's best features in the past several releases.<br />
<br />
If you are interested in joining us this summer, it is time to get your proposal ready. You can choose a proposal from our list of suggestions or come up with one of your own. In either either case, you '''must''' give us a detailed outline of what you plan to do. It is '''highly''' recommended that you discuss your idea as early as possible with Inkscape developers. They not only can give you guidance as you flesh out your proposal but ultimately you must convince them that you can do the work planned in the time allotted. '''If you have not discussed your proposal with Inkscape developers before you apply, your application will be rejected!'''<br />
<br />
= Student Applications =<br />
<br />
* Google program information:<br />
** [https://summerofcode.withgoogle.com/ Home page].<br />
** Summer of Code Application form. Applications open at 18:00 UTC on March 25th.<br />
<br />
* Inkscape-specific information:<br />
** [[SOC Application Template]].<br />
** [[Roadmap | Inkscape Roadmap]] - to see our overall objectives.<br />
** [[Projects | Inkscape Development Project Ideas]] - broader list of development ideas.<br />
** [[SOC Writing Project Proposals]] - some guidelines for proposals.<br />
** [[SOC Selection Criteria]] - how we rate applications.<br />
<br />
'''Student Applications for GSoC 2019 must be submitted to the GSoC site by 18:00 UTC on April 9th 2019.'''<br />
<br />
= The "two patches" rule =<br />
<br />
We require two patches from each potential GSoC student, before accepting the student for GSoC participation (it is the same requirement as for obtaining rights to commit changes to the code repository).<br />
<br />
The reason for this requirement is that you can show us that you have succeeded in building Inkscape on your PC, and that you have understood a little piece of Inkscape's code and are able to improve it. <br />
Inkscape is a large project, and you really should not try to understand all the code. Many (all?) developers know only parts of the program code!<br />
You can join our [https://inkscape.org/community/discussion/ IRC] channel or [https://chat.inkscape.org/channel/team_devel Rocket Chat] and ask developers for help.<br />
<br />
== Suggested "easy" bug fixes or improvements ==<br />
<br />
To get you started on Inkscape development, you can find (probably) easy-to-fix bugs or small improvements that require very little knowledge of the whole program by searching our [https://gitlab.com/inkscape/inkscape/issues/ bug-tracker] for bugs tagged with 'easy-fix'.<br />
<br />
= Performance Evaluation =<br />
<br />
GSoC has two formal evaluation points, at the ''mid-term'' and at the end. These evaluations determine if you receive the stipend from Google. In order to receive a pass for the evaluations you will need to show adequate progress toward your project's goals.<br />
<br />
To help you meet your goals and so that your mentor can better evaluate your progress you need to:<br />
<br />
* Have frequent, public discussions of your progress. (Don't rely on just your mentor for advice.)<br />
* Have a public Inkscape branch for your code to which you commit regularly.<br />
* Give weekly status reports.<br />
<br />
For the final pass, you will normally be required to merge your code into Inkscape trunk.<br />
<br />
Remember: ''we want you to succeed!''<br />
<br />
= Suggested Project Ideas =<br />
<br />
The following is a list of formal project suggestions, but do not feel limited to only these - some of our best contributions have been unique ideas that students had in mind from other sources!<br />
<br />
See also [[Development Project Ideas]], [[Refactoring projects]], [[Projects]], and https://blueprints.launchpad.net/inkscape/<br />
<br />
==P1. Better CSS Style Sheet Support==<br />
<br />
Enhance Inkscape's support for CSS style sheets.<br />
<br />
* Estimation of difficulty: Moderately hard<br />
* Potential mentors: Tavmjong Bah<br />
* Programming skills needed: C++<br />
* Prerequisites: Experience with CSS style sheets.<br />
<br />
<u>Detailed Description</u><br />
<br />
Inkscape has rudimentary support for CSS style sheets that can read and parse one internal style sheet. A 2016 GSoC project added a simple style dialog that can create and modify the internal style sheet. The dialog is very limited and is not intuitive to use. A 2017 GSoC project added support for CSS 3 selectors. More work has been done recently. This project will extend the usefulness of that dialog by making it more user friendly and by extending its functionality.<br />
<br />
<u>Use Cases</u><br />
<br />
* Support externally created SVGs.<br />
* Producing better SVGs for the Web.<br />
* Changing style on multiple objects at once (palettes).<br />
<br />
<u>Related Material</u><br />
<br />
* [https://www.w3.org/TR/CSS2/ CSS 2 Specification]<br />
* [https://www.w3.org/TR/css-2015/ CSS 2015 Snapshot]<br />
<br />
==P3. Slice items==<br />
[[File:Cuttool.png|200px|thumb|right|Example of result of the split using straight lines only]]<br />
Add slicing Live Path Effect (LPE)<br />
* Estimation of difficulty: Moderately hard<br />
* Potential mentors: Jabier Arraiza (Spanish, some English)<br />
* Programming skills needed: C++<br />
<br />
<u>Detailed Description</u><br /><br />
The goal is a LPE, to slice items.<br /><br />
It accept a path parameter (storing a path) as cutter.<br /><br />
The effect create pieces by the split path.<br /><br />
Can be added multiple times to add more splits.<br /><br />
We have the code of mirror symmetry LPE and rotate copies LPE as reference.<br /><br />
Also we can force or better ask to convert strokes to path previously to apply the effect (one line command, but we need advert is a destructive LPE)<br /><br />
Study generate a HTML image map definition.<br /><br />
<u>Use Cases</u><br />
* Better item slicing.<br />
* Create HTML image maps<br />
* Split a item and use for example on PNG export option export as separate objects.<br />
<br />
==P5. UI-Free Inkscape ==<br />
<br />
* Estimation of difficulty: Difficult<br />
* Potential mentors: Marc Jeanmougin<br />
* Programming skills: C++, CMake<br />
* Prerequisites: Minimal knowledge of build systems. Experience with GtkMM helpful.<br />
<br />
<u>Detailed Description</u><br />
Inkscape currently builds with X11 and gtk and a lot of graphical dependencies. But since it is allowed to run in commandline, and there are controlled environments (servers) that use it to convert svg to png and to perform actions, there should be no need to force it to build with those. The main goal of this project is to add a WITH_GUI compilation flag that when OFF, does *not* link Inkscape with any graphical dependency. While much work has been done towards this goal, much remains to be done. As a next step, Inkscape's "verbs" which are mostly GUI dependent (even if there is no reason to be) need to be converted to Gio::Actions.<br />
<br />
<br />
<u>Use cases</u><br />
* Server installs, scripts<br />
<br />
==P6. Refactoring==<br />
* Estimation of difficulty: Moderate<br />
* Potential mentors: Tavmjong Bah<br />
* Programming skills: C++<br />
* Prerequisites: proficient C++.<br />
<br />
<u>Detailed Description</u><br />
Inkscape began life as the C program Sodipodi. Sodipodi was mostly the work of one person who had a clear vision of how the code should work. A major motivation of the Inkscape fork was to allow others to easily contribute to development. This resulted in rapid development but at a cost: the code has become much messier and now lacks a clear vision. This project is to work on refactoring the code. Refactoring can take many forms. It could be creating a better directory structure with README's that describe the purpose and function of the code in each directory. This would include rewriting code to reduce dependencies across directories (which would help, for example, in achieving a headless version of Inkscape). It could be the continued transition from C to C++ which often results in major reductions in the number of code lines. Or it could be identifying and eliminating redundant code. Refactoring is an important skill of which many books have been written. Here's a chance to gain valuable experience!<br />
<br />
See https://wiki.inkscape.org/wiki/index.php/Refactoring_projects for some ideas of projects.<br />
<br />
==P7. SVG 2 Support with SVG 1.1 Fallback or Polyfills ==<br />
* Estimation of difficulty: Variable<br />
* Potential mentors: Tavmjong Bah<br />
* Programming skills: C++, JavaScript<br />
* Prerequisites: Experience in C++ and/or web development.<br />
<br />
<u>Detailed Description</u><br />
Inkscape supports a wide range of SVG 2 features. Some are supported only in rendering, some in both rendering and editing. Many of the features<br />
of SVG 2 have yet to (and may never) make it into browsers. This project is to expose more SVG 2 features in Inkscape and to ensure they can be<br />
exported to SVG 1.1 and/or supported in browsers by writing <i>polyfills</i> which implement missing functionality using JavaScript.<br />
<br />
==P8. Add Text and Image Support to Live Path Effect System ==<br />
* Estimation of difficulty: Hard<br />
* Potential mentors: Jabier Arraiza (Spanish, English(not native))<br />
* Programming skills: C++<br />
* Prerequisites: Experience managing bitmaps<br />
<u>Detailed Description</u><br />
Live Path Effects are non destructive effects applied to paths and shapes standalone or inside a group.<br /> <br />
This is done keepeng a reference to the original data to reaply when needed.<br /><br />
But ignore text and image elements.<br /><br />
Things to do:<br />
* Study add image, text, both and maybe others SVG elements to the LPE system.<br />
* Create/adapt minimun one LPE for each new type of element acepted as reference. Suggestion Perspective-Envelope.<br />
<u>Use cases</u><br />
* Apply live effects to images and text based in C++ code in a non destructive way even in groups with mixed elements types.<br />
<br />
==P9. Path Library Improvements ==<br />
* Estimation of difficulty: Hard<br />
* Potential mentors: Tavmjong Bah, KK<br />
* Programming skills: C++<br />
* Prerequisites: Strong math skills, specifically in geometry.<br />
<u>Detailed Description</u><br />
Inkscape relies on two geometry libraries for path manipulations: lib2geom and livarot. lib2geom is a generic modern library written specifically with Inkscape in mind. lib2geom is missing some functionality that Inkscape requires and that is found in livarot. This project is to move that functionality into lib2geom (or into separate files) using lib2geom path descriptions.<br />
Specifically, the functionality needed is<br />
* Path offset/inset functions.<br />
* Path simplify.<br />
* Stroke to path function.<br />
* Line scanning (used for flowing text into a shape).<br />
<br />
==P10. Your project ==<br />
* Estimation of difficulty: Variable<br />
* Potential mentors: Marc Jeanmougin<br />
* Programming skills: usually C++<br />
* Prerequisites: good ideas<br />
<br />
<u>Detailed Description</u><br />
The most successful GSoC we had in the past were students coming with their own past, use cases and ideas for Inkscape. Many basic tools like 3d cubes or connectors you can see in Inkscape now have been brought by brilliant people (like you) with ideas. If we think that your project fits with Inkscape (ie: has its place with a vector graphic editor), we can help you refining your ideas and help bring shiny new stuff to life!<br />
<br />
<u>Use cases</u><br />
* Amaze us!<br />
<br />
= Successful SOC Projects from Previous Years =<br />
* 2005<br />
** Connectors<br />
** Inkboard<br />
** [http://www.openclipart.org/ Open Clip Art Library (OCAL)] Interface<br />
** DXF Import / Export<br />
* [[Google Summer of Code 2006|2006]]<br />
** Support for SVG Filters<br />
** Filter Effects<br />
** PDF export<br />
** Inkboard Protocol Spec / Lib Conversion<br />
* [[Google Summer of Code 2007|2007]]<br />
** Text Style Improvements<br />
** PDF import<br />
** Live Path Effects<br />
** 3D Box Tool<br />
** UI for SVG Filter Effects<br />
** Raster Functionality<br />
** Importing from, and Exporting to, a remote ccHost instance<br />
* [[Google Summer of Code 2008|2008]]<br />
** SVG Fonts support<br />
** 2Geom refactoring project - port most geometry code to 2Geom<br />
** lib2geom: interactive applications showing off the power of lib2geom<br />
** Tech drawing abilities<br />
** A test suite<br />
* 2009<br />
** [[GSoC2009 Node Tool Rewrite|Node tool rewrite]]<br />
** D-Bus scripting API<br />
** Connector tool improvements<br />
** ICC/CMYK workflow<br />
* 2010<br />
** Cairo-based rendering<br />
** C++ification of SP Layer<br />
* 2011<br />
** Rendering caching<br />
** Javascript support improvements<br />
** CSS support improvements<br />
* 2012<br />
** Usibility Improvements for Guides<br />
** [[Tiling tool|On-canvas support for Tessellations]]<br />
** Creating python bindings for lib2geom<br />
* [[Google Summer of Code 2013|2013]]<br />
** Recolor Tool<br />
** Improved Units Support<br />
** Electronics CAD Support<br />
** New From Templates Dialog<br />
** New Raster to Vector Algorithm<br />
* 2014<br />
** Better Support for SVG Paints<br />
** Robust Boolean and Stroking Operations for 2Geom<br />
* 2016<br />
** [[GSoC 2016 Better data structure for selections|Better data structure for selections]]<br />
** [[Style Editor|CSS Style Sheet Editor]]<br />
* 2017<br />
** SVG 2 Text Support<br />
** Better CSS Style Sheet Support<br />
* 2019<br />
** Mesh gradient and hatches polyfills. Paint server dialog.<br />
<br />
[[Category:Developer Documentation]]<br />
</div></div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Hackfest2020_Rennes_Attendees&diff=117496Hackfest2020 Rennes Attendees2020-02-21T23:30:47Z<p>Mc: /* Who is Attending? */</p>
<hr />
<div>Other pages: [[Hackfest2020 Rennes]], [[Hackfest2020 Rennes Topics]]. <br />
<br />
== Who is Attending? ==<br />
<br />
{| class="wikitable" style="text-align: center;"<br />
|+ List of Attendees<br />
Hackfest<br />
|-<br />
! rowspan="2" | Who<br />
! rowspan="2" | Dates<br />
! rowspan="2" | Maximum Allocation<br />
! colspan="2" | Arrival<br />
! colspan="2" | Departure<br />
! rowspan="2" | Hotel<br />
|-<br />
! Date/Time<br />
! Detail<br />
! Date/Time<br />
! Detail<br />
|-<br />
| Tavmjong Bah <br />
| TBD<br />
| Per SFC Rules<br />
|<br />
| By car<br />
|<br />
| By car<br />
|<br />
|-<br />
| Cédric Gémy<br />
| <!-- dates --><br />
| Per SFC rules<br />
| <!-- arrival date + time --><br />
| <!-- arrival details, e.g. flight number --><br />
| <!-- departure date + time --><br />
| <!-- departure details, e.g. flight number --><br />
| <!-- hotel --> Local<br />
|-<br />
| Elisa de Castro Guerra<br />
| <!-- dates --><br />
| Per SFC rules<br />
| <!-- arrival date + time --><br />
| <!-- arrival details, e.g. flight number --><br />
| <!-- departure date + time --><br />
| <!-- departure details, e.g. flight number --> <br />
| <!-- hotel --> Local<br />
|-<br />
| Thomas Holder (speleo3)<br />
| TBD<br />
| TBD<br />
| <!-- arrival date + time --><br />
| Train<br />
| <!-- departure date + time --><br />
| Train<br />
| <!-- hotel --><br />
|-<br />
| Marc Jeanmougin<br />
| TBD<br />
| TBD<br />
| <!-- arrival date + time --><br />
| Train or car<br />
| <!-- departure date + time --><br />
| Train or car<br />
| <!-- hotel --><br />
|-<br />
| Sample Person<br />
| <!-- dates --><br />
| TBD<br />
| <!-- arrival date + time --><br />
| <!-- arrival details, e.g. flight number --><br />
| <!-- departure date + time --><br />
| <!-- departure details, e.g. flight number --><br />
| <!-- hotel --><br />
|-! Total<br />
!<br />
!<br />
! $ TBD<br />
!<br />
!<br />
!<br />
!<br />
!<br />
|}<br />
<br />
TBD: "To Be Determined"<br />
<br />
<!-- The Inkscape board has approved travel reimbursements of up to $2000 per person. Note: participants require the formality of a board vote. --><br />
<br />
Separate allocations for:<br />
* Inkscape dinner, participants and guests (300€).<br />
* Snacks, etc. (100€).<br />
* Venue: Free.<br />
<br />
<sup>1</sup> Requires formality of board vote.<br />
<br />
== Unconfirmed but Likely Attendees ==<br />
== Maybe ==<br />
<br />
== People to Invite ==</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Installing_Inkscape&diff=117481Installing Inkscape2020-02-16T20:34:27Z<p>Mc: /* Ubuntu Linux Development Versions */</p>
<hr />
<div>{{Other languages|en=Installing Inkscape}}<br />
<br />
This page explains how to install Inkscape, either the stable or the development version. For instructions on how to compile Inkscape from the source code, see [[Compiling Inkscape]].<br />
<br />
The latest stable version can always be found on the [https://inkscape.org/release/ Download webpage].<br />
<br />
<br />
== Installing on a Mac ==<br />
Please refer to the installation instructions at [https://inkscape.org/en/releases/ our web page for OS X downloads] and to the [https://inkscape.org/en/learn/faq/#Mac_OS_X_specific_issues section dedicated to OS X in our FAQ].<br />
<br />
<br />
== Installing on Linux ==<br />
<br />
On most Linux systems, you can use the software installer provided with your system (look for "software" in your start menu) to install Inkscape.<br />
<br />
Visit https://inkscape.org/releases to see a list of other available options and installation methods for each available version.<br />
<br />
=== Ubuntu or Debian Linux ===<br />
Probably the easiest way to install on Debian/Ubuntu is to use the apt command. <br />
<br />
Open a terminal and type;<br />
sudo apt-get update (enter)<br />
sudo apt-get install inkscape (enter)<br />
<br />
If your Ubuntu version does not have the most current Inkscape version in its repositories (yet), you can use the [https://launchpad.net/~inkscape.dev/+archive/ubuntu/stable stable ppa] to get the latest stable Inkscape release.<br />
<br />
==== Ubuntu Linux New Stable Versions ====<br />
<br />
The most recent stable version (slightly newer than what is available directly from Ubuntu) is available from our [https://launchpad.net/~inkscape.dev/+archive/ubuntu/stable/ stable PPA] for Ubuntu and derivative Linux distributions.<br />
<br />
<pre><br />
sudo add-apt-repository universe<br />
sudo add-apt-repository ppa:inkscape.dev/stable<br />
sudo apt-get update<br />
sudo apt install inkscape<br />
</pre><br />
<br />
==== Ubuntu Linux Development Versions ====<br />
<br />
Development versions (inkscape-trunk) are available from our [https://launchpad.net/~inkscape.dev/+archive/ubuntu/trunk trunk ppa] for Ubuntu and derivative Linux distributions.<br />
You just have to follow the commands at https://inkscape.org/release/inkscape-master/gnulinux/ubuntu/ppa/dl/ .<br />
<br />
'''Note:''' Development versions offer some nice new features, but can be somewhat unstable, so save often. Inexperienced users will also quite possibly have problems installing them.<br />
<br />
=== openSUSE ===<br />
<br />
openSUSE includes Inkscape in the Gnome repositories. The newest version of Inkscape releases is in Gnome:Apps.<br />
<br />
<br />
== Installing on a Windows system ==<br />
=== Stable version ===<br />
You can find the installer on the [http://www.inkscape.org/release/ download page]. Normally you want to choose "64-bit architecture" and "MSI package". Installing should be an easy step-by-step (next-next-finish) process.<br />
<br />
=== Unstable development version===<br />
First be warned. Unstable and development mean you likely will encounter crashes, usability problems and sometimes lose data. Ctrl+S will become your friend. If you cannot take this risk, please use the stable version instead.<br />
<br />
If you are still reading, you are probably one of the brave ones who wants to be on the bleeding edge. If so, follow these steps:<br />
==== 1. Download the latest build ====<br />
Follow the instructions on [https://inkscape.org/release/master/windows/ the 'master' branch download page] to download a 7zip file of the latest master (development) build. Save the file (inkscape-….7z) to your Downloads folder. <br />
<br />
==== 2. Extract the .7z archive ====<br />
Extract the archive using the [http://www.7-zip.org/ 7zip unpacker]: Open the Downloads folder in Explorer, right-click on the 7Z file and choose 7-Zip → Extract to "inkscape-....".<br />
<br />
You will get a directory which contains several files including inkscape.exe.<br />
<br />
==== 3. Run inkscape ====<br />
Run the inkscape.exe file by double clicking it. That's it. <br />
You can also drag files to inkscape.exe to have these opened.<br />
<br />
'''Don't forget:''' please help Inkscape by reporting bugs, encouraging developers or fixing bugs yourself. If you find bugs, make sure to include the version (name of the 7z file, like inkscape-)<br />
<br />
==== Multiple versions for testing ====<br />
For testing purposes it is good to be able to test multiple versions of Inkscape to find when and where some problem first appeared. For this reason you are able to store and use as many parallel versions of Inkscape as your disk has room for.<br />
<br />
<br />
[[Category:User Documentation]]</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Leadership_Committee_Status_Updates&diff=117426Leadership Committee Status Updates2020-02-07T17:29:33Z<p>Mc: /* Agenda */</p>
<hr />
<div>== Place and Time ==<br />
<br />
We meet in #inkscape-devel on [https://freenode.net/ freenode]. You can also join the [https://chat.inkscape.org/channel/team_devel #team-devel discussion channel on chat.inkscape.org] to partake in the meeting.<br />
<br />
Board meetings are typically the first Friday of each month.<br />
<br />
<em>Everybody in the Inkscape community is invited to participate.</em><br />
<br />
Next meeting: [https://www.timeanddate.com/worldclock/fixedtime.html?iso=20200207T10&p1=202 10:00 PDT/18:00 UTC/19:00 CET, (click for world clock)], Fri., Febuary 7, 2020. (Time is fixed to 10 AM Pacific Time.)<br />
<br />
Meetings should be announced in advance on [https://lists.sourceforge.net/lists/listinfo/inkscape-devel inkscape-devel] and [https://lists.sourceforge.net/lists/listinfo/inkscape-board inkscape-board] mailing lists.<br />
<br />
== Agenda ==<br />
* Hackfests<br />
** LGM/Rennes Hackfest<br />
** Next Hackfest<br />
*** Possible places:<br />
***# Boston (MIT/FSF)<br />
***# Paris (Palaiseau - Télécom ParisTech)<br />
***# Kiel<br />
***# Québec City<br />
***# Brussels (FOSDEM, 2nd & 3rd February)<br />
***# ? (GUADEC, summer)<br />
<br />
* GSoC<br />
** We've applied. (Tav/Mc)<br />
<br />
* Developer development<br />
** Books<br />
<br />
* Budget<br />
<br />
* Bug migration off Launchpad<br />
<br />
* Infrastructure<br />
** mailing list migration off SourceForge<br />
** Wiki migration off OSUOSL<br />
** Weblate service deployment<br />
<br />
* Software Release status<br />
** 2geom 1.1<br />
** Inkscape 0.92.5<br />
** Inkscape 1.0rc<br />
<br />
* Other Business<br />
<br />
* Need someone to handle escalated complaints re CoC, since Krzysztof Kosiński has resigned. Hopefully someone with training or experience with conflict resolution or mediation. Not much time needed, probably would never happen, but need to be ready just in case. Currently it's vacant.<br />
<br />
* Discuss the possibility of having something like a jobs board on the new forum. Something similar to https://forum.inkscapecommunity.com/index.php?board=12.0 Would need strict rules to prevent misuse, spam, liability, etc.<br />
<br />
* License : move from GPLv2+ to GPLv3+ -- necessary because of planned new deps and change in old deps<br />
<br />
== Other Agenda Items ==<br />
* Sponsor acceptance policy<br />
* Funded development [bryce]<br />
** Identify Manager/Reviewer/Second for each of the jobs<br />
** How should we advertise the jobs?<br />
* Outreachy: Next round starts in August [https://www.outreachy.org/mentor/]<br />
<br />
=== Action Items ===<br />
* Future hackfests<br />
** Hackfest organizational tips (Need to document this someplace)<br />
*** Process: Have folks propose options, and then trade off cost projections and benefits<br />
*** Try to organize group lodging (same hotel, rented/air-bnb house, http://www.linuxhotel.de/community.en.html, etc.)<br />
*** Send a scout ahead of time to help avoid slummy accommodations<br />
*** Catered lunches help keep everyone focused (we're already reimbursing on lunches, so cost differential isn't huge, and it saves hassle all around)<br />
*** Boots on the ground at a location can be a huge help if plans go awry<br />
*** Prefer locations with local inkscape community on the ground<br />
<br />
* [https://inkscape.org/en/support-us/funded-development/ Funded development] [bryce]<br />
* Add a C++-11 conversion project with tasks detailed to the Roadmap for 0.93 or later. [valavanisalex]<br />
* Regularly check [[Sponsors_list|sponsor status]]<br />
<br />
== Blocked Action Items ==<br />
<br />
* Privacy Policy [drmo] ~ Blocked waiting on time availability by SFC<br />
* Amend CoC reporting section ~ Waiting until we have a dedicated email, e.g. abuse@inkscape.org<br />
<br />
<br />
== Board Meeting Transcripts == <br />
<br />
=== 2019 ===<br />
<br />
* [https://alpha.inkscape.org/board/meetings/transcripts/2019-12-06.log.html 2019-12-06]<br />
* [https://alpha.inkscape.org/board/meetings/transcripts/2019-11-01.log.html 2019-11-01]<br />
* [https://alpha.inkscape.org/board/meetings/transcripts/2019-10-04.log.html 2019-10-04]<br />
* [https://alpha.inkscape.org/board/meetings/transcripts/2019-09-06.log.html 2019-09-06]<br />
* [https://alpha.inkscape.org/board/meetings/transcripts/2019-08-03.log.html 2019-08-03]<br />
* [https://alpha.inkscape.org/board/meetings/transcripts/2019-07-26.log.html 2019-07-26]<br />
* [https://alpha.inkscape.org/board/meetings/transcripts/2019-07-12.log.html 2019-07-12]<br />
* [https://alpha.inkscape.org/board/meetings/transcripts/2019-06-07.log.html 2019-06-07]<br />
* [https://alpha.inkscape.org/board/meetings/transcripts/2019-05-03.log.html 2019-05-03]<br />
* [https://alpha.inkscape.org/board/meetings/transcripts/2019-04-05.log.html 2019-04-05]<br />
* [https://alpha.inkscape.org/board/meetings/transcripts/2019-03-01.log.html 2019-03-01]<br />
* [https://alpha.inkscape.org/board/meetings/transcripts/2019-02-01.log.html 2019-02-01]<br />
* [https://alpha.inkscape.org/board/meetings/transcripts/2019-01-04.log.html 2019-01-04]<br />
<br />
=== 2018 ===<br />
<br />
* [https://alpha.inkscape.org/board/meetings/transcripts/2018-12-07.log.html 2018-12-07]<br />
* [https://alpha.inkscape.org/board/meetings/transcripts/2018-11-02.log.html 2018-11-02]<br />
* [https://alpha.inkscape.org/board/meetings/transcripts/2018-10-05.log.html 2018-10-05]<br />
* [https://alpha.inkscape.org/board/meetings/transcripts/2018-09-07.log.html 2018-09-07]<br />
* [https://alpha.inkscape.org/board/meetings/transcripts/2018-08-03.log.html 2018-08-03]<br />
* [https://alpha.inkscape.org/board/meetings/transcripts/2018-07-06.log.html 2018-07-06]<br />
* [https://alpha.inkscape.org/board/meetings/transcripts/2018-06-01.log.html 2018-06-01]<br />
* [https://alpha.inkscape.org/board/meetings/transcripts/2018-05-04.log.html 2018-05-04]<br />
* [https://alpha.inkscape.org/board/meetings/transcripts/2018-04-06.log.html 2018-04-06]<br />
* [https://alpha.inkscape.org/board/meetings/transcripts/board_meeting_2018-03-02.html 2018-03-02]<br />
* [https://inkscape.org/gallery/item/12009/ 2018-02-02]<br />
* [https://inkscape.org/gallery/item/11875/ 2018-01-05]<br />
<br />
=== 2017 ===<br />
<br />
* [https://inkscape.org/paste/11743/ 2017-12-01]<br />
* [https://inkscape.org/paste/11651/ 2017-11-03]<br />
* [https://inkscape.org/gallery/item/11517/ 2017-10-06]<br />
* [https://inkscape.org/gallery/item/11377/ 2017-09-01]<br />
* [https://inkscape.org/gallery/item/11250/ 2017-08-04]<br />
* [https://inkscape.org/gallery/item/11176/ 2017-07-07]<br />
* [https://inkscape.org/gallery/item/11064/ 2017-06-02]<br />
* [https://inkscape.org/gallery/item/10844/ 2017-04-07]<br />
* [https://inkscape.org/gallery/item/10740/ 2017-03-03]<br />
* [https://inkscape.org/gallery/item/10651/ 2017-02-03]<br />
* [https://inkscape.org/gallery/item/10582/ 2017-01-06]<br />
<br />
=== 2016 ===<br />
<br />
* [https://inkscape.org/gallery/item/10484/ 2016-12-02]<br />
* [https://inkscape.org/gallery/item/10241/ 2016-11-04]<br />
* [https://inkscape.org/gallery/item/9971/ 2016-09-02]<br />
* [https://inkscape.org/gallery/item/9864/ 2016-08-05]<br />
* [https://inkscape.org/gallery/item/9766/ 2016-07-08]<br />
* [https://inkscape.org/gallery/item/9667/ 2016-06-03]<br />
* [https://inkscape.org/gallery/item/9563/ 2016-05-06]<br />
* [https://inkscape.org/gallery/item/9565/ 2016-04-01]<br />
<br />
* [https://inkscape.org/gallery/item/7276/ 2016-01-08]<br />
<br />
=== 2015 ===<br />
<br />
* [https://inkscape.org/gallery/item/7056/ 2015-12-04]<br />
* [https://inkscape.org/gallery/item/6886/ 2015-11-06]<br />
* [https://inkscape.org/gallery/item/6701/ 2015-10-02]<br />
<br />
=== 2014 ===<br />
<br />
* [https://inkscape.org/gallery/item/2498/ 2014-11-26]<br />
* [https://inkscape.org/gallery/item/2216/ 2014-11-19]<br />
* [https://inkscape.org/gallery/item/2210/ 2014-11-12]<br />
* [https://inkscape.org/gallery/item/2204/ 2014-11-05]<br />
* [https://inkscape.org/gallery/item/1436/ 2014-10-15]<br />
* [https://inkscape.org/gallery/item/950/ 2014-10-08]<br />
* [https://inkscape.org/gallery/item/854/ 2014-09-29]<br />
* [https://inkscape.org/gallery/item/392/ 2014-09-15]<br />
<br />
'''[https://inkscape.org/en/gallery/=pastebin/?q=meeting&order=-edited Website search for all transcripts]'''</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=SOC_Application_Template&diff=117396SOC Application Template2020-01-28T13:43:18Z<p>Mc: /* Tasks */</p>
<hr />
<div>== Google Summer of Code - Student Application Template for Inkscape ==<br />
<br />
Thanks for considering Inkscape for your SoC project! To help us identifying you as a good candidate, we ask a few questions.<br />
<br />
=== Inkscape Questions ===<br />
# When did you first hear about Inkscape?<br />
# What kind of drawings do you create with Inkscape?<br />
# Describe your participation in our community (e.g. uploaded drawings, tutorials, bug reports, communication via mailing lists or IRC).<br />
# Describe your contributions to the Inkscape development (e.g. bug fixes, translations, packaging, testing).<br />
# In exactly '''two''' sentences, why should we pick '''YOU'''?<br />
<br />
=== About Yourself ===<br />
# What is your name, email address, and irc nickname?<br />
# Describe any plans you have for the summer in addition to GSoC (classes, thesis, job, vacation, etc.).<br />
# What programming projects have you completed?<br />
# What are your favorite programming tools (editor, etc.)?<br />
# Describe any work on other open-source projects.<br />
# List other GSoC projects you are applying to.<br />
<br />
=== Tasks ===<br />
# Submit a drawing you have made with Inkscape. It doesn't have to be professional quality but it should show us that you know how to use Inkscape.<br />
# Introduce yourself on the [http://lists.inkscape.org Inkscape developers mailing list], and post your project ideas for feedback, ''before'' submitting your application<br />
# [https://inkscape.org/develop/getting-started/ Checkout] the Inkscape sourcecode through git and review it. Make sure you can compile and build Inkscape on your own PC!<br />
# Find and fix two bugs in the [https://gitlab.com/inkscape/inkscape/issues Inkscape bug tracker]. Create and upload patches for the bugs, and make sure we know to connect those bug fixes and your GSoC application. You can alternatively submit a patch that improves code unrelated to a bug.<br />
# Prepare a detailed plan (with timetable) of the work you want to do.</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Tracking_Dependencies&diff=116156Tracking Dependencies2019-09-17T22:26:15Z<p>Mc: </p>
<hr />
<div>== Overview ==<br />
<br />
We need help getting our basic lib dependencies listed out and kept up to date. Also we need to track which versions of which distros have the needed dependencies.<br />
<br />
To get glib and GTK+ dependencies figured out, people can go through the API documentation and look for the 'since' entries saying when calls were added. Then look for those calls in our source. Voila! we'll have base minimum dependencies figured out.<br />
<br />
== Compilers ==<br />
<br />
For C++11 features, see [[C++11]]<br />
<br />
=== gcc ===<br />
=== clang ===<br />
<br />
== Libs ==<br />
<br />
C++ bindings are not included, since their required versions match those of the C counterparts. Versions in parentheses refer to the dependencies for experimental Gtk+ 3 builds.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Library<br />
! v 0.92<br />
! master<br />
|-<br />
| Boehm-GC<br />
| 7.2<br />
| 7.2<br />
|-<br />
| Cairo<br />
| 1.10<br />
| 1.10 (1.15.4 required for PDF links)<br />
|-<br />
| double-conversion [https://github.com/google/double-conversion]<br/>''(lib2geom dependency)''<br />
| ''(not required)''<br />
| any<br />
|-<br />
| GDL<br />
| N/A<br />(3.4)<br />
| 3.4<br />
|-<br />
| Glib<br />
| 2.28<br />
| 2.48<br />
|-<br />
| GTK+<br />
| 2.24<br />(3.8)<br />
| 3.22<br />
|-<br />
| GNU Scientific Library<br />
| ?<br />
| ?<br />
|-<br />
| libsigc++<br />
| ''2.0.12*''<br />
| ''2.0.12*''<br />
|-<br />
| libSoup<br />
| ''(not required)''<br />
| (any)<br />
|-<br />
| libpotrace<br />
| ''(not required)''<br />
| (any)<br />
|-<br />
| libxml<br />
| ''2.6.11*''<br />
| ''2.6.11*''<br />
|-<br />
| libxslt<br />
| ''1.0.15*''<br />
| ''1.0.15*''<br />
|-<br />
| LittleCMS<br />
| 1.13<br />
| 1.13<br />
|-<br />
| Pango<br />
| 1.24<br />
| 1.24 (1.41.1 required for variable fonts)<br />
|-<br />
| Poppler<br />
| 0.20.0<br />
| 0.20.0<br />
|-<br />
| [https://formulae.brew.sh/formula/gtk-mac-integration gtk-mac-integration]<br>[https://www.macports.org/ports.php?by=library&substr=gtk-osx-application-gtk3 gtk-osx-application-gtk3]<br />
| N/A<br />
| 2.0.8 ([[CompilingMacOsX|macOS only]])<br />
|}<br />
<br />
''* Tentative dependency''<br />
<br />
== Distros ==<br />
<br />
Note: This table is not relevant to (non-fink) MacOS X, where we ship the desired version with Inkscape.<br />
<br />
"Inkscape" column is default or distro version / oldest that builds - latest that builds. If no latest is given then that means trunk is expected to build on the given platform.<br />
<br />
e.g. for a distro that ships with 0.48 but should support building of trunk you might get:<br />
0.48 / 0.47-<br />
<br />
'''General rules:'''<br />
* Support Debian Stable<br />
* Support Ubuntu LTS<br />
* Support last CentOS/Redhat (as best effort).<br />
* Support last two Fedora releases.<br />
* Don't break ''point'' releases.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Distro<br />
! Inkscape<br />
! gcc<br />
! clang<br />
! cairo<br />
! cairomm<br />
! glib<br />
! glibmm<br />
! gtk+<br />
! gtkmm<br />
! pango<br />
! poppler<br />
! gdl<br />
! lcms<br />
! libsigc++<br />
! libgc <!-- Fedora rpm: gc --><br />
! libsoup<br />
|-<br />
| Windows MSYS2 (2018-11-08)<br/>([https://github.com/Alexpux/MINGW-packages mingw-w64 packages] from MSYS2 project)<br />
<!-- see http://quodlibet.duckdns.org/msys2/base for list of latest package versions --><br />
| -<br />
| 8.2.0<br />
| <abbr title="compiles but fails to link due to long path issue (help welcome)">(7.0.0)</abbr><br />
| 1.16.0<br />
| 1.12.2<br />
| 2.58.1<br />
| 2.58.0<br />
| 2.24.32<br />3.24.1<br />
| 2.24.5<br />3.22.3<br />
| 1.42.4<br />
| 0.69.0<br />
| 3.28.0<br />
| 1.19<br />2.9<br />
| 2.10.1<br />
| 7.6.8<br />
| 2.64.2<br />
|-<br />
| Debian 9 (Stretch, <i>old stable</i>) <small>EOL 2022-06</small><br />
| 0.92.1<br />
| 6.3.0<br />
| 3.8<br />
| 1.14.8<br />
| 1.12.0<br />
| 2.50.3<br />
| 2.50.0<br />
| 2.24.31<br />3.22.11<br />
| 2.24.5<br />3.22.0<br />
| 1.40.5<br />
| 0.48.0<br />
| 3.22.0<br />
| 2.8<br />
| 2.10.0<br />
| 7.4.2<br />
| 2.56.0<br />
|-<br />
| Debian 10 (Buster, <i>stable</i>) <small>EOL 2024-06</small><br />
| 0.92.4<br />
| 8.3.0<br />
| 7.0<br />
| 1.16<br />
| 1.12.2<br />
| 2.58.3<br />
| 2.58.0<br />
| 2.24.32<br />3.24.5<br />
| 2.24.5<br />3.24.0<br />
| 1.42.4<br />
| 0.71.0<br />
| 3.28.0<br />
| 2.9<br />
| 2.10.1<br />
| 7.6.4<br />
| 2.64.2<br />
|-<br />
| style="background:Violet;"|RHEL / CentOS 7.4 <small>EOFS 2019-Q4</small><br />
| 0.48<br />
| 4.8.3<br />
| X <br />
| 1.12.14<br />
| 1.10.0<br />
| 2.40.0<br />
| 2.36.2<br />
| 2.24.22<br />3.22.10<br />
| 2.24.2<br />3.22.0<br />
| 1.34.1<br />
| 0.22.5<br />
| style="background:Violet;"|X<br />
| 2.5.4<br />
| 2.3.1<br />
| 7.2d<br />
|-<br />
| style="background:Violet;"|RHEL / CentOS 8 <small>EOFS 2024-05</small><br />
| 0.92.4<br />
| 9.1.0<br />
| X <br />
| ?<br />
| ?<br />
| ?<br />
| ?<br />
| ?<br />3.24.10<br />
| ?<br />?<br />
| ?<br />
| ?<br />
| style="background:Violet;"|?<br />
| ?<br />
| ?<br />
| ?<br />
| ?<br />
|-<br />
| style="background:Orange; | Ubuntu 16.04 LTS (Xenial) <small>EOL 2021-04</small><br />
| 0.91.0<br />
| 5.3.1<br />
| 3.8<br />
| 1.14.6<br />
| 1.12.0<br />
| 2.48.0<br />
| 2.46.3<br />
| style="background:Orange; | 2.24.30<br />3.18.9<br />
| style="background:Orange; | 2.24.4<br />3.18.0<br />
| 1.38.1<br />
| 0.41.0<br />
| 3.18.0<br />
| 2.6<br />
| 2.6.2<br />
| 7.4.2<br />
| 2.52.2<br />
|-<br />
| Ubuntu 18.04 LTS (Bionic) <small>EOL 2023-04</small><br />
| -<br />
| 7.3<br />
| 6.0<br />
| 1.15.10<br />
| 1.12.2<br />
| 2.56.1<br />
| 2.56.0<br />
| 2.24.32<br />3.22.30<br />
| 2.24.5<br />3.22.2<br />
| 1.40.14<br />
| 0.62.0<br />
| 3.26.0?<br />
| 2.9<br />
| 2.10.0<br />
| 7.4.2<br />
| 2.62.1<br />
|-<br />
| Ubuntu 18.10 (Cosmic) <small>EOL 2019-07</small><br />
| -<br />
| 8.2<br />
| 6.0?<br />
| 1.15.12<br />
| 1.12.2<br />
| 2.58.1<br />
| 2.56.0<br />
| 2.24.31<br />3.24.1<br />
| 2.24.5<br />3.24.1<br />
| 1.42.4<br />
| 0.68.0<br />
| 3.26.0?<br />
| 2.9<br />
| 2.10.0<br />
| 7.6.4<br />
| 2.64.1<br />
|-<br />
| Ubuntu 19.04 (Disco) <small>EOL 2020-01</small><br />
|}<br />
<br />
{| class="wikitable"<br />
|-<br />
! Legend<br />
|-<br />
| style="background:Red;"| Inkscape stable unsupported<br />
|-<br />
| style="background:Orange;"| Inkscape trunk unsupported<br />
|-<br />
| style="background:Violet;"| GTK+ 3 builds unsupported<br />
|}<br />
<br />
* Agreed to at Saarbrücken hackfest.<br />
<br />
== Getting and Installing Source packages ==<br />
<br />
If your distro does not have some packages available (like many don't, ie, Fedora Core 2), you must often download<br />
source packages and build and install them yourself. Actually this is not that hard, and is similar to<br />
doing a Gentoo 'emerge.'<br />
<br />
* Usually you download a file with a name like somepackage-1.0.tar.gz. Unpack it with<br />
<br />
$ tar zxf somepackage-1.0.tar.gz<br />
or<br />
$ tar jxf somepackage-1.0.tar.bz2<br />
<br />
* Then 'cd' into the new directory.<br />
<br />
* Configure it with the command:<br />
<br />
$ ./configure<br />
<br />
* Build it with:<br />
<br />
$ make<br />
<br />
* As the 'root' user, install it with:<br />
<br />
# make install<br />
<br />
=== Boehm-GC ===<br />
<br />
Website: http://www.hboehm.info/gc/<br />
<br />
GitHub Project: https://github.com/ivmai/bdwgc<br />
<br />
Binaries: If searching for a package for GC, the name of it is sometimes:<br />
<br />
* gc<br />
* libgc<br />
* gc-devel<br />
* libgc-devel<br />
* boehm-gc (on Gentoo)<br />
* debian/ubuntu: sudo apt-get install libgc-dev<br />
<br />
=== libSigc++ ===<br />
<br />
Source: http://ftp.gnome.org/pub/GNOME/sources/libsigc++/2.2/libsigc++-2.2.3.tar.bz2<br />
<br />
With this file, and for GlibMM and GtkMM below, it is usually desirable for us developers to<br />
build this C++ library statically. This removes a dependency that might be difficult for an<br />
end-user during installation. Configure it with:<br />
<br />
./configure --enable-static --disable-shared<br />
<br />
=== GlibMM ===<br />
Try to match your Glib2 version with GlibMM's version. For example, if your Glib2 is 2.16.6, download glibmm-2.16.4.tar.bz2.<br />
<br />
Latest source: http://ftp.gnome.org/pub/GNOME/sources/glibmm/<br />
<br />
=== GtkMM ===<br />
Usually you can try the latest version of GtkMM, but if you get version mismatch errors, try older releases.<br />
<br />
Source: http://ftp.gnome.org/pub/GNOME/sources/gtkmm/2.12/gtkmm-2.12.7.tar.bz2<br />
<br />
=== cairomm ===<br />
<br />
if you got prompted about cairomm, try first solve your cairo version, so you can grab [http://www.cairographics.org/releases/ there] a compatible version.<br />
<br />
<br />
=== Boost ===<br />
<br />
Many users have reported when building from source that after installing the above dependencies, the configure script still requires a "boost" package. It can be found below, but even after installing, you will need to create a symlink to allow the configure script to find it:<br />
<br />
ln -s /usr/local/include/boost_1_xx_x/boost /usr/local/include/boost<br />
<br />
Source: http://www.boost.org/users/download/<br />
<br />
=== Poppler ===<br />
<br />
Source: http://poppler.freedesktop.org/<br />
<br />
Poppler is required for PDF import. There are several potential issues:<br />
* Some Linux distributions do not ship the Xpdf headers required by Inkscape. In such cases, you need to recompile Poppler, passing --enable-xpdf-headers on the configure line or install the libpoppler-private-dev package. See [https://bugs.launchpad.net/inkscape/+bug/254849 this wishlist bug]. This typically manifests in error messages like this:<br />
<pre>In file included from extension/internal/pdfinput/svg-builder.cpp:19:<br />
extension/internal/pdfinput/svg-builder.h:32:23: error: CharTypes.h: No such file or directory<br />
...<br />
make[2]: *** [extension/internal/pdfinput/svg-builder.o] Error 1<br />
make[2]: Leaving directory `/tmp/build/inkscape-0.46/src'<br />
make[1]: *** [all-recursive] Error 1<br />
make[1]: Leaving directory `/tmp/build/inkscape-0.46'<br />
make: *** [all] Error 2</pre><br />
* Inkscape 0.47 does not compile with Poppler >= 0.12.2. If you need to compile Inkscape on such systems, use the development version from Bazaar, where this bug is fixed. See [https://bugs.launchpad.net/inkscape/+bug/487038 the bug report] for details and a minimal patch.<br />
* Inkscape compiled with Poppler <= 0.12.1 will run on systems with Poppler >= 0.12.2, but the PDF import function will crash instantly. This problem does not concern Windows users, since the correct Poppler version is contained in the Windows installer package. This cannot be fixed on Inkscape's side: those two versions of Poppler are not ABI compatible, yet share the same soname. See [https://bugs.launchpad.net/inkscape/+bug/258504 this bug] for more details.<br />
* Poppler's Xpdf headers are not guaranteed to be API-compatible between releases. It's likely that future Poppler versions will break PDF import in some way. PDF import works at least up to 0.12.4 but might not work with later versions.<br />
<br />
== Optional Dependencies ==<br />
<br />
Inkscape will still compile without these, but some features may be missing if they are absent during compilation:<br />
<br />
{| class="wikitable"<br />
|-<br />
! scope="col"| Library<br />
! scope="col"| Needed for<br />
! scope="col"| Default<br />
|-<br />
|aspell<br />
|Dictionaries for spell checking<br />
|On<br />
|-<br />
|libcdr<br />
|Open Corel Draw files<br />
|On<br />
|-<br />
|gettext/msgformat<br />
|Translation support<br />
|On<br />
|-<br />
|gtest/gmock<br />
|Automatted testing<br />
|Off<br />
|-<br />
|gtkspell<br />
|Spell checking<br />
|On<br />
|-<br />
|imagemagick<br />
|Bitmap editing extensions, bitmap import resolution<br />
|On<br />
|-<br />
|jpeg<br />
|jpeg import?<br />
|On<br />
|-<br />
|lcms<br />
|Color management<br />
|On<br />
|-<br />
|OpenMP<br />
|Multi-threaded filter rendering<br />
|On<br />
|-<br />
|scour<br />
|Save as Optimized SVG<br />
|(not needed during compiling, Python)<br />
|-<br />
|libvisio<br />
|Open Visio Files, use Visio stencils<br />
|On<br />
|-<br />
|libwpg<br />
|Open WordPerfect Graphics<br />
|On<br />
|-<br />
|libyaml<br />
|[[Using_xverbs|xverbs command line options]]<br />
|On<br />
|-<br />
|}<br />
<br />
<br />
<br />
[[Category:About Inkscape]]<br />
[[Category:Developer Documentation]]</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Tracking_Dependencies&diff=115961Tracking Dependencies2019-08-22T18:45:13Z<p>Mc: </p>
<hr />
<div>== Overview ==<br />
<br />
We need help getting our basic lib dependencies listed out and kept up to date. Also we need to track which versions of which distros have the needed dependencies.<br />
<br />
To get glib and GTK+ dependencies figured out, people can go through the API documentation and look for the 'since' entries saying when calls were added. Then look for those calls in our source. Voila! we'll have base minimum dependencies figured out.<br />
<br />
== Compilers ==<br />
<br />
For C++11 features, see [[C++11]]<br />
<br />
=== gcc ===<br />
=== clang ===<br />
<br />
== Libs ==<br />
<br />
C++ bindings are not included, since their required versions match those of the C counterparts. Versions in parentheses refer to the dependencies for experimental Gtk+ 3 builds.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Library<br />
! v 0.92<br />
! trunk<br />
|-<br />
| Boehm-GC<br />
| 7.2<br />
| 7.2<br />
|-<br />
| Cairo<br />
| 1.10<br />
| 1.10 (1.15.4 required for PDF links)<br />
|-<br />
| double-conversion [https://github.com/google/double-conversion]<br/>''(lib2geom dependency)''<br />
| ''(not required)''<br />
| ?<br />
|-<br />
| GDL<br />
| N/A<br />(3.4)<br />
| 3.4<br />
|-<br />
| Glib<br />
| 2.28<br />
| 2.48<br />
|-<br />
| GTK+<br />
| 2.24<br />(3.8)<br />
| 3.22<br />
|-<br />
| GNU Scientific Library<br />
| ?<br />
| ?<br />
|-<br />
| libsigc++<br />
| ''2.0.12*''<br />
| ''2.0.12*''<br />
|-<br />
| libSoup<br />
| ''(not required)''<br />
| (any)<br />
|-<br />
| libpotrace<br />
| ''(not required)''<br />
| (any)<br />
|-<br />
| libxml<br />
| ''2.6.11*''<br />
| ''2.6.11*''<br />
|-<br />
| libxslt<br />
| ''1.0.15*''<br />
| ''1.0.15*''<br />
|-<br />
| LittleCMS<br />
| 1.13<br />
| 1.13<br />
|-<br />
| Pango<br />
| 1.24<br />
| 1.24 (1.41.1 required for variable fonts)<br />
|-<br />
| Poppler<br />
| 0.20.0<br />
| 0.20.0<br />
|-<br />
| [https://formulae.brew.sh/formula/gtk-mac-integration gtk-mac-integration]<br>[https://www.macports.org/ports.php?by=library&substr=gtk-osx-application-gtk3 gtk-osx-application-gtk3]<br />
| N/A<br />
| 2.0.8 ([[CompilingMacOsX|macOS only]])<br />
|}<br />
<br />
''* Tentative dependency''<br />
<br />
== Distros ==<br />
<br />
Note: This table is not relevant to (non-fink) MacOS X, where we ship the desired version with Inkscape.<br />
<br />
"Inkscape" column is default or distro version / oldest that builds - latest that builds. If no latest is given then that means trunk is expected to build on the given platform.<br />
<br />
e.g. for a distro that ships with 0.48 but should support building of trunk you might get:<br />
0.48 / 0.47-<br />
<br />
'''General rules:'''<br />
* Support Debian Stable<br />
* Support Ubuntu LTS<br />
* Support last CentOS/Redhat (as best effort).<br />
* Support last two Fedora releases.<br />
* Don't break ''point'' releases.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Distro<br />
! Inkscape<br />
! gcc<br />
! clang<br />
! cairo<br />
! cairomm<br />
! glib<br />
! glibmm<br />
! gtk+<br />
! gtkmm<br />
! pango<br />
! poppler<br />
! gdl<br />
! lcms<br />
! libsigc++<br />
! libgc <!-- Fedora rpm: gc --><br />
! libsoup<br />
|-<br />
| Windows MSYS2 (2018-11-08)<br/>([https://github.com/Alexpux/MINGW-packages mingw-w64 packages] from MSYS2 project)<br />
<!-- see http://quodlibet.duckdns.org/msys2/base for list of latest package versions --><br />
| -<br />
| 8.2.0<br />
| <abbr title="compiles but fails to link due to long path issue (help welcome)">(7.0.0)</abbr><br />
| 1.16.0<br />
| 1.12.2<br />
| 2.58.1<br />
| 2.58.0<br />
| 2.24.32<br />3.24.1<br />
| 2.24.5<br />3.22.3<br />
| 1.42.4<br />
| 0.69.0<br />
| 3.28.0<br />
| 1.19<br />2.9<br />
| 2.10.1<br />
| 7.6.8<br />
| 2.64.2<br />
|-<br />
| Debian 9 (Stretch, <i>old stable</i>) <small>EOL 2022-06</small><br />
| 0.92.1<br />
| 6.3.0<br />
| 3.8<br />
| 1.14.8<br />
| 1.12.0<br />
| 2.50.3<br />
| 2.50.0<br />
| 2.24.31<br />3.22.11<br />
| 2.24.5<br />3.22.0<br />
| 1.40.5<br />
| 0.48.0<br />
| 3.22.0<br />
| 2.8<br />
| 2.10.0<br />
| 7.4.2<br />
| 2.56.0<br />
|-<br />
| Debian 10 (Buster, <i>stable</i>) <small>EOL 2024-06</small><br />
| 0.92.4<br />
| 8.3.0<br />
| 7.0<br />
| 1.16<br />
| 1.12.2<br />
| 2.58.3<br />
| 2.58.0<br />
| 2.24.32<br />3.24.5<br />
| 2.24.5<br />3.24.0<br />
| 1.42.4<br />
| 0.71.0<br />
| 3.28.0<br />
| 2.9<br />
| 2.10.1<br />
| 7.6.4<br />
| 2.64.2<br />
|-<br />
| style="background:Violet;"|RHEL / CentOS 7.4 <small>EOFS 2019-Q4</small><br />
| 0.48<br />
| 4.8.3<br />
| X <br />
| 1.12.14<br />
| 1.10.0<br />
| 2.40.0<br />
| 2.36.2<br />
| 2.24.22<br />3.22.10<br />
| 2.24.2<br />3.22.0<br />
| 1.34.1<br />
| 0.22.5<br />
| style="background:Violet;"|X<br />
| 2.5.4<br />
| 2.3.1<br />
| 7.2d<br />
|-<br />
| style="background:Violet;"|RHEL / CentOS 8 <small>EOFS 2024-05</small><br />
| 0.92.4<br />
| 9.1.0<br />
| X <br />
| ?<br />
| ?<br />
| ?<br />
| ?<br />
| ?<br />3.24.10<br />
| ?<br />?<br />
| ?<br />
| ?<br />
| style="background:Violet;"|?<br />
| ?<br />
| ?<br />
| ?<br />
| ?<br />
|-<br />
| style="background:Orange; | Ubuntu 16.04 LTS (Xenial) <small>EOL 2021-04</small><br />
| 0.91.0<br />
| 5.3.1<br />
| 3.8<br />
| 1.14.6<br />
| 1.12.0<br />
| 2.48.0<br />
| 2.46.3<br />
| style="background:Orange; | 2.24.30<br />3.18.9<br />
| style="background:Orange; | 2.24.4<br />3.18.0<br />
| 1.38.1<br />
| 0.41.0<br />
| 3.18.0<br />
| 2.6<br />
| 2.6.2<br />
| 7.4.2<br />
| 2.52.2<br />
|-<br />
| Ubuntu 18.04 LTS (Bionic) <small>EOL 2023-04</small><br />
| -<br />
| 7.3<br />
| 6.0<br />
| 1.15.10<br />
| 1.12.2<br />
| 2.56.1<br />
| 2.56.0<br />
| 2.24.32<br />3.22.30<br />
| 2.24.5<br />3.22.2<br />
| 1.40.14<br />
| 0.62.0<br />
| 3.26.0?<br />
| 2.9<br />
| 2.10.0<br />
| 7.4.2<br />
| 2.62.1<br />
|-<br />
| Ubuntu 18.10 (Cosmic) <small>EOL 2019-07</small><br />
| -<br />
| 8.2<br />
| 6.0?<br />
| 1.15.12<br />
| 1.12.2<br />
| 2.58.1<br />
| 2.56.0<br />
| 2.24.31<br />3.24.1<br />
| 2.24.5<br />3.24.1<br />
| 1.42.4<br />
| 0.68.0<br />
| 3.26.0?<br />
| 2.9<br />
| 2.10.0<br />
| 7.6.4<br />
| 2.64.1<br />
|-<br />
| Ubuntu 19.04 (Disco) <small>EOL 2020-01</small><br />
|}<br />
<br />
{| class="wikitable"<br />
|-<br />
! Legend<br />
|-<br />
| style="background:Red;"| Inkscape stable unsupported<br />
|-<br />
| style="background:Orange;"| Inkscape trunk unsupported<br />
|-<br />
| style="background:Violet;"| GTK+ 3 builds unsupported<br />
|}<br />
<br />
* Agreed to at Saarbrücken hackfest.<br />
<br />
== Getting and Installing Source packages ==<br />
<br />
If your distro does not have some packages available (like many don't, ie, Fedora Core 2), you must often download<br />
source packages and build and install them yourself. Actually this is not that hard, and is similar to<br />
doing a Gentoo 'emerge.'<br />
<br />
* Usually you download a file with a name like somepackage-1.0.tar.gz. Unpack it with<br />
<br />
$ tar zxf somepackage-1.0.tar.gz<br />
or<br />
$ tar jxf somepackage-1.0.tar.bz2<br />
<br />
* Then 'cd' into the new directory.<br />
<br />
* Configure it with the command:<br />
<br />
$ ./configure<br />
<br />
* Build it with:<br />
<br />
$ make<br />
<br />
* As the 'root' user, install it with:<br />
<br />
# make install<br />
<br />
=== Boehm-GC ===<br />
<br />
Website: http://www.hboehm.info/gc/<br />
<br />
GitHub Project: https://github.com/ivmai/bdwgc<br />
<br />
Binaries: If searching for a package for GC, the name of it is sometimes:<br />
<br />
* gc<br />
* libgc<br />
* gc-devel<br />
* libgc-devel<br />
* boehm-gc (on Gentoo)<br />
* debian/ubuntu: sudo apt-get install libgc-dev<br />
<br />
=== libSigc++ ===<br />
<br />
Source: http://ftp.gnome.org/pub/GNOME/sources/libsigc++/2.2/libsigc++-2.2.3.tar.bz2<br />
<br />
With this file, and for GlibMM and GtkMM below, it is usually desirable for us developers to<br />
build this C++ library statically. This removes a dependency that might be difficult for an<br />
end-user during installation. Configure it with:<br />
<br />
./configure --enable-static --disable-shared<br />
<br />
=== GlibMM ===<br />
Try to match your Glib2 version with GlibMM's version. For example, if your Glib2 is 2.16.6, download glibmm-2.16.4.tar.bz2.<br />
<br />
Latest source: http://ftp.gnome.org/pub/GNOME/sources/glibmm/<br />
<br />
=== GtkMM ===<br />
Usually you can try the latest version of GtkMM, but if you get version mismatch errors, try older releases.<br />
<br />
Source: http://ftp.gnome.org/pub/GNOME/sources/gtkmm/2.12/gtkmm-2.12.7.tar.bz2<br />
<br />
=== cairomm ===<br />
<br />
if you got prompted about cairomm, try first solve your cairo version, so you can grab [http://www.cairographics.org/releases/ there] a compatible version.<br />
<br />
<br />
=== Boost ===<br />
<br />
Many users have reported when building from source that after installing the above dependencies, the configure script still requires a "boost" package. It can be found below, but even after installing, you will need to create a symlink to allow the configure script to find it:<br />
<br />
ln -s /usr/local/include/boost_1_xx_x/boost /usr/local/include/boost<br />
<br />
Source: http://www.boost.org/users/download/<br />
<br />
=== Poppler ===<br />
<br />
Source: http://poppler.freedesktop.org/<br />
<br />
Poppler is required for PDF import. There are several potential issues:<br />
* Some Linux distributions do not ship the Xpdf headers required by Inkscape. In such cases, you need to recompile Poppler, passing --enable-xpdf-headers on the configure line or install the libpoppler-private-dev package. See [https://bugs.launchpad.net/inkscape/+bug/254849 this wishlist bug]. This typically manifests in error messages like this:<br />
<pre>In file included from extension/internal/pdfinput/svg-builder.cpp:19:<br />
extension/internal/pdfinput/svg-builder.h:32:23: error: CharTypes.h: No such file or directory<br />
...<br />
make[2]: *** [extension/internal/pdfinput/svg-builder.o] Error 1<br />
make[2]: Leaving directory `/tmp/build/inkscape-0.46/src'<br />
make[1]: *** [all-recursive] Error 1<br />
make[1]: Leaving directory `/tmp/build/inkscape-0.46'<br />
make: *** [all] Error 2</pre><br />
* Inkscape 0.47 does not compile with Poppler >= 0.12.2. If you need to compile Inkscape on such systems, use the development version from Bazaar, where this bug is fixed. See [https://bugs.launchpad.net/inkscape/+bug/487038 the bug report] for details and a minimal patch.<br />
* Inkscape compiled with Poppler <= 0.12.1 will run on systems with Poppler >= 0.12.2, but the PDF import function will crash instantly. This problem does not concern Windows users, since the correct Poppler version is contained in the Windows installer package. This cannot be fixed on Inkscape's side: those two versions of Poppler are not ABI compatible, yet share the same soname. See [https://bugs.launchpad.net/inkscape/+bug/258504 this bug] for more details.<br />
* Poppler's Xpdf headers are not guaranteed to be API-compatible between releases. It's likely that future Poppler versions will break PDF import in some way. PDF import works at least up to 0.12.4 but might not work with later versions.<br />
<br />
== Optional Dependencies ==<br />
<br />
Inkscape will still compile without these, but some features may be missing if they are absent during compilation:<br />
<br />
{| class="wikitable"<br />
|-<br />
! scope="col"| Library<br />
! scope="col"| Needed for<br />
! scope="col"| Default<br />
|-<br />
|aspell<br />
|Dictionaries for spell checking<br />
|On<br />
|-<br />
|libcdr<br />
|Open Corel Draw files<br />
|On<br />
|-<br />
|gettext/msgformat<br />
|Translation support<br />
|On<br />
|-<br />
|gtest/gmock<br />
|Automatted testing<br />
|Off<br />
|-<br />
|gtkspell<br />
|Spell checking<br />
|On<br />
|-<br />
|imagemagick<br />
|Bitmap editing extensions, bitmap import resolution<br />
|On<br />
|-<br />
|jpeg<br />
|jpeg import?<br />
|On<br />
|-<br />
|lcms<br />
|Color management<br />
|On<br />
|-<br />
|OpenMP<br />
|Multi-threaded filter rendering<br />
|On<br />
|-<br />
|scour<br />
|Save as Optimized SVG<br />
|(not needed during compiling, Python)<br />
|-<br />
|libvisio<br />
|Open Visio Files, use Visio stencils<br />
|On<br />
|-<br />
|libwpg<br />
|Open WordPerfect Graphics<br />
|On<br />
|-<br />
|libyaml<br />
|[[Using_xverbs|xverbs command line options]]<br />
|On<br />
|-<br />
|}<br />
<br />
<br />
<br />
[[Category:About Inkscape]]<br />
[[Category:Developer Documentation]]</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Release_notes/1.0&diff=115696Release notes/1.02019-07-03T23:37:08Z<p>Mc: /* Import / Export */</p>
<hr />
<div>{{Other languages|en=Release_notes/1.0}}<br />
<br />
== Inkscape 1.0 ==<br />
<br />
'''(definitely not released yet - [[AnnouncePlanning1.0]])'''<br />
<br />
== Release highlights ==<br />
<br />
Released on '''«YYYY-MM-DD»'''.<br />
<br />
[Please fill in]<br />
<br />
* Theming support<br />
* Origin in top left corner (optional)<br />
* Canvas rotation and mirroring<br />
* On-Canvas alignment of objects<br />
* Better HiDPI screen support<br />
* Control width of PowerStroke with pressure sensitive graphics tablet<br />
* Fillet/chamfer LPE and (lossless) Boolean Operation LPE<br />
* New PNG export options<br />
* Path operations and deselection of a large number of paths are much faster now<br />
* Variable fonts (only if compiled with pango library version >= 1.41.1)<br />
* Native support for macOS<br />
<br />
== Important changes ==<br />
<br />
=== For users ===<br />
<br />
==== Custom Icon Sets ====<br />
<br />
Icon sets no longer consist of a single file containing all icons. Instead each icon is allocated it's own file. The directory structure must follow the standard structure for Gnome icons.<br />
<br />
If you would like to create or convert your own icon set to the new format, please see the 'hicolor' and 'Tango' icon theme folders, in your Inkscape installation 'share' directory for suitable examples.<br />
<br />
As a side effect of a bug fix to the icon preview dialog (see below), custom UI icon SVG files need to be updated to have their background color alpha channel set to 0 so that they display correctly (see Bug #[https://bugs.launchpad.net/inkscape/+bug/1661989 1661989]).<br />
<br />
==== Third-party extensions ====<br />
<br />
Third-party extensions need to be updated to work with this version of Inkscape.<br />
<br />
==== Import/Export via UniConvertor dropped ====<br />
<br />
Extensions that previously used the UniConvertor library for saving/opening various file formats have been removed:<br />
<br />
Import formats that have been removed:<br />
<br />
* Adobe Illustrator 8.0 and below (UC) (*.ai)<br />
* Corel DRAW Compressed Exchange files (UC) (*.ccx)<br />
* Corel DRAW 7-X4 files (UC) (*.cdr) [cdr imports, but this specific version?]<br />
* Corel DRAW 7-13 template files (UC) (*.cdt)<br />
* Computer Graphics Metafile files (UC) (*.cgm)<br />
* Corel DRAW Presentation Exchange files (UC) (*.cmx)<br />
* HP Graphics Language Plot file [AutoCAD] (UC) (*.plt)<br />
* sK1 vector graphics files (UC) (*.sk1)<br />
<br />
Export formats that have been removed:<br />
<br />
* HP Graphics Language Plot file [AutoCAD] (UC) (*.plt)<br />
* sK1 vector graphics files (UC) (*.sk1)<br />
<br />
==== Inline LaTeX formula conversion dropped ====<br />
<br />
The [https://www.julienvitard.eu/en/eqtexsvg_en.html EQTeXSVG extension] (Render > LaTeX) that could be used to convert an inline LaTeX equation into SVG paths using Python was dropped, due to its external dependencies.<br />
<br />
=== For extension writers ===<br />
<br />
''[TBC - not final]''<br />
Extensions have undergone some fundamental changes. <br />
Inkscape's stock extensions have been moved to [https://gitlab.com/inkscape/extensions their own repository] and were updated for compatibility with Python 3. Internally, extensions have been reorganized and many functions have been deprecated.<br />
<br />
''[Extension manager? How-to-guide for updating? New API elements? Documentation?]''<br />
<br />
Instructions for updating old extensions are available at [[Updating your Extension for 1.0]]<br />
<br />
Also note the changed [[#Command Line|command line options]].<br />
<br />
* Inkscape now adds itself to search path on startup, so you should always be able to call it from your extension by simply calling <code>inkscape</code>, without the need to add it to search path manually, or worrying about other potentially incompatible versions of Inkscape being available on search path.<br />
* Extensions were updated to be compatible with Python 3. While we'll be migrating away from Python 2, extension writers should aim for support of Python 2.7 and Python 3.5+ for maximum compatibility.<br />
* Windows packages now ship with Python 3 (currently Python 3.7). Python 2 is not bundled anymore, so make sure to update your extension to be compatible.<br />
* The folder structure of Windows packages was updated: Binaries were moved from the installation root to <code>bin/</code>, Inkscape's shared files where moved from <code>share/</code> to a <code>share/inkscape</code> subfolder.<br />
<br />
=== For packagers and those who compile Inkscape ===<br />
<br />
* autotools builds have been dropped. Please use CMake for building Inkscape from now on. More info is available [https://inkscape.org/develop/getting-started/#092-onwards on our website].<br />
* libsoup dependency added: we use libsoup for making http requests without a need for dbus and gvfs.<br />
* double-conversion [https://github.com/google/double-conversion] dependency added: lib2geom now depends on an external version of the library.<br />
* Inkscape now uses a git submodule for the extensions directory. If you have cloned the repository and are not building from the release source code tarball, please note the [https://inkscape.org/en/develop/getting-started/ updated build instructions]<br />
* On Ubuntu 18.04, Gnome's fallback icon set (package 'adwaita-icon-theme-full'), that is needed to display Inkscape's default icons completely, is no longer automatically installed. It has been added as a 'recommends' level dependency.<br />
* lib2geom: [insert up-to-date info here]<br />
* The environment variable <code>INKSCAPE_PORTABLE_PROFILE_DIR</code> has been removed. Please use the equivalent <code>INKSCAPE_PROFILE_DIR</code> instead for changing the location of the profile directory at run time. (see also [https://gitlab.com/inkscape/inkscape/issues/114 #114])<br />
<br />
== General: Application ==<br />
<br />
=== Performance ===<br />
Several small performance improvements in various areas combine to make Inkscape run smoother than before (e.g. MR [https://gitlab.com/inkscape/inkscape/merge_requests/448 #448]).<br />
<br />
=== Mac Application ===<br />
<br />
Inkscape is now a first-rate native macOS application, and no longer requires XQuartz to operate. <br />
<br />
It has a standard Mac-style menu bar (rather than a menu bar within the window). Keyboard shortcuts now use the command (⌘) key rather than the control key. Retina display screen resolution is now supported. The build is now cleanly 64-bit, a prerequisite for MacOS 10.15 Catalina and beyond.<br />
<br />
[[File:Mac_menu_1.0_screenshot.png|665px]]<br />
<br />
== General User Interface ==<br />
<br />
=== Modernized GUI Toolkit ===<br />
<br />
The user interface has been changed to utilise a more recent version of GTK+. This is the widget toolkit that Inkscape makes use of to draw the user interface on the screen. This new version brings many improvements, especially for users of HiDPI screens. Bringing the newer GTK+ toolkit to Inkscape has been an eagerly anticipated goal for a long time. It has taken much effort by the Team involved, it was a focus point of the [https://inkscape.org/en/news/2018/05/22/2018-boston-inkscape-hackfest/ Boston Hackfest].<br />
<br />
=== Window position / size ===<br />
<br />
Improvements and fixes to the code for handling/restoring window size and position [https://gitlab.com/inkscape/inkscape/merge_requests/180]<br />
. The window manager handles most of the jobs now, which should make it much more robust. If you still encounter problems with this, please report those to our bug tracker.<br />
<br />
=== HiDPI ===<br />
<br />
Inkscape now supports HiDPI screens.<br />
<br />
=== Icons ===<br />
[Please fill in]<br />
<br />
=== Y Axis Inversion ===<br />
<br />
During the [https://inkscape.org/en/news/2018/09/20/inkscape-hackfest-kiel-2018-what-happened/ Inkscape Hackfest in Kiel], a significant change by Thomas Holder was integrated into the Inkscape codebase. It allows the User to optionally set the origin of their document to the top left corner of the page. This finally makes the coordinates that a User can see in the interface match the ones that are saved in the SVG data (unit conversions/transformations may be required), and makes working in Inkscape more comfortable for people who are used to this more standard behavior.<br />
<br />
<br />
<gallery><br />
File:Origin in upper left.png|''Option in the preferences' 'Interface' section''|alt=Option in the preferences' 'Interface' section<br />
File:Origin in upper left page.png|''Effect of the option (left upper page corner at 0/0)''|alt=Effect of the option (left upper page corner at 0/0)<br />
</gallery><br />
<br />
=== Improved number entry fields ===<br />
<br />
Many numeric entry fieds no longer change their value when scrolling while the mouse is hovering over them. They now need to be selected (clicked into). Then scrolling will change the value as previously. This change was made, because scrolling docked dialogs easily led to accidental change of values.<br />
<br />
Additionally, <kbd>Ctrl+Scroll</kbd> on a selected numeric entry field will now change the value in larger steps.<br />
<br />
== Canvas ==<br />
<br />
=== Canvas Rotation ===<br />
<br />
With <kbd>Ctrl+Shift+Scroll wheel</kbd> the drawing area can be rotated and viewed from different angles. In the bottom right corner of the Window, the viewing angle can be entered manually. Right-click to select between a set of preset values. Keyboard shortcuts for clockwise/counter-clockwise/no rotation can be set in the preferences.<br />
<br />
<br />
[[File:Canvas rotation.gif]]<br />
<br />
=== Canvas Mirroring ===<br />
<br />
The canvas can now be flipped, to ensure that the drawing does not lean to one side, and looks good either way.<br />
The vertical/horizontal flipping is available from the menu View > Canvas orientation > Flip horizontally / Flip vertically. Keyboard shortcuts for flipping the canvas can be set in the preferences (Edit > Preferences > Interface > Keyboard shortcuts).<br />
<br />
[[File:Flip canvas 300px.gif]]<br />
<br />
=== Pinch-to-zoom ===<br />
<br />
On supported hardware (trackpad, touchpad, multi-touch screen), the canvas can be zoomed with the two-finger pinch gesture.<br />
<br />
=== Duplicate Guides ===<br />
<br />
A new option for duplicating guides was added to the 'Guideline' dialog. This new feature, when used in conjunction with the 'relative change' option (dialog needs to be opened twice), makes it easier to create guides that are offset by a certain distance / angle from an existing guide.<br />
<br />
[[File:Duplicate guide.png]]<br />
<br />
== View ==<br />
<br />
=== Visible Hairlines Display Mode ===<br />
<br />
This new display mode is available in the menu under "View > Display Mode > Visible Hairlines". It ensures that all lines of nonzero width are visible (with a minimum visible line width), regardless of zoom level, while still drawing everything else normally.<br />
<br />
This is especially useful for some CNC machines like laser cutters and vinyl cutters which use hairlines to denote cut lines.<br />
<br />
[[File:visible_hairlines.gif]]<br />
<br />
<br />
=== Outline Display Mode ===<br />
<br />
This new display mode is available in the menu under "View > Display Mode > Outline". It hides fills and shows only the outlines of objects, with a consistent-width black line that is visible at any level of zoom. <br />
<br />
This is especially useful when using Inkscape for CAD purposes.<br />
<br />
<br />
=== Center view on page ===<br />
<br />
You can now center the view on the page, without changing the zoom level.<br />
<br />
This function is available via:<br />
<br />
* ''View → Zoom''<br />
* Zoom tool tool controls<br />
* Keyboard shortcut <kbd>[TBD]</kbd><br />
<br />
=== Split View Mode ===<br />
<br />
[needs images + text]<br />
<br />
== Paths ==<br />
<br />
=== Changed behavior of Stroke to Path ===<br />
<br />
The 'Stroke to Path' command now not only converts the stroke of a shape to path, but effectively splits it into its components.<br />
<br />
In the case of applying it to a path that only has a stroke, the behavior is unchanged.<br />
<br />
For paths that don't only have a stroke, but also a fill and/or markers, the result will be a group consisting of:<br />
* Stroke outline turned to path<br />
* Fill (if there was one)<br />
* A group of all markers (if applicable; one group per marker, consisting of its outline and its fill turned into a path)<br />
<br />
[[File:Stroke to path.gif]]<br />
<br />
=== Unlinking Clones for Path Operations ===<br />
<br />
Clones and Symbols are now automatically unlinked, before a Boolean operation (union, difference, etc.), or one of the Path operations 'Combine', 'Break apart', or 'Stroke to Path' is performed.<br />
<br />
A setting in the preferences at ''Behavior → Clones → Unlink Clones'' allows the User to disable the automatic unlinking.<br />
<br />
== Tools ==<br />
<br />
=== Calligraphy Tool ===<br />
<br />
A new option to add dots has been added to the tool. Click in place without moving the mouse to create a dot, Shift+Click to create a larger dot ''[needs documentation in keyboard shortcut list]''.<br />
<br />
=== Circle Tool ===<br />
<br />
The circle tool can now also create closed ("filleted") circle shapes (closed arcs) with the click of a button.<br />
<br />
<gallery><br />
File:Circle chord.png|''Circle tool shapes in this release''|alt=Circle tool shapes in this release<br />
</gallery><br />
<br />
=== Eraser === <br />
<br />
New option to erase as clip, which allows the User to non-destructively erase (parts of) various types of elements, including raster images and clones.<br />
<br />
[[File:Erase with clip.gif]]<br />
<br />
=== Measurement Tool ===<br />
<br />
Hovering over a path with the tool now displays the length, height, width and position of the path. If you hover over a group, it will show the width, height and position of the group. Holding Shift switches to showing info about the constituents of the group.<br />
<br />
The tool also has a new option to only measure selected objects when using click-and-drag.<br />
<br />
<gallery><br />
File:Measure tool info.png|''New info text from measurement tool (for a group)''|alt=New info text from measurement tool (for a group)<br />
File:Measure tool info group shift.png|''Measurement tool info text for a single path (in a group with Shift)''|alt=Measurement tool info text for a single path (in a group with Shift)<br />
File:Measure selected.png|''Measuring only the selected object (the ice cap)''|alt=Measuring only the selected object (the ice cap)<br />
</gallery><br />
<br />
=== Pencil Tool ===<br />
<br />
==== PowerPencil ====<br />
<br />
Pressure sensitivity can now be enabled for the Pencil tool. This feature makes use of the PowerStroke Live Path Effect (LPE).<br />
<br />
New settings for the tool are available for tweaking the behavior of the PowerStroke LPE when it is being created with the Pencil tool (and a graphics tablet/stylus):<br />
* '''Use pressure input''' (in the tool controls bar): activates the PowerStroke feature, if a pressure sensitive device is available.<br />
* '''Min/Max''' (in the tool controls bar): determines the minimal and maximal stroke width (0 to 100%). This does not change the number of available pressure levels, but spreads them out in the available line width interval.<br />
* Additionally, the PowerStroke LPE itself has been improved, to better work when used in this new way, see [[#PowerStroke_LPE_Improvements|the section about LPE updates]].<br />
* '''Pressure change for new knot''' (in the global Inkscape preferences, Edit > Preferences > Tools > Pencil): adds a PowerStroke Knot when the stylus pressure changes by this percentage.<br />
<br />
''[needs video/gif]''<br />
<br />
=== Selection Tool ===<br />
<br />
==== On-Canvas Alignment ====<br />
<br />
When the option "Enable on-canvas alignment" is active in the "Align and Distribute" dialog, a new set of handles will appear on canvas when an object is clicked three times (first click: scale handles, second click: rotation/skew handles).<br />
<br />
The handles can be used to align the selected objects relative to the area of the current selection.<br />
<br />
* Shift + click on the outer handles aligns on the outside of the selection area. <br />
* Clicking on the central handle will align the selected objects on the horizontal axis. On Shift + click objects will be aligned on the vertical axis.<br />
* [Ctrl (+ Shift )... 'treat objects as group' - Fixme]<br />
<br />
<br />
[[File:Align-handles opt.gif|''On-canvas alignment''|alt=On-canvas alignment]]<br />
<br />
=== Text Tool ===<br />
<br />
* [describe new line-height settings]<br />
* [describe new text column mode]<br />
* [describe new flowed text compatibility with other viewers and fallbacks]<br />
<br />
==== Variable Font Support ====<br />
<br />
If Inkscape has been compiled with a Pango library version that is at least 1.41.1, it comes with [[Variable Fonts support | support for variable fonts]] ([https://www.patreon.com/posts/font-variations-17644963 more info about how this looks]. These are fonts that do not come with different faces, but often with various sliding scales for different font properties, like 'boldness', or 'condensing', or even playful features.<br />
<br />
==== Basic Support for SVG in OpenType ====<br />
<br />
Some OpenType fonts with glyphs saved as SVG render now in Inkscape.<br />
<br />
<gallery><br />
File:Variable fonts Decovar.png|''Variable font - both texts use the same font (Decovar)''|alt=Variable font - both texts use the same font (Decovar)<br />
File:SVG in OpenType.png|''SVG Color font (Gilbert Color)''|alt=SVG Color font (Gilbert Color)<br />
</gallery><br />
<br />
==== Support for SVG 2 Text ====<br />
<br />
Inkscape supports SVG 2 text (multi-line and text in a shape), both rendering and creating. When creating SVG 2 text, Inkscape will (by default) add fallback support for rendering the text in SVG 1.1 renderers (important as no browsers currently fully support SVG 2 text).<br />
<br />
There are several types of SVG 2 text:<br />
<br />
===== Multi-line text via the CSS 'white-space' property =====<br />
<br />
The CSS property [https://developer.mozilla.org/en-US/docs/Web/CSS/white-space 'white-space'] controls how white space is handled. By default, SVG collapses all adjacent white-space including newlines into a single space. By setting the 'white-space' value to 'pre', 'pre-line', or 'pre-wrap', Inkscape will respect newlines and generate multi-line text. At the moment, one must use the XML Editor dialog to change the 'white-space' property value. (Supported by Firefox.)<br />
<br />
===== Multi-line text via the CSS 'inline-size' property =====<br />
<br />
The CSS property 'inline-size' defines the width (height) of a block of horizontal (vertical) text.<br />
Inkscape supports both rendering and generating multi-line text via this property. To set the inline-size one drags the diamond-shaped handle that is located on the text baseline at the end of a line of text. To convert the text back to SVG 1.1 text, Ctrl-click on the diamond (this will result in all the text being placed on a single line).<br />
<br />
===== Multi-line text via the CSS 'shape-inside' property =====<br />
<br />
The CSS property 'shape-inside' allows placing text inside a shape. Inkscape supports this property in both rendering and creating. Inkscape also supports in rendering the CSS 'shape-subtract', 'shape-margin', and 'shape-padding' properties. To put text inside a shape, select the shape(s) and the text and use the 'Text > Flow into frame' menu entry (after enabling ''Use SVG 2 auto-flowed text'' under the "Tools > Text" section of the Inkscape Preferences dialog). Inkscape will (optionally) insert SVG 1.1 fallback attributes on saving the file.<br />
<br />
Multi-line text via the 'shape-inside' property is a direct replacement for SVG 1.2 flowed text. SVG 1.2 never became a final W3C standard and only the Batik SVG renderer besides Inkscape provided any support for SVG 1.2 flowed text. SVG 2 is not yet a final W3C standard but SVG 2 flowed text has one very important advantage over SVG 1.2 flowed text in that it is easy to structure the SVG 2 text such that it will be rendered (almost) correctly by an SVG 1.1 renderer. This means that browsers which do not support SVG 2 text will still render the text. One disadvantage of using SVG 2 text is that it will not be editable as multi-line text in Inkscape 0.92 (it will still be editable as single lines of text).<br />
<br />
== Clipping / Masking ==<br />
<br />
Clip paths and masks now have an inverse mode in the menu, using the PowerClip and PowerMask LPEs.<br />
<br />
[[File:Inverse clip 400.gif]]<br />
<br />
== Filters ==<br />
<br />
The size of the filter region can now be adjusted by dragging on two new diamond-shaped nodes with the node tool. This is especially useful for blur filters, whose area has been affected by a transformation of the filtered object.<br />
<br />
[[File:Filter region.gif]]<br />
<br />
== Live Path Effects ==<br />
<br />
=== General ===<br />
<br />
Live Path Effects received a major overhaul, with lots of improvements and new features. The main changes are:<br />
<br />
* '''Set default parameters''': default values for any LPE can be set in the respective LPE's dialogue, when it is applied to an object<br />
(''Note: we have the 'multiple desktop preferences' problem here: If you have multiple Inkscape windows open, the last one will determine what will be saved to the preferences file, as preferences changes are only saved when Inkscape is closed, and the settings are only loaded from file when a new window is opened.'')<br />
* '''Clip and Mask''': improved handling<br />
* '''Fix multiple LPE BBox''': a problem with the size of the bounding box when applying multiple LPEs to an object has been fixed<br />
* '''Knots on shapes''': show edit knots in LPE shapes<br />
* '''Switch knots''': change the handles to the correct LPE handles when one selects an LPE in the list of active LPEs for the selected object.<br />
<br />
<br />
In addition to this, the LPE list is now made available as a searchable dialog with an icon for each path effect, and options to favorite, display info about the selected effect and to apply it.<br />
<br />
<gallery><br />
File:LPE set defaults.png|''Set default values for Mirror LPE''|alt=Set default values for Mirror LPE<br />
File:Add LPE dialog.png|''New LPE selection dialog''|alt=New LPE selection dialog<br />
</gallery><br />
<br />
<br />
=== Boolean Operations LPE ===<br />
<br />
''[The Boolean Operations LPE finally makes non-destructive boolean operations available in Inkscape. It works by adding the LPE to a path, then linking a copied path to it by clicking on the 'link to path' button. That way, two [more?] paths can be combined to a single shape, and both are still editable. Available options:<br />
<br />
* union<br />
* symmetric difference<br />
* intersection<br />
* division<br />
* difference<br />
* cut outside<br />
* cut inside<br />
* cut<br />
''] functionality incomplete currently, does not hide linked operand, see https://gitlab.com/inkscape/inkscape/merge_requests/20#note_100799480''<br />
<br />
<gallery><br />
File:Boolops LPE.png|''Boolean Operations LPE''|alt=Boolean Operations LPE<br />
</gallery><br />
<br />
=== BSPline and Spiro ===<br />
<br />
Improvements in Pen/Pencil mode. With "Alt", you can move the previous node.<br />
<br />
=== 'Clone Original' Improvements ===<br />
<br />
This path effect now allows various objects instead of only paths and is even more powerful.<br />
<br />
[https://www.youtube.com/watch?v=JAJAxKNY8lA Demo Video]<br />
<br />
[https://ia601501.us.archive.org/34/items/00003303/0000-3303.ogv Demo Video]<br />
<br />
=== Dash Stroke LPE ===<br />
<br />
This new LPE creates uniformly dashed paths, optionally by subdividing the path's segments, or including dashes that are symmetrically wrapped around corners.<br />
<br />
<gallery><br />
File:Dash stroke LPE.png|''Rectangles with dash stroke LPE with various settings''|alt=Rectangles with dash stroke LPE with various settings<br />
</gallery><br />
<br />
[https://archive.org/details/dash-stroke-lpe Demo Video]<br />
<br />
=== Ellipse from Points ===<br />
<br />
This new LPE creates an optimally fitted ellipse from a path's nodes.<br />
<br />
In contrast to the already existing LPE "Ellipse by 5 points" this LPE is more flexible (since, depending on the number of points available, it can fit both circles and ellipses) and has more features. Especially technical illustrators can benefit from these features.<br />
<br />
See [[LPE:_Ellipse_from_Points]] for a documentation.<br />
<br />
<gallery><br />
File:Ellipse from points LPE.png|''Ellipse (5 nodes), circle (3 nodes), circle segment (3 nodes), isometric circle (3 nodes), isometric circle with frame (3 nodes)''|alt=Ellipse (5 nodes), circle (3 nodes), circle segment (3 nodes), isometric circle (3 nodes), isometric circle with frame (3 nodes)<br />
</gallery><br />
<br />
=== Embroidery Stitch LPE ===<br />
<br />
This new LPE can add nodes to your paths and create jump stitches, to create data that can be converted for use with a stitching machine.<br />
To view the stitches that you added, activate the 'Show stitches' checkbox, and, if necessary, adjust the 'Show stitch gap' value, so you can see the single stitches.<br />
<br />
There are various options for calculating the order of the stitching, for connecting the parts of the drawing and 3 different stitch patterns available. It is suggested to play around with these until you like the result.<br />
<br />
For exporting your data, you can, for example, use the HPGL file format and go from there.<br />
<br />
<gallery><br />
File:Embroidery stitch lpe.png|''Inkscape Logo with Embroidery LPE (stitches made visible)''|alt=Inkscape Logo with Embroidery LPE (stitches made visible)<br />
File:Embroidery stitch lpe options.png|''Available options: left: methods to order subpaths, right: methods to connect end points of subpaths''|alt=Options: left: methods to order subpaths, right: methods to connect end points of subpaths<br />
</gallery><br />
<br />
=== Fill Between Many / Fill Between Strokes LPE ===<br />
<br />
New options added:<br />
<br />
* Fuse coincident points: [describe]<br />
* Join subpaths: fill each path separately / connect all the fills<br />
* Close: close the fill path that is created, so it can have a stroke on all sides<br />
* LPEs on linked: take the applied live path effects of the filled paths into account (Fill Between Many only)<br />
<br />
<br />
<gallery><br />
File:Fill between many new options.png|''New options for the Fill Between Many LPE''|alt=New options for the Fill Between Many LPE<br />
</gallery><br />
<br />
=== Fillet/Chamfer LPE ===<br />
<br />
This new LPE adds fillet and chamfer to paths. Also adds a new internal class that allows to handle extra info per node, the LPE itself is an example of use the new classes.<br />
<br />
[https://www.youtube.com/watch?v=wJKzGhJULfc Demo video]<br />
<br />
<gallery><br />
File:Chamfer lpe.png|''Chamfer with LPE''|alt=Chamfer by LPE<br />
File:Chamfer with steps.png|''Chamfer with 2 steps''|alt=Chamfer with 2 steps<br />
File:Inverse chamfer with steps.png|''Inverse Chamfer with 2 steps''|alt=Inverse Chamfer with 2 steps<br />
File:Fillet lpe.png|''Fillet with LPE''|alt=Fillet with LPE<br />
File:Inverse fillet lpe.png|''Inverse fillet with LPE''|alt=Inverse fillet with LPE<br />
</gallery><br />
<br />
=== Knot LPE ===<br />
<br />
New options added:<br />
<br />
* Inverse: use the stroke width of the other path as basis for calculating the gap length<br />
* Add stroke width: make the gap wider by adding the width of the stroke to the value for the gap length<br />
* Add bottom (other?) stroke width: make the gap wider by adding the width of the bottom (other?) stroke to the value for the gap length<br />
* Crossing signs: [not final]<br />
<br />
=== Measure Segments LPE ===<br />
<br />
This new path effect adds DIN and custom style measuring lines to "straight" segments in a path.<br />
<br />
[https://www.youtube.com/watch?v=ppgt2GPm1IY Demo video]<br />
<br />
<gallery><br />
File:Measure segment LPE.png|''Measure Segments LPE''|alt=Measure Segments LPE<br />
</gallery><br />
<br />
=== Mirror Symmetry and Rotate Copies LPE===<br />
<br />
* Split feature: This new feature allows custom styles for each part of the resulting drawing without unlinking the LPE. [https://www.youtube.com/watch?v=mIzrQ2lpzuw Demo Video]<br />
* The LPE display now updates accordingly when there are objects added or removed.<br />
<br />
<gallery><br />
File:Rotate copies LPE with style split.png|''Separate styles for rotated copies''|alt=Separate styles for rotated copies<br />
</gallery><br />
<br />
=== Path Length LPE ===<br />
<br />
This path effect displays the length of the path it is applied to in the selected unit and scale.<br />
<br />
=== Power Clip and Power Mask LPE ===<br />
<br />
This new LPE adds options to clips and masks.<br />
<br />
<br />
=== PowerStroke LPE Improvements ===<br />
<br />
* '''Width scale''' setting added: adjust the overall width of the stroke after it has been drawn.<br />
* '''Closed paths''': PowerStroke now works much better on closed paths.<br />
<br />
== Import / Export ==<br />
<br />
=== Linking and embedding SVG files ===<br />
<br />
On import of an SVG file, there is now a dialog that asks if the user would like to link to the SVG file, to embed it (base64 encoded) into an <img> tag, or if the objects in the SVG file should be imported into the document (which was how Inkscape handled importing SVG files previously). <br />
<br />
''[ TBC: The dpi value for displaying embedded SVG files can be set in the import dialog.]''<br />
<br />
This makes importing SVG files work (almost) the same as importing raster images.<br />
<br />
<br />
The 'Embed' and 'Extract' options in the context menu for linked SVG files work the same as they do for raster images. The 'Edit externally' option will open the linked SVG file with Inkscape per default. This setting can be changed in the preferences' 'Imported Images' section.<br />
<br />
The displaying of the dialogue can be disabled by checking the 'Don't ask me again' option.<br />
<br />
Linked and embedded SVG images are displayed as their raster representations. <br />
<br />
The resolution used for displaying them ''[TBC: can be set per image? can be set in the xxx dialog for the selected image]'' is the default image import resolution set in the preferences' 'Imported Images' section. A change in this option will take effect upon closing and reopening the file, and will affect all linked SVG images in the file.<br />
<br />
=== Export PNG images ===<br />
<br />
The export dialog has received several new options which are available when you expand the 'Advanced' section.<br />
<br />
* Enable interlacing (ADAM7): when loading images, they will be displayed faster<br />
* Bit depth: set the number of bits that code for the color of a pixel, supports grayscale and up to 16bit<br />
* Compression type: choose strength of lossless compression<br />
* pHYs dpi: force-set a dpi value for the image<br />
* Antialiasing: choose type of antialiasing or disable it<br />
* The option for "Cairo PNG" has been removed from the "Save as" dialog, as it was often confused with the "Export PNG image" option, but only supported a small subset of PNG rendering features.<br />
<br />
<br />
<gallery><br />
File:Png-export-options 1.0.png|''PNG export options''|alt=PNG export options<br />
File:Bit depth options 1.0.png|''PNG bit depth options''|alt=PNG bit depth options<br />
File:Compression options 1.0.png|''PNG compression options''|alt=PNG compression options<br />
File:Antialiasing options 1.0.png|''PNG antialiasing options''|alt=PNG antialiasing options<br />
</gallery><br />
<br />
=== Export PDF Links ===<br />
<br />
* SVG external links are now kept when exported to pdf.<br />
<br />
== Extensions ==<br />
<br />
=== Extension development ===<br />
<br />
* All [[INX Parameters]] now have the common attribute <code>indent="n"</code> where <code>n</code> specifies the level of indentation in the extension UI.<br />
<br />
* New effect extension attribute <code>implements-custom-gui</code> is [http://wiki.inkscape.org/wiki/index.php/INX_extension_descriptor_format#Attributes_description available] to hide the 'Extension is working' dialog.<br />
<br />
* Add <code>appearance="url"</code> for [[INX Parameters]] of type "description". You can now add clickable links to your extension UI.<br />
<br />
=== Plot extension ===<br />
<br />
The new option 'Convert objects to paths' will take care of converting everything to a path non-destructively before the data is sent to the plotter. [''gives wrong error message, maybe not working? https://gitlab.com/inkscape/inkscape/commit/dd3b6aa099175e2244e1e04dde45bf21a966425e#note_100908512'']<br />
<br />
=== Interactive Mockup extension ===<br />
<br />
[Please fill in]<br />
<br />
=== Hershey Text extension ===<br />
<br />
The "Hershey Text" extension, a utility for replacing text by stroke-based paths, has been rewritten.<br />
The most significant improvements are:<br />
<br />
* The new version converts all or only the selected text objects in place. This means that it is possible to convert text with paragraphs and to convert multiple text objects at once.<br />
* It now uses '''SVG fonts'''. This means that:<br />
** It is now possible to easily add and use '''custom stroke fonts'''.<br />
** '''Unicode characters''' are now supported.<br />
** Stroke fonts now support '''arbitrary curves''' rather than only straight segments.<br />
* '''Improved font selection''' with basic international characters<br />
* Automatted '''font-mapping''': each text will be converted to the available Hershey font with the same font file name (e.g. 'Fancy Font.svg') as the current font (e.g. 'Fancy Font'), if one is available to the extension. The automatted mapping overrides any other Hershey font settings.<br />
* An option to '''generate font samples''' in all available SVG fonts is available.<br />
* An '''extensive help text''' is built into the extension.<br />
* Hershey Text is now located in the ''Extensions > Text'' submenu.<br />
<br />
<br />
<gallery><br />
File:Hershey font table.png|''Hershey font table (with non-ASCII characters)''|alt=Hershey font table (with non-ASCII characters)<br />
</gallery><br />
<br />
== Palettes ==<br />
<br />
* The Munsell palette has been added to Inkscape's set of stock palettes.<br />
* Users can now also drag the 'none' color field from the palette bar at the bottom onto objects to set their color to 'none'.<br />
<br />
<gallery><br />
File:Munsell palette.png|''Munsell palette''|alt=Munsell palette<br />
</gallery><br />
<br />
== Templates ==<br />
<br />
* The '''Desktop''' template has new options for 4k, 5k and 8k screens.<br />
* A new template for an A4 3-fold roll flyer was added.<br />
<br />
<gallery><br />
File:Desktop templates.png|''New template options for 'Desktop' template''|alt=New template options for 'Desktop' template<br />
File:A4 3fold roll template.png|''New A4 3-fold roll flyer template''|alt=New A4 3-fold roll flyer template<br />
</gallery><br />
<br />
== SVG and CSS ==<br />
<br />
* '''Dashes''': Inkscape can now load and display files with dashes and/or dash offsets defined in units other than the unitless user unit (e.g. %, mm) correctly. There is no user interface for editing these values currently, except for the XML editor. Values for <code>stroke-dasharray</code> that are entered in other units (except for %) will be converted to user units when the new values are set.<br />
<br />
* [Please fill in]<br />
<br />
== Dialogs ==<br />
<br />
=== Document Properties ===<br />
<br />
* When resizing the page, the page margin fields can now be locked, so the same value will be used for all margins, but only needs to be entered once.<br />
* The guides panel now has controls to lock or unlock all guides, create guides around the page, and delete all guides. These actions also appear on the Edit menu, making it possible to assign custom keyboard shortcuts.<br />
* Grids can now be aligned to the corners, edge midpoints, or centre of the page with a button click in the grids panel.<br />
* Checkerboard patterns can now have a color (pending issue with updating the view: https://gitlab.com/inkscape/inkscape/issues/101#note_148034598). This color will also be used as a (non-checkered) background for PNG export.<br />
<br />
<gallery><br />
File:Lock margins doc props.png|''Lock to set same margins for page resizing''|alt=Lock to set same margins for page resizing<br />
File:New guide options doc props.png|''Document properties: Toggle guide lock for document, create page border guides, remove all guides''|alt=Document properties: Toggle guide lock for document, create page border guides, remove all guides<br />
File:Grid alignment doc props.png|''Grid alignment options in document properties''|alt=Grid alignment options in document properties<br />
File:Colorful checkerboard.png|''Checkerboard background with color''|alt=Checkerboard background with color<br />
</gallery><br />
<br />
=== Filter Editor ===<br />
<br />
* The filter primitives now have a symbolic icon (one whose color can be changed).<br />
<br />
=== Objects ===<br />
<br />
The context (right-click) menu now also contains an entry for deleting the selected object.<br />
<br />
=== Preferences ===<br />
<br />
* The '''Bitmaps''' subsection has been renamed to '''Imported Images''', as it now applies to both imported (embedded or linked) raster images as well as to imported (embedded or linked) SVG images (i.e. to everything in <img> tags).<br />
* The '''System''' subsection lists more relevant folders and offers buttons to open those folders with the system's file browser. This makes it easier to find the correct folder, e.g. for resetting the preferences or for adding an extension or a new icon set.<br />
* The '''System''' subsection now has a button for quickly resetting all Inkscape preferences.<br />
* An option for '''scaling a stroke's dash pattern when scaling the stroke width''' has been added and can be found at ''Behaviour → Dashes''. It is activated by default.<br />
* '''Autosave''' is now enabled by default. The default directory has changed (the path is displayed in Edit > Preferences > Input/Output > Autosave: Autosave directory).<br />
* The '''Keyboard shortcut editor''' now issues a warning when the entered shortcut is already in use.<br />
<br />
<gallery><br />
File:Open folders from preferences.png|''Important folders can be opened from the preferences''|alt=Important folders can be opened from the preferences<br />
</gallery><br />
<br />
=== Symbols ===<br />
<br />
* The Symbols dialog can now handle a lot of symbols without delay on startup, and also allows searching. Symbols and symbol sets are now displayed in alphabetical order.<br />
<br />
<gallery><br />
File:Symbols list.png|''Symbol sets ordered alphabetically''|alt=Symbol sets ordered alphabetically<br />
File:Symbols search.png|''Searching for symbols''|alt=Searching for symbols<br />
</gallery><br />
<br />
== Customization ==<br />
<br />
=== Customize all files in the share folder === <br />
<br />
All files in <code>/share</code> can be over-ridden by placing files in the user's configuration folder (e.g. <code>~/.config/inkscape</code>). <br />
Configurable contents now includes extensions, filters, fonts, gradients, icons, keyboard shortcuts, preset markers, palettes, patterns, about screen, symbol sets, templates, tutorials and some user interface configuration files. Only the file 'units.xml' cannot be overridden.<br />
<br />
=== Fonts ===<br />
<br />
==== Load additional fonts ====<br />
<br />
Inkscape can now load fonts that are not installed on the system. By default Inkscape will load additional fonts from Inkscape's share folder (<code>/share/inkscape/fonts</code>) and the user's configuration folder (<code>~/.config/inkscape/fonts</code>). Custom folders can be set in preferences (see ''Tools → Text → Additional font directories'').<br />
<br />
<gallery><br />
File:Custom font folders.png|''Set custom font folders''|alt=Set custom font folders<br />
</gallery><br />
<br />
=== Keyboard shortcuts ===<br />
<br />
* Allow to use "Super", "Hyper" and "Meta" modifier keys<br />
* Improve shortcut handling code. This should fix a lot of issues and allow the use of many shortcuts which were inaccessible before, especially on non-English keyboard layouts.<br />
<br />
=== User interface customization ===<br />
<br />
* Inkscape is starting to use glade files for its dialogues, so they can be reconfigured by users. Only one is currently supported (filter editor).<br />
* The contents of the menus can be configured by customising the <code>menus.xml</code> file. <br />
* Toolbar contents for the command bar (<code>commands-toolbar.ui</code>), the snap bar (<code>snap-toolbar.ui</code>), the tool controls bars for each tool (<code>select-toolbar.ui</code>), the toolbox (<code>tool-toolbar.ui</code>) is now configurable.<br />
* The file <code>keybindings.rc</code> allows you to... '''(TODO: do what? What does it do in comparison to keys.xml? Seems to not work at all... seems to be ancient. Can be deleted?)'''<br />
* The interface colors and some more UI styles can be customized in <code><preferences folder>/ui/style.css</code> (very raw themeing support).<br />
<br />
=== Theme selection ===<br />
<br />
In 'Edit > Preferences > User Interface > Theme', users can set a custom GTK3 theme for Inkscape. If the theme comes with a dark variant, activating the 'Use dark theme' checkbox will result in the dark variant being used. The new theme will be applied immediately.<br />
<br />
New theme folders can be added to the directory indicated in Edit > Preferences > System : User themes. A large selection of (more or less current) GTK3 themes are available for download at [https://www.gnome-look.org/browse/cat/135/ord/top/ gnome-look.org]<br />
<br />
=== Icon set selection ===<br />
<br />
In 'Edit > Preferences > User Interface > Theme', the icon set to use can be selected. By default, Inkscape comes with 'hicolor' and 'Tango' icons. In addition to this, it offers to use the system icons.<br />
<br />
Inkscape also comes with a default symbolic icon set as part of the 'hicolor' icon set. These icons can be colorised with a custom colour.<br />
<br />
Changes to the icon set take effect when Inkscape is restarted, or when the entire user interface is reloaded by clicking on the 'Reload icons' button. This rebuilds all Inkscape windows. Rebuild takes a couple of seconds, during which the Inkscape interface will be invisible.<br />
<br />
<br />
<gallery><br />
File:Tango icons.png|''Light theme with Tango icon set''|alt=Light theme and Tango icon set<br />
File:Hicolor icons.png|''Light theme with hicolor icon set''|alt=Light theme and hicolor icon set<br />
File:Dark with symbolic icons.png|''Dark theme with symbolic icon set''|alt=Dark theme and symbolic icon set<br />
File:Dark symbolic custom color.png|''Dark theme with symbolic icon set and a custom icon color''|alt=Dark theme with custom colored symbolic icon set<br />
</gallery><br />
<br />
=== Saving the current file as template ===<br />
<br />
A new entry for saving the current file as a template has been added to the 'File' menu. You need to specify a name for it, and optionally, you can add the template's author, a description and some keywords. A checkbox allows you to set the new template as the default template.<br />
<br />
<gallery><br />
File:Save as templage.png|''Save current file as a template''|alt=Save current file as a template<br />
</gallery><br />
<br />
=== Custom page sizes in Document Properties ===<br />
<br />
Inkscape now creates a CSV file (comma separated values) called "pages.csv". It is located in your Inkscape user preferences folder, next to your 'preferences.xml' file. This file contains the default page sizes that you can choose from in the 'Page' tab of the 'Document properties' dialog. You can edit the pages.csv file to remove the page sizes you won't use, or to add new ones.<br />
<br />
== Inkview ==<br />
<br />
'''Inkview''' (a simple SVG viewer) was considerably improved and got some new features:<br />
<br />
* Support folders as input (will load all SVG files from the specified folder)<br/>The <code>-r</code> or <code>--recursive</code> option will even allow to search subfolders recursively.<br />
* Implement <code>-t</code> or <code>--timer</code> option which allows to set a time after which the next file will be automatically loaded.<br />
* Add <code>-s</code> or <code>--scale</code> option to set a factor by which to scale the displayed image.<br />
* Add <code>-f</code> or <code>--fullscreen</code> option to launch Inkview in fullscreen mode<br />
* Many smaller fixes and improvements<br />
<br />
== Command Line ==<br />
<br />
The Inkscape command line has undergone a major overhaul with the goal of making it more powerful and flexible for the user and easier to enhance for the developer. The most important changes are:<br />
<br />
* Each command-line argument can now be used only once. To specify multiple ''actions'' (''verbs''), use semicolons (e.g. <code>--actions='ObjectFlipVertically;FileSave;FileClose'</code>).<br />
* Many ''actions'' can now take arguments (separated from the ''action'' name by a colon.<br />
* [[Using xverbs|xverbs]] have been removed from Inkscape (command line commands that take parameters from a file, e.g. for saving the selection under a specified filename as svg file) ([https://sourceforge.net/p/inkscape/mailman/inkscape-devel/thread/33487d06-e3c1-a4e5-1496-7b370d672d2f%40gmail.com/#msg35392523 mailing list thread]).<br />
* Files can also be saved as Inkscape SVG without calling the GUI save dialog (new command: --export-inkscape-svg)<br />
* Multiple objects in single file can be saved into individual files by giving a comma separated list of objects to the command: --export-id.<br />
* Inkscape can now import a specific page of a PDF file from the command line, for batch processing (new option: --pdf-page N).<br />
* For importing a pdf, the option to import via poppler is now available for the command line as 'pdf-poppler'.<br />
* New verb allows one to swap fill and stroke style from the command line: <code>EditSwapFillStroke</code> (a keyboard shortcut can now be assigned to it) ([https://bugs.launchpad.net/inkscape/+bug/675690 bug 675690])<br />
<br />
More information can be found at [[Using the Command Line]].<br />
<br />
== Translations [as of 2019-01-08] ==<br />
<br />
Translations were updated for: <br />
<br />
* Basque<br />
* British English<br />
* Catalan<br />
* Croatian<br />
* Czech<br />
* French<br />
* German<br />
* Hindi<br />
* Hungarian<br />
* Icelandic<br />
* Italian<br />
* Latvian<br />
* Romanian<br />
* Russian<br />
* Slovak<br />
* Spanish<br />
* Turkish<br />
* Ukrainian<br />
* Swedish<br />
<br />
The installer was translated to:<br />
<br />
* Korean<br />
<br />
Tutorial translations were added for:<br />
<br />
* Korean<br />
<br />
Translations were dropped for:<br />
<br />
* Amharic<br />
<br />
== Notable Bugfixes ==<br />
<br />
* Symbols: Visio Stencils loaded from .vss files now use their actual name instead of a placeholder derived from the symbol file's name ([https://bugs.launchpad.net/inkscape/+bug/1676144 bug 1676144])<br />
* Shapes on Pen and Pencil tools now retain color and width ([https://bugs.launchpad.net/inkscape/+bug/1707899 bug:1707899]).<br />
* Text and Font dialog: The font selection no longer jumps to the top of the list when clicking Apply.<br />
* Docked dialogs now open on their own when the corresponding functionality is called from a menu or button [TBC: Bug: if minimized, this requires a second click]<br />
* The icon preview dialog now correctly shows the page background (Bug #[https://bugs.launchpad.net/inkscape/+bug/1537497 1537497]).<br />
* Improved performance of handling large paths and selections:<br />
** Accelerated path break-apart and Boolean operations by disabling intermittent canvas rendering during these operations.<br />
** Accelerated "deselect" speed by improving internal data structure algorithms.<br />
** Faster grouping and ungrouping of groups with a large number of objects<br />
* As of Windows 10 (version 1809) fonts are installed into a new user-specific folder by default. Allow Inkscape to recognize those fonts. ([https://gitlab.com/inkscape/inkscape/issues/50 #50])<br />
* The default Perl interpreter executable on Windows was changed from "perl.exe" to "wperl.exe" which should usually avoid flashing a console window. ([https://gitlab.com/inkscape/inkscape/issues/66 #66])<br />
* Some printers who don't correctly recognize the page formats sent by Inkscape, printed only square excerpts of the whole image that was supposed to be printed. Now they print the whole image ([https://gitlab.com/inkscape/inkscape/merge_requests/407 Merge request]).<br />
<br />
<br />
For an exhaustive list of bugs that have been fixed, please see the [https://launchpad.net/inkscape/1.0.x milestones page for Inkscape 1.0].<br />
<br />
== Known Issues ==<br />
<br />
[Please fill in]<br />
<br />
<br />
== Previous releases ==<br />
* [[Release notes/0.92]] ([[Release_notes/0.92.1 |0.92.1]], [[Release_notes/0.92.2 |0.92.2]], [[Release_notes/0.92.3 |0.92.3]], [[Release_notes/0.92.4 |0.92.4]])<br />
* [[Release notes/0.91]]<br />
* [[Release notes/0.48]] ([[Release notes/0.48.1 |0.48.1]], [[Release notes/0.48.2 | 0.48.2]], [[Release notes/0.48.3 | 0.48.3]], [[Release notes/0.48.4 | 0.48.4]], [[Release notes/0.48.5 | 0.48.5]])<br />
* [[Release notes/0.47]]<br />
* [[Release notes/0.46]]<br />
* [[Release notes/0.45]]<br />
* [[Release notes/0.44]]<br />
* [[Release notes/0.43]]<br />
* [[Release notes/0.42]]<br />
* [[Release notes/0.41]]<br />
* [[Release notes/0.40]]<br />
* [[Release notes/0.39]]<br />
* [[Release notes/0.38]]<br />
* [[Release notes/0.37]]<br />
* [[Release notes/0.36]]<br />
* [[Release notes/0.35]]</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Hackfest2019_Saarbr%C3%BCcken&diff=114621Hackfest2019 Saarbrücken2019-04-09T08:14:42Z<p>Mc: </p>
<hr />
<div><br />
This page details the planning of Inkscape's 2019 hackfest in Saarbrücken, Germany, Monday May 27 to Wednesday May 29. It is just prior to LGM which is from May 29 (evening) to Sunday, June 2.<br />
<br />
Other pages: [[Hackfest2019 Saarbrücken Topics]], [[Hackfest2019 Saarbrücken Attendees]].<br />
<br />
Old: [[Hackfest2019 SCALE]], [[Hackfest2018 Kiel]], [[Hackfest2018 LGM]], [[Hackfest2018]], [[Hackfest2017]], [[Hackfest2016]], [[Hackfest2015]].<br />
<br />
= Hackfest: Saarbrücken, Germany =<br />
<br />
==Description==<br />
<br />
A hackfest! We will work on Inkscape bugs, new features, and packaging as well as website issues; in fact anything that can benefit from developers and users being physically in the same space.<br />
<br />
The hackfest will take place before (and continue informally through) the [https://libregraphicsmeeting.org/2019/ 2019 LGM conference] ([https://www.xmlab.org/projects/projects-details/lgm info about this year's organizers]).<br />
<br />
For the regional open source event 'From Code to Community' on May 29th [link to schedule], we plan to have a group of Inkscapers presenting Inkscape to the visitors.<br />
<br />
We plan for announcing the 1.0 release some time at LGM (no guarantees!).<br />
<br />
==Saarbrücken==<br />
<br />
Saarbrücken is a city in the west of Germany, next to the border with France. It is about 2 hours from Paris and 3 hours from Frankfurt by train. There is a local airport (SCN) with some international flights. <br />
<br />
[https://libregraphicsmeeting.org/2019/travel/ The LGM website] has more comprehensive info on traveling to Saarbrücken.<br />
<br />
* [https://en.wikipedia.org/wiki/Saarbrücken Saarbrücken on Wikipedia]<br />
* [http://www.saarbruecken.de/en/tourism/saarbruecken/sights Sightseeing (official)]<br />
<br />
==Venue==<br />
<br />
===Hackfest===<br />
The hackfest will take place in an open-plan office at [http://www.k8.design/_/ k8.design], a non-profit company owned by the Saarbrücken arts university. k8.design is located at '''<del>Keplerstr. 3-5</del> Ufergasse 2 in Saarbrücken''' . k8 staff will be working alongside us in the same office.<br />
<br />
A neighboring, smaller office (10 persons max) will probably be available for us to use, too, e.g. for discussions that would otherwise be too loud.<br />
<br />
The upper limit is 20 persons.<br />
<br />
Their offices are open from ~9:00 in the morning. It's possible that we get a key, so we can stay as long as we need to in the evenings. Thomas has volunteered to be the key's keeper.<br />
<br />
===From Code to Community===<br />
<br />
This short, 6 hour open source event will take place in the Pingusson building, Hohenzollernstraße 60, 66117 Saarbrücken.<br />
<br />
===LGM===<br />
<br />
The opening on May 29th will follow directly on the 'From Code to Community' event, at Hohenzollernstraße 60, 66117 Saarbrücken.<br />
<br />
On the following days, LGM will take place at the Hochschule der Bildenden Künste Saar (hbk Saar - [https://www.hbksaar.de/ Website], [https://www.openstreetmap.org/way/28269015#map=19/49.23271/6.98518 OpenStreetMap]), the [https://en.wikipedia.org/wiki/Saarland Saarland]’s university of art and design.<br />
<br />
During LGM, they seem to have more rooms available than there will be conference tracks, so it should be possible to have a<br />
collaboration space for Inkscape. However, we probably won't be able to have the same place continuously, and we would have to ask when we need<br />
it. There is also plenty of sitting space available on the venue.<br />
<br />
===Catering===<br />
<br />
No catering. Tobias Ellinghaus might be able to help us arrange for some snacks and beverages.<br />
<br />
===Facilities===<br />
<br />
* Wireless networking (fast broadband).<br />
* Europlug type C and F.<br />
* LCD projector (HDMI)<br />
* flip chart<br />
* wired networking available, network switch needs to be brought by Inkscapers<br />
<br />
===Nearby amenities===<br />
<br />
Located in a pedestrian zone with multiple places to buy food.<br />
<br />
==Hotels==<br />
<br />
* The LGM website has [https://libregraphicsmeeting.org/2019/accommodation/ a list of nearby hotels].<br />
* The official list of Saarbrücken's hotels is available [http://www.saarbruecken.de/en/tourism/accommodations from the city's website].<br />
<br />
==Hackfest Dinner==<br />
<br />
An informal dinner will be held one night. TBA.<br />
<br />
==Attendance==<br />
<br />
Anybody interested in Inkscape is welcome to attend. Funding support for travel expenses is based on past contributions to Inkscape. See the [[Hackfest2019 Saarbrücken Attendees]] page for more details.<br />
<br />
==Hackfest Topics and Schedule==<br />
<br />
A schedule will be developed based on input from attendees and the Inkscape community. See the [[Hackfest2019 Saarbrücken Topics]] page for further details.<br />
<br />
===May, 27th===<br />
<br />
===May, 28th===<br />
<br />
===May, 29th===<br />
<br />
* 12:00-18:00: From Code to Community (Pingusson building). Volunteers for booth: Marc, Mihaela<br />
* 18:00: LGM opening<br />
<br />
==Helpers==<br />
<br />
The following folk have offered to assist with organization work, in limited capacities:<br />
<br />
* houz<br />
* Moini<br />
* octycs<br />
* Mc<br />
* Tav<br />
<br />
[[Category:Hackfest]]</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Hackfest2019_Saarbr%C3%BCcken_Attendees&diff=114201Hackfest2019 Saarbrücken Attendees2019-03-20T14:50:09Z<p>Mc: /* Confirmed Attendees */</p>
<hr />
<div>Other pages: [[Hackfest2019 Saarbrücken]], [[Hackfest2019 Saarbrücken Topics]], [[Hackfest2019 SCALE]]. <br />
<br />
== Confirmed Attendees ==<br />
<br />
* Boudewijn Rempt (no travel or accomodation assistance is needed)<br />
* Cedric and Elisa (arrival 28th evening)<br />
<br />
== Unconfirmed but Likely Attendees ==<br />
<br />
* Marc Jeanmougin<br />
* Tavmjong Bah<br />
* Jürgen Weigert (arrival May-29th afternoon)<br />
* Max Gaukler<br />
* Tobias Ellinghaus (houz) - local<br />
* Maren Hachmann<br />
* Thomas Holder (speleo3)<br />
<br />
== Maybe ==<br />
<br />
== People to Invite ==<br />
<br />
* ede123 (Patrick)<br />
* prkos (Mihaela)<br />
* Shlomi Fish<br />
* Jabier<br />
* Martin Owens<br />
* Anatoly (@techtonik on gitlab)<br />
* Thomas Wiesner (@wiesi on gitlab)<br />
* Juan Duarte (see chat.inkscape.org)<br />
* Olli (https://gitlab.com/ollip)<br />
* Alex Valavanis<br />
* Emmanuel Gil Peyrot (https://gitlab.com/linkmauve)<br />
* Sebastian Wüst (plotting expert https://www.timewasters-place.com/)<br />
* Alexandre Prokoudine (as guest? Might be there anyway.)<br />
* Khaled Hosny (font expert)<br />
* Antonio Hospite (https://gitlab.com/ao2)<br />
* Michael Soegtrop (https://gitlab.com/users/MSoegtrop)<br />
* Simon Wells (https://gitlab.com/xzcvczx)<br />
* probono<br />
* Nicolas<br />
* su_v<br />
* Johan Engelen<br />
* Bryce Harrington<br />
<br />
Possible others?<br />
* people on the mac-devel channel</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Google_Summer_of_Code&diff=113731Google Summer of Code2019-02-27T00:13:24Z<p>Mc: </p>
<hr />
<div><div style="max-width:70em; margin-left: auto; margin-right: auto"><br />
= Welcome to Inkscape! =<br />
<br />
For quite a few years Inkscape has been successfully participating in [http://code.google.com/soc/ Google Summer of Code].<br />
<br />
GSoC is a program where Google funds the development of specific features in open source software by university students. You don't need to be a Computer Science student to apply. Features to be developed are picked by Inkscape administrators from the pool of proposals submitted by students.<br />
<br />
We've mentored about half a dozen students a year since GSoC started. Many students enjoyed their work and continue to be involved; perhaps your mentor will be a past GSoC student! We have a high rate of acceptance of student code into the core codebase. Indeed, GSoC projects have been a key source of some of Inkscape's best features in the past several releases.<br />
<br />
If you are interested in joining us this summer, it is time to get your proposal ready. You can choose a proposal from our list of suggestions or come up with one of your own. In either either case, you '''must''' give us a detailed outline of what you plan to do. It is '''highly''' recommended that you discuss your idea as early as possible with Inkscape developers. They not only can give you guidance as you flesh out your proposal but ultimately you must convince them that you can do the work planned in the time allotted. '''If you have not discussed your proposal with Inkscape developers before you apply, your application will be rejected!'''<br />
<br />
= Student Applications =<br />
<br />
* Google program information:<br />
** [https://summerofcode.withgoogle.com/ Home page].<br />
** Summer of Code Application form. Applications open at 18:00 UTC on March 25th.<br />
<br />
* Inkscape-specific information:<br />
** [[SOC Application Template]].<br />
** [[Roadmap | Inkscape Roadmap]] - to see our overall objectives.<br />
** [[Projects | Inkscape Development Project Ideas]] - broader list of development ideas.<br />
** [[SOC Writing Project Proposals]] - some guidelines for proposals.<br />
** [[SOC Selection Criteria]] - how we rate applications.<br />
<br />
'''Student Applications for GSoC 2019 must be submitted to the GSoC site by 18:00 UTC on April 9th 2019.'''<br />
<br />
= The "two patches" rule =<br />
<br />
We require two patches from each potential GSoC student, before accepting the student for GSoC participation (it is the same requirement as for obtaining rights to commit changes to the Bazaar code repository).<br />
The reason for this requirement is that you can show us that you have succeeded in building Inkscape on your PC, and that you have understood a little piece of Inkscape's code and are able to improve it. <br />
Inkscape is a large project, and you really should not try to understand all the code. Many (all?) developers know only parts of the program code!<br />
You can join our [https://inkscape.org/community/discussion/ IRC] channel and ask developers for help.<br />
<br />
== Suggested "easy" bug fixes or improvements ==<br />
<br />
To get you started on Inkscape development, you can find (probably) easy-to-fix bugs or small improvements that require very little knowledge of the whole program by searching our [https://bugs.launchpad.net/inkscape bug-tracker] for bugs tagged with 'easy-fix'.<br />
<br />
= Performance Evaluation =<br />
<br />
GSoC has two formal evaluation points, at the ''mid-term'' and at the end. These evaluations determine if you receive the stipend from Google. In order to receive a pass for the evaluations you will need to show adequate progress toward your project's goals.<br />
<br />
To help you meet your goals and so that your mentor can better evaluate your progress you need to:<br />
<br />
* Have frequent, public discussions of your progress. (Don't rely on just your mentor for advice.)<br />
* Have a public Inkscape branch for your code to which you commit regularly.<br />
* Give weekly status reports.<br />
<br />
For the final pass, you will normally be required to merge your code into Inkscape trunk.<br />
<br />
Remember: ''we want you to succeed!''<br />
<br />
= Suggested Project Ideas =<br />
<br />
The following is a list of formal project suggestions, but do not feel limited to only these - some of our best contributions have been unique ideas that students had in mind from other sources!<br />
<br />
See also [[Development Project Ideas]], [[Refactoring projects]], [[Projects]], and https://blueprints.launchpad.net/inkscape/<br />
<br />
==P1. Better CSS Style Sheet Support==<br />
<br />
Enhance Inkscape's support for CSS style sheets.<br />
<br />
* Estimation of difficulty: Moderately hard<br />
* Potential mentors: Tavmjong Bah<br />
* Programming skills needed: C++<br />
* Prerequisites: Experience with CSS style sheets.<br />
<br />
<u>Detailed Description</u><br />
<br />
Inkscape has rudimentary support for CSS style sheets that can read and parse one internal style sheet. A 2016 GSoC project added a simple style dialog that can create and modify the internal style sheet. The dialog is very limited and is not intuitive to use. A 2017 GSoC project added support for CSS 3 selectors. This project will extend the usefulness of that dialog by making it more user friendly and by extending its functionality. The use of CSS classes should eventually replace the Selection Set dialog.<br />
<br />
<u>Use Cases</u><br />
<br />
* Support externally created SVGs.<br />
* Producing better SVGs for the Web.<br />
* Changing style on multiple objects at once (palettes).<br />
<br />
<u>Related Material</u><br />
<br />
* [https://www.w3.org/TR/CSS2/ CSS 2 Specification]<br />
* [https://www.w3.org/TR/css-2015/ CSS 2015 Snapshot]<br />
<br />
==P3. Slice items==<br />
[[File:Cuttool.png|200px|thumb|right|Example of result of the cut/eraser tool]]<br />
Add slicing Live Path Effect (LPE)<br />
* Estimation of difficulty: Moderately hard<br />
* Potential mentors: Jabier Arraiza (Spanish, some English)<br />
* Programming skills needed: C++<br />
<br />
<u>Detailed Description</u><br />
The goal is a LPE, to slice items.<br /><br />
It accept a path parameter as cutter.<br /><br />
The effect create pieces by the split path.<br /><br />
Add a toggle button to pause cutting on effect to allow move pieces cutted.<br /><br />
Add a option to reset pieces (reload LPE with the current path parameter).<br /><br />
We have the code of mirror symmetry LPE and rotate copies LPE as reference.<br /><br />
Also we can force or better ask to convert strokes to path previously to apply the effect (one line command, but we need advert is a destructive LPE)<br /><br />
Study autogenerate a HTML image map code linking with the Item LPE parameter to another object in hover state.<br />
<br /><br />
<u>Use Cases</u><br />
* Better item slicing.<br />
* Split a item and use for example on PNG export option export as separate objects.<br />
<br />
==P4. SVG 2 Text Support==<br />
<br />
* Estimation of difficulty: Hard<br />
* Potential mentors: Tavmjong Bah<br />
* Programming skills needed: C++<br />
* Prerequisites: Familiarity with text layout. Knowledge of CSS.<br />
<br />
<u>Detailed Description</u><br />
<br />
Inkscape currently has a non-compliant flowed text feature, that is text automatically being flowed inside a rectangle or some other shape. It is based on SVG 1.2 which never became a published W3C specification. Inkscape's flowed text needs to be made compatible with both SVG2 and SVG 1.1. A GSoC 2017 project re-implemented flowed text using SVG 2 methods. While this code has been integrated into Inkscape, it is not yet the default when generating flowed text. This project is to fully test the new code, fix any bugs, improve the UI interface, and finally, to make it the default method for flowed text. This is a high priority item!<br />
<br />
<u>Use Cases</u><br />
* Proper text flow into rectangles and other shapes.<br />
<br />
<u>Related Material</u><br />
* [https://svgwg.org/svg2-draft/text.html Current draft of SVG 2 text specification.]<br />
<br />
==P5. UI-Free Inkscape ==<br />
<br />
* Estimation of difficulty: Difficult<br />
* Potential mentors: Marc Jeanmougin<br />
* Programming skills: C++, CMake<br />
* Prerequisites: Minimal knowledge of build systems. Experience with GtkMM helpful.<br />
<br />
<u>Detailed Description</u><br />
Inkscape currently builds with X11 and gtk and a lot of graphical dependencies. But since it is allowed to run in commandline, and there are controlled environments (servers) that use it to convert svg to png and to perform actions, there should be no need to force it to build with those. The main goal of this project is to add a WITH_GUI compilation flag that when OFF, does *not* link Inkscape with any graphical dependency. While much work has been done towards this goal, much remains to be done. As a next step, Inkscape's "verbs" which are mostly GUI dependent (even if there is no reason to be) need to be converted to Gio::Actions.<br />
<br />
<br />
<u>Use cases</u><br />
* Server installs, scripts<br />
<br />
==P6. Refactoring==<br />
* Estimation of difficulty: Moderate<br />
* Potential mentors: Tavmjong Bah<br />
* Programming skills: C++<br />
* Prerequisites: proficient C++.<br />
<br />
<u>Detailed Description</u><br />
Inkscape began life as the C program Sodipodi. Sodipodi was mostly the work of one person who had a clear vision of how the code should work. A major motivation of the Inkscape fork was to allow others to easily contribute to development. This resulted in rapid development but at a cost: the code has become much messier and now lacks a clear vision. This project is to work on refactoring the code. Refactoring can take many forms. It could be creating a better directory structure with README's that describe the purpose and function of the code in each directory. This would include rewriting code to reduce dependencies across directories (which would help, for example, in achieving a headless version of Inkscape). It could be the continued transition from C to C++ which often results in major reductions in the number of code lines. Or it could be identifying and eliminating redundant code. Refactoring is an important skill of which many books have been written. Here's a chance to gain valuable experience!<br />
<br />
==P7. Polyfills ==<br />
* Estimation of difficulty: Variable<br />
* Potential mentors: Tavmjong Bah<br />
* Programming skills: JavaScript<br />
* Prerequisites: Experience in web development.<br />
<br />
<u>Detailed Description</u><br />
Many features of SVG 2 have yet to (and may never) make it into browsers. We can support those features by writing <i>polyfills</i> which implement missing functionality using JavaScript.<br />
<br />
==P8. Move from LivePathEffects to LiveEffects ==<br />
* Estimation of difficulty: Hard<br />
* Potential mentors: Jabier Arraiza (Spanish, some English)<br />
* Programming skills: C++<br />
* Prerequisites: Experience managing bitmaps<br />
<u>Detailed Description</u><br />
Live Path Effects are non destructive effects applied to paths and shapes standalone or inside a group.<br /> <br />
This is done keepeng a reference to the original data to reaply when needed.<br /><br />
But ignore text and image elements.<br /><br />
Things to do:<br />
* Refactor LPE system to rename it to LE.<br />
* Study add image, text, both and maybe others SVG elements to the LE system.<br />
* Create/adapt minimun one LPE for each new type of element acepted as reference. Suggestion Perspective-Envelope.<br />
<u>Use cases</u><br />
* Apply live effects to images and text based in C++ code in a non destructive way: Slice, Mirror; Rotate, Perspective... even in groups with mixed elements types.<br />
<br />
<s><u>Note</u><br />
Because we are in middle of a LivePathEffects refactor process please follow also this branch: <br />
https://gitlab.com/inkscape/inkscape/tree/LPERefactorHistoryFix<br />
And ask any question into the devel mailing list or try to ping me on IRC (jabiertxof)</s> (Merged)<br />
<br />
==P9. Path Library Improvements ==<br />
* Estimation of difficulty: Hard<br />
* Potential mentors: Tavmjong Bah, KK<br />
* Programming skills: C++<br />
* Prerequisites: Strong math skills, specifically in geometry.<br />
<u>Detailed Description</u><br />
Inkscape relies on two geometry libraries for path manipulations: lib2geom and livarot. lib2geom is a generic modern library written specifically with Inkscape in mind. lib2geom is missing some functionality that Inkscape requires and that is found in livarot. This project is to move that functionality into lib2geom (or into separate files) using lib2geom path descriptions.<br />
Specifically, the functionality needed is<br />
* Path offset/inset functions.<br />
* Path simplify.<br />
* Stroke to path function.<br />
* Line scanning (used for flowing text into a shape).<br />
<br />
==P10. Your project ==<br />
* Estimation of difficulty: Variable<br />
* Potential mentors: Marc Jeanmougin<br />
* Programming skills: usually C++<br />
* Prerequisites: good ideas<br />
<br />
<u>Detailed Description</u><br />
The most successful GSoC we had in the past were students coming with their own past, use cases and ideas for Inkscape. Many basic tools like 3d cubes or connectors you can see in Inkscape now have been brought by brilliant people (like you) with ideas. If we think that your project fits with Inkscape (ie: has its place with a vector graphic editor), we can help you refining your ideas and help bring shiny new stuff to life!<br />
<br />
<u>Use cases</u><br />
* Amaze us!<br />
<br />
= Successful SOC Projects from Previous Years =<br />
* 2005<br />
** Connectors<br />
** Inkboard<br />
** [http://www.openclipart.org/ Open Clip Art Library (OCAL)] Interface<br />
** DXF Import / Export<br />
* [[Google Summer of Code 2006|2006]]<br />
** Support for SVG Filters<br />
** Filter Effects<br />
** PDF export<br />
** Inkboard Protocol Spec / Lib Conversion<br />
* [[Google Summer of Code 2007|2007]]<br />
** Text Style Improvements<br />
** PDF import<br />
** Live Path Effects<br />
** 3D Box Tool<br />
** UI for SVG Filter Effects<br />
** Raster Functionality<br />
** Importing from, and Exporting to, a remote ccHost instance<br />
* [[Google Summer of Code 2008|2008]]<br />
** SVG Fonts support<br />
** 2Geom refactoring project - port most geometry code to 2Geom<br />
** lib2geom: interactive applications showing off the power of lib2geom<br />
** Tech drawing abilities<br />
** A test suite<br />
* 2009<br />
** [[GSoC2009 Node Tool Rewrite|Node tool rewrite]]<br />
** D-Bus scripting API<br />
** Connector tool improvements<br />
** ICC/CMYK workflow<br />
* 2010<br />
** Cairo-based rendering<br />
** C++ification of SP Layer<br />
* 2011<br />
** Rendering caching<br />
** Javascript support improvements<br />
** CSS support improvements<br />
* 2012<br />
** Usibility Improvements for Guides<br />
** [[Tiling tool|On-canvas support for Tessellations]]<br />
** Creating python bindings for lib2geom<br />
* [[Google Summer of Code 2013|2013]]<br />
** Recolor Tool<br />
** Improved Units Support<br />
** Electronics CAD Support<br />
** New From Templates Dialog<br />
** New Raster to Vector Algorithm<br />
* 2014<br />
** Better Support for SVG Paints<br />
** Robust Boolean and Stroking Operations for 2Geom<br />
* 2016<br />
** [[GSoC 2016 Better data structure for selections|Better data structure for selections]]<br />
** [[Style Editor|CSS Style Sheet Editor]]<br />
* 2017<br />
** SVG 2 Text Support<br />
** Better CSS Style Sheet Support<br />
[[Category:Developer Documentation]]<br />
<br />
</div></div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Hackfest2019_Saarbr%C3%BCcken_Attendees&diff=112811Hackfest2019 Saarbrücken Attendees2019-01-04T18:26:10Z<p>Mc: </p>
<hr />
<div>Other pages: [[Hackfest2019 Saarbrücken]], [[Hackfest2019 Saarbrücken Topics]], [[Hackfest2019 SCALE]]. <br />
<br />
== Confirmed Attendees ==<br />
<br />
<br />
<br />
== Unconfirmed but Likely Attendees ==<br />
<br />
* Marc Jeanmougin <br />
<br />
<br />
== People to Invite ==</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Hackfest2019_SCALE_Attendees&diff=112801Hackfest2019 SCALE Attendees2019-01-04T18:08:38Z<p>Mc: /* Unconfirmed but Likely Attendees */</p>
<hr />
<div>Other pages: [[Hackfest2019 SCALE Topics]], [[Hackfest2019 SCALE]]. <br />
<br />
== Confirmed Attendees ==<br />
<br />
<br />
<br />
== Unconfirmed but Likely Attendees ==<br />
<br />
* Bryce Harrington<br />
* Ryan Gorley<br />
* Ted Gould<br />
* Tavmjong Bah<br />
* Marc Jeanmougin<br />
<br />
== People to Invite ==<br />
<br />
KK<br />
Alex<br />
Jabier<br />
Josh</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Release_notes/1.0&diff=112126Release notes/1.02018-10-19T19:39:53Z<p>Mc: /* Customization */</p>
<hr />
<div>{{Other languages|en=Release_notes/1.0}}<br />
<br />
== Inkscape 1.0 ==<br />
<br />
'''(definitely not released yet - [[AnnouncePlanning1.0]])'''<br />
<br />
== Release highlights ==<br />
<br />
Released on '''«YYYY-MM-DD»'''.<br />
<br />
[Please fill in<br />
<br />
* Themeing support<br />
* Origin in top left corner (optional)<br />
* Canvas rotation and mirroring<br />
* Better hidpi screen support<br />
* Control width of PowerStroke with pressure sensitive graphics tablet<br />
* Fillet/chamfer LPE<br />
* New PNG export options]<br />
<br />
== Important changes ==<br />
<br />
=== For users ===<br />
<br />
==== Custom Icon Sets ====<br />
<br />
Icon sets do no longer consist of a single file that contains all icons, but of single files for each icon. The directory structure must follow the standard structure for gnome icons.<br />
<br />
If you would like to create or convert your own icon set to the new format, please see the 'hicolor' and 'Tango' icon theme folders in your Inkscape installation 'share' directory for suitable examples.<br />
<br />
As a side effect of a bug fix to the icon preview dialog (see below), custom UI icon SVG files need to be updated to have their background color alpha channel set to 0 so that they display correctly (see Bug #[https://bugs.launchpad.net/inkscape/+bug/1661989 1661989]).<br />
<br />
==== Third-party extensions ====<br />
<br />
Third-party extensions need to be updated to work with this version of Inkscape.<br />
<br />
=== For extension writers ===<br />
<br />
''[TBC - not final]''<br />
Extensions have undergone some fundamental changes. <br />
Inkscape's stock extensions have been moved to [https://gitlab.com/inkscape/extensions their own repository] and were updated for compatibility with Python 3. Internally, extensions have been reorganized and many functions have been deprecated.<br />
<br />
''[Extension manager? How-to-guide for updating? New API elements? Documentation?]''<br />
<br />
=== For packagers and those who compile Inkscape ===<br />
<br />
* autotools builds have been dropped. Please use CMake for building Inkscape from now on. More info is available [https://inkscape.org/develop/getting-started/#092-onwards on our website].<br />
* libsoup dependency added: we use libsoup for making http requests without the need for dbus and gvfs.<br />
* Inkscape now uses a git submodule for the extensions directory. If you have cloned the repository and are not building from the release source code tarball, please note the [https://inkscape.org/en/develop/getting-started/ updated build instructions]]<br />
* On Ubuntu 18.04, Gnome's fallback icon set (package 'adwaita-icon-theme-full'), that is needed to display Inkscape's default icons completely, is no longer automatically installed. It has been added as a 'recommends' level dependency.<br />
<br />
== General User Interface ==<br />
<br />
The user interface has been changed to using a more recent version of GTK+, the widget toolkit that Inkscape uses to draw the user interface on the screen. This new version brings a lot of improvements, especially for users of hidpi screens. Updating Inkscape for using it has been a large effort that has been anticipated eagerly for a long time, and was a focus of the [https://inkscape.org/en/news/2018/05/22/2018-boston-inkscape-hackfest/ Boston Hackfest].<br />
<br />
=== Window position / size ===<br />
<br />
Improvements and fixes to the code for handling/restoring window size and position [https://gitlab.com/inkscape/inkscape/merge_requests/180]<br />
. The window manager handles most of the job now which should make it much more robust. If you still encounter problems with this, please report those to our bug tracker.<br />
<br />
=== HiDPI ===<br />
<br />
==== Icons ====<br />
[Please fill in]<br />
<br />
<br />
=== Y Axis Inversion ===<br />
<br />
During the [https://inkscape.org/en/news/2018/09/20/inkscape-hackfest-kiel-2018-what-happened/ Inkscape Hackfest in Kiel], a large change by Thomas Holder was integrated into the Inkscape codebase. It allows you to optionally set the origin of your document to the top left corner of the page. This finally makes the coordinates that you can see in the interface match the ones that are saved in the SVG data (unit conversions/transformations may be required), and makes working in Inkscape more comfortable for people who are used to this more standard behavior.<br />
<br />
<br />
<gallery><br />
File:Origin in upper left.png|''Option in the preferences' 'Interface' section''|alt=Option in the preferences' 'Interface' section<br />
File:Origin in upper left page.png|''Effect of the option (left upper page corner at 0/0)''|alt=Effect of the option (left upper page corner at 0/0)<br />
</gallery><br />
<br />
== Canvas ==<br />
<br />
=== Canvas Rotation ===<br />
<br />
With <kbd>Ctrl+Shift+Scroll wheel</kbd> the drawing area can be rotated and viewed from different angles. In the bottom right corner of the Window, the viewing angle can be entered manually. Right-click to select between a set of preset values. Keyboard shortcuts for clockwise/counter-clockwise/no rotation can be set in the preferences.<br />
<br />
<br />
[[File:Canvas rotation.gif]]<br />
<br />
=== Canvas Mirroring ===<br />
<br />
The canvas can now be flipped, to ensure that the drawing does not lean to one side, and looks good either way.<br />
The vertical/horizontal flipping is available from the menu View > Canvas orientation > Flip horizontally / Flip vertically. Keyboard shortcuts for flipping the canvas can be set in the preferences (Edit > Preferences > Interface > Keyboard shortcuts).<br />
<br />
[[File:Flip canvas 300px.gif]]<br />
<br />
== Visible Hairlines Display Mode ==<br />
<br />
This new display mode is available under the "View->Display mode" menu. It ensures that all lines are visible, regardless of zoom level, while still drawing everything else normally.<br />
<br />
This is especially useful for some CNC machines like laser cutters and vinyl cutters which use hairlines to denote cut lines.<br />
<br />
[[File:visible_hairlines.gif]]<br />
<br />
== Paths ==<br />
<br />
=== Changed behavior of Stroke to Path ===<br />
<br />
The 'Stroke to Path' command now not only converts the stroke of a shape to path, but effectively splits it into its components.<br />
<br />
In the case of applying it to a path that only has a stroke, the behavior is unchanged.<br />
<br />
For paths that don't only have a stroke, but also a fill and/or markers, the result will be a group consisting of:<br />
* Stroke outline turned to path<br />
* Fill (if there was one)<br />
* A group of all markers (if applicable; one group per marker, consisting of its outline and its fill turned into a path)<br />
<br />
[[File:Stroke to path.gif]]<br />
<br />
=== Unlinking Clones for Path Operations ===<br />
<br />
Clones and Symbols are now automatically unlinked, before a Boolean operation (union, difference, etc.), or one of the Path operations 'Combine', 'Break apart', or 'Stroke to Path' is performed.<br />
<br />
A setting in the preferences at ''Behavior → Clones → Unlink Clones'' allows to disable the automatic unlinking.<br />
<br />
== Tools ==<br />
<br />
<br />
=== Calligraphy Tool ===<br />
<br />
A new option to add dots has been added to the tool. Click in place without moving the mouse to create a dot, Shift+Click to create a larger dot ''[needs documentation in keyboard shortcut list]''.<br />
<br />
=== Circle Tool ===<br />
<br />
The circle tool can now also create closed ("filleted") circle shapes (closed arcs) with the click of a button.<br />
<br />
<gallery><br />
File:Circle chord.png|''Circle tool shapes in this release''|alt=Circle tool shapes in this release<br />
</gallery><br />
<br />
=== Eraser === <br />
<br />
New option to erase as clip, which allows to non-destructively erase (parts of) all kinds of elements, including raster images and clones.<br />
<br />
[[File:Erase with clip.gif]]<br />
<br />
<br />
=== Measurement Tool ===<br />
<br />
Hovering over a path with the tool now displays the length, height, width and position of the path. If you hover over a group, it will show the width, height and position of the group. Holding Shift switches to showing info about the constituents of the group.<br />
<br />
The tool also has a new option to only measure selected objects when using click-and-drag.<br />
<br />
<gallery><br />
File:Measure tool info.png|''New info text from measurement tool (for a group)''|alt=New info text from measurement tool (for a group)<br />
File:Measure tool info group shift.png|''Measurement tool info text for a single path (in a group with Shift)''|alt=Measurement tool info text for a single path (in a group with Shift)<br />
File:Measure selected.png|''Measuring only the selected object (the ice cap)''|alt=Measuring only the selected object (the ice cap)<br />
</gallery><br />
<br />
=== Pencil Tool ===<br />
<br />
==== PowerPencil ====<br />
<br />
Pressure sensitivity can now be enabled for the Pencil tool. This feature makes use of the PowerStroke Live Path Effect (LPE).<br />
<br />
New settings for the tool are available for tweaking the behavior of the PowerStroke LPE when it is being created with the Pencil tool (and a graphics tablet/stylus):<br />
* '''Use pressure input''' (in the tool controls bar): activates the PowerStroke feature, if a pressure sensitive device is available.<br />
* '''Min/Max''' (in the tool controls bar): determines the minimal and maximal stroke width (0 to 100%). This does not change the number of available pressure levels, but spreads them out in the available line width interval.<br />
* Additionally, the PowerStroke LPE itself has been improved, to better work when used in this new way, see [[#PowerStroke_LPE_Improvements|the section about LPE updates]].<br />
* '''Pressure change for new knot''' (in the global Inkscape preferences, Edit > Preferences > Tools > Pencil): adds a PowerStroke Knot when the stylus pressure changes by this percentage.<br />
<br />
''[needs video/gif]''<br />
<br />
== Clipping / Masking ==<br />
<br />
Clip paths and masks now have an inverse mode in the menu, using the PowerClip and PowerMask LPEs.<br />
<br />
[[File:Inverse clip 400.gif]]<br />
<br />
== Live Path Effects ==<br />
<br />
Live Path Effects received a major overhaul, with lots of improvements and new features. The main changes are:<br />
<br />
* '''Set default parameters''': default values for any LPE can be set in the respective LPE's dialog, when it is applied to an object<br />
(''Note: we have the 'multiple desktop preferences' problem here: If you have multiple Inkscape windows open, the last one will determine what will be saved to the preferences file, as preferences changes are only saved when Inkscape is closed, and the settings are only loaded from file when a new window is opened.'')<br />
* '''Clip and Mask''': improved handling<br />
* '''Fix multiple LPE BBox''': a problem with the size of the bounding box when applying multiple LPEs to an object has been fixed<br />
* '''Knots on shapes''': show edit knots in LPE shapes<br />
* '''Switch knots''': change the handles to the correct LPE handles when one selects an LPE in the list of active LPEs for the selected object.<br />
<br />
<br />
<gallery><br />
File:LPE set defaults.png|''Set default values for Mirror LPE''|alt=Set default values for Mirror LPE<br />
</gallery><br />
<br />
<br />
=== Boolean Operations LPE ===<br />
<br />
''[The Boolean Operations LPE finally makes non-destructive boolean operations available in Inkscape. It works by adding the LPE to a path, then linking a copied path to it by clicking on the 'link to path' button. That way, two [more?] paths can be combined to a single shape, and both are still editable. Available options:<br />
<br />
* union<br />
* symmetric difference<br />
* intersection<br />
* division<br />
* difference<br />
* cut outside<br />
* cut inside<br />
* cut<br />
''] functionality incomplete currently, does not hide linked operand, see https://gitlab.com/inkscape/inkscape/merge_requests/20#note_100799480''<br />
<br />
<gallery><br />
File:Boolops LPE.png|''Boolean Operations LPE''|alt=Boolean Operations LPE<br />
</gallery><br />
<br />
=== BSPline and Spiro ===<br />
<br />
Improvements in Pen/Pencil mode. With "Alt", you can move the previous node.<br />
<br />
=== 'Clone Original' Improvements ===<br />
<br />
This path effect now allows various objects instead of only paths and is even more powerful.<br />
<br />
[https://www.youtube.com/watch?v=JAJAxKNY8lA Demo Video]<br />
<br />
=== Embroidery Stitch LPE ===<br />
<br />
This new LPE can add nodes to your paths and create jump stitches, to create data that can be converted for use with a stitching machine.<br />
To view the stitches that you added, activate the 'Show stitches' checkbox, and, if necessary, adjust the 'Show stitch gap' value, so you can see the single stitches.<br />
<br />
There are various options for calculating the order of the stitching, for connecting the parts of the drawing and 3 different stitch patterns available. It is suggested to play around with these until you like the result.<br />
<br />
For exporting your data, you can, for example, use the HPGL file format and go from there.<br />
<br />
<gallery><br />
File:Embroidery stitch lpe.png|''Inkscape Logo with Embroidery LPE (stitches made visible)''|alt=Inkscape Logo with Embroidery LPE (stitches made visible)<br />
File:Embroidery stitch lpe options.png|''Available options: left: methods to order subpaths, right: methods to connect end points of subpaths''|alt=Options: left: methods to order subpaths, right: methods to connect end points of subpaths<br />
</gallery><br />
<br />
=== Fill Between Many / Fill Between Strokes LPE ===<br />
<br />
New options added :<br />
<br />
* Fuse coincident points: [describe]<br />
* Join subpaths: [describe]<br />
* Close: [describe]<br />
* LPEs on linked: [describe] (Fill Between Many only)<br />
<br />
=== Fillet/Chamfer LPE ===<br />
<br />
This new LPE adds fillet and chamfer to paths. Also adds a new internal class that allows to handle extra info per node, the LPE itself is an example of use the new classes.<br />
<br />
[https://www.youtube.com/watch?v=wJKzGhJULfc Demo video]<br />
<br />
<gallery><br />
File:Chamfer lpe.png|''Chamfer with LPE''|alt=Chamfer by LPE<br />
File:Chamfer with steps.png|''Chamfer with 2 steps''|alt=Chamfer with 2 steps<br />
File:Inverse chamfer with steps.png|''Inverse Chamfer with 2 steps''|alt=Inverse Chamfer with 2 steps<br />
File:Fillet lpe.png|''Fillet with LPE''|alt=Fillet with LPE<br />
File:Inverse fillet lpe.png|''Inverse fillet with LPE''|alt=Inverse fillet with LPE<br />
</gallery><br />
<br />
=== Measure Segments LPE===<br />
<br />
This new path effect adds DIN and custom style measuring lines to "straight" segments in a path.<br />
<br />
[https://www.youtube.com/watch?v=ppgt2GPm1IY Demo video]<br />
<br />
<gallery><br />
File:Measure segment LPE.png|''Measure Segments LPE''|alt=Measure Segments LPE<br />
</gallery><br />
<br />
=== Mirror Symmetry and Rotate Copies LPE===<br />
<br />
* Split feature: This new feature allows custom styles for each part of the resulting drawing without unlinking the LPE. [https://www.youtube.com/watch?v=mIzrQ2lpzuw Demo Video]<br />
* The LPE display now updates accordingly when there are objects added or removed.<br />
<br />
<gallery><br />
File:Rotate copies LPE with style split.png|''Separate styles for rotated copies''|alt=Separate styles for rotated copies<br />
</gallery><br />
<br />
=== Power Clip and Power Mask LPE ===<br />
<br />
This new LPE adds options to clips and masks.<br />
<br />
[https://ia601501.us.archive.org/34/items/00003303/0000-3303.ogv Demo Video]<br />
<br />
=== Dash Stroke LPE ===<br />
<br />
This new LPE creates uniformly dashed paths, optionally by subdividing the path's segments, or including dashes that are symmetrically wrapped around corners.<br />
<br />
<gallery><br />
File:Dash stroke LPE.png|''Rectangles with dash stroke LPE with various settings''|alt=Rectangles with dash stroke LPE with various settings<br />
</gallery><br />
<br />
[https://archive.org/details/dash-stroke-lpe Demo Video]<br />
<br />
=== PowerStroke LPE Improvements ===<br />
<br />
* '''Width scale''' setting added: adjust the overall width of the stroke after it has been drawn.<br />
* '''Closed paths''': PowerStroke now works much better on closed paths.<br />
<br />
=== Ellipse from Points ===<br />
<br />
This new LPE creates an optimally fitted ellipse from a path's nodes.<br />
<br />
In contrast to the already existing LPE "Ellipse by 5 points" this LPE is more flexible (since, depending on the number of points available, it can fit both circles and ellipses) and has more features. Especially technical illustrators can benefit from these features.<br />
<br />
See [[LPE:_Ellipse_from_Points]] for a documentation.<br />
<br />
<gallery><br />
File:Ellipse from points LPE.png|''Ellipse (5 nodes), circle (3 nodes), circle segment (3 nodes), isometric circle (3 nodes), isometric circle with frame (3 nodes)''|alt=Ellipse (5 nodes), circle (3 nodes), circle segment (3 nodes), isometric circle (3 nodes), isometric circle with frame (3 nodes)<br />
</gallery><br />
<br />
== Import / Export ==<br />
<br />
=== Linking and embedding SVG files ===<br />
<br />
On import of an SVG file, there is now a dialog that asks if the user would like to link to the SVG file, to embed it (base64 encoded) into an <img> tag, or if the objects in the SVG file should be imported into the document (which was how Inkscape handled importing SVG files previously). <br />
<br />
''[ TBC: The dpi value for displaying embedded SVG files can be set in the import dialog.]''<br />
<br />
This makes importing SVG files work (almost) the same as importing raster images.<br />
<br />
<br />
The 'Embed' and 'Extract' options in the context menu for linked SVG files work the same as they do for raster images. The 'Edit externally' option will open the linked SVG file with Inkscape per default. This setting can be changed in the preferences' 'Imported Images' section.<br />
<br />
The displaying of the dialog can be disabled by checking the 'Don't ask me again' option.<br />
<br />
Linked and embedded SVG images are displayed as their raster representations. <br />
<br />
The resolution used for displaying them ''[TBC: can be set per image? can be set in the xxx dialog for the selected image]'' is the default image import resolution set in the preferences' 'Imported Images' section. A change in this option will take effect upon closing and reopening the file, and will affect all linked SVG images in the file.<br />
<br />
=== Export PNG images ===<br />
<br />
The export dialog has received several new options which are available when you expand the 'Advanced' section.<br />
<br />
* Enable interlacing (ADAM7): when loading images, they will be displayed faster<br />
* Bit depth: set the number of bits that code for the color of a pixel, supports grayscale and up to 16bit<br />
* Compression type: choose strength of lossless compression<br />
* pHYs dpi: force-set a dpi value for the image<br />
* Antialiasing: choose type of antialiasing or disable it<br />
<br />
<br />
<gallery><br />
File:Png-export-options 1.0.png|''PNG export options''|alt=PNG export options<br />
File:Bit depth options 1.0.png|''PNG bit depth options''|alt=PNG bit depth options<br />
File:Compression options 1.0.png|''PNG compression options''|alt=PNG compression options<br />
File:Antialiasing options 1.0.png|''PNG antialiasing options''|alt=PNG antialiasing options<br />
</gallery><br />
<br />
== Extensions ==<br />
<br />
=== Extension development ===<br />
<br />
* All [[INX Parameters]] now have the common attribute <code>indent="n"</code> where <code>n</code> specifies the level of indentation in the extension UI.<br />
* Add <code>appearance="url"</code> for [[INX Parameters]] of type "description". You can now add clickable links to your extension UI.<br />
<br />
=== Plot extension ===<br />
<br />
The new option 'Convert objects to paths' will take care of converting everything to a path non-destructively before the data is sent to the plotter. [''gives wrong error message, maybe not working? https://gitlab.com/inkscape/inkscape/commit/dd3b6aa099175e2244e1e04dde45bf21a966425e#note_100908512'']<br />
<br />
== Palettes ==<br />
<br />
The Munsell palette has been added to Inkscape's set of stock palettes.<br />
<br />
<gallery><br />
File:Munsell palette.png|''Munsell palette''|alt=Munsell palette<br />
</gallery><br />
<br />
== Templates ==<br />
<br />
* The '''Desktop''' template has new options for 4k, 5k and 8k screens.<br />
* A new template for an A4 3-fold roll flyer was added.<br />
<br />
<gallery><br />
File:Desktop templates.png|''New template options for 'Desktop' template''|alt=New template options for 'Desktop' template<br />
File:A4 3fold roll template.png|''New A4 3-fold roll flyer template''|alt=New A4 3-fold roll flyer template<br />
</gallery><br />
<br />
== SVG and CSS ==<br />
<br />
* '''Dashes''': Inkscape can now load and display files with dashes and/or dashoffsets defined in other units than the unitless user unit (e.g. %, mm) correctly. There is no user interface for editing these values currently, except for the XML editor. Values for the dasharray that are entered in other units (except for %) will be converted to user units when the new values are set.<br />
<br />
* [Please fill in]<br />
<br />
== Dialogs ==<br />
<br />
=== Document Properties ===<br />
<br />
* When resizing the page, the page margin fields can now be locked, so the same value will be used for all margins, but only needs to be entered once.<br />
* The guides panel now has controls to lock or unlock all guides, create guides around the page, and delete all guides. These actions also appear on the Edit menu, making it possible to assign custom keyboard shortcuts.<br />
* Grids can now be aligned to the corners, edge midpoints, or centre of the page with a button click in the grids panel.<br />
<br />
<gallery><br />
File:Lock margins doc props.png|''Lock to set same margins for page resizing''|alt=Lock to set same margins for page resizing<br />
File:New guide options doc props.png|''Document properties: Toggle guide lock for document, create page border guides, remove all guides''|alt=Document properties: Toggle guide lock for document, create page border guides, remove all guides<br />
File:Grid alignment doc props.png|''Grid alignment options in document properties''|alt=Grid alignment options in document properties<br />
</gallery><br />
<br />
=== Preferences ===<br />
<br />
* The '''Bitmaps''' subsection has been renamed to '''Imported Images''', as it now applies to both imported (embedded or linked) raster images as well as to imported (embedded or linked) SVG images (i.e. to everything in <img> tags).<br />
* The '''System''' subsection lists more relevant folders and offers buttons to open those folders with the system's file browser. This makes it easier to find the correct folder, e.g. for resetting the preferences or for adding an extension or a new icon set.<br />
* An option for '''scaling a stroke's dash pattern when scaling the stroke width''' has been added and can be found at ''Behaviour → Dashes''. It is activated by default.<br />
* '''Autosave''' is now enabled by default. The default directory has changed (the path is displayed in Edit > Preferences > Input/Output > Autosave: Autosave directory).<br />
<br />
<gallery><br />
File:Open folders from preferences.png|''Important folders can be opened from the preferences''|alt=Important folders can be opened from the preferences<br />
</gallery><br />
<br />
=== Symbols ===<br />
<br />
* The Symbols dialog can now handle a lot of symbols without delay on startup, and also allows searching. Symbols and symbol sets now displayed in alphabetical order.<br />
<br />
<br />
<gallery><br />
File:Symbols list.png|''Symbol sets ordered alphabetically''|alt=Symbol sets ordered alphabetically<br />
File:Symbols search.png|''Searching for symbols''|alt=Searching for symbols<br />
</gallery><br />
<br />
== Customization ==<br />
<br />
=== Customize all files in the share folder === <br />
<br />
All files in <code>/share</code> can be over-ridden by placing files in the user's configuration folder (e.g. <code>~/.config/inkscape</code>). <br />
Configurable contents now includes extensions, filters, fonts, gradients, icons, keyboard shortcuts, preset markers, palettes, patterns, about screen, symbol sets, templates, tutorials and some user interface configuration files. Only the file 'units.xml' cannot be overridden.<br />
<br />
=== Fonts ===<br />
<br />
* Inkscape can now load fonts that are not installed on the system. By default Inkscape will load additional fonts from Inkscape's share folder (<code>/share/inkscape/fonts</code>) and the user's configuration folder (<code>~/.config/inkscape/fonts</code>). Custom folders can be set in preferences (see ''Tools → Text → Additional font directories'').<br />
<br />
<gallery><br />
File:Custom font folders.png|''Set custom font folders''|alt=Set custom font folders<br />
</gallery><br />
<br />
=== Keyboard shortcuts ===<br />
<br />
* Allow to use "Super", "Hyper" and "Meta" modifier keys<br />
* Improve shortcut handling code. This should fix a lot of issues and allow to use a lot of shortcuts which were inaccessible before, especially on non-English keyboard layouts.<br />
<br />
=== User interface customization ===<br />
<br />
* Inkscape is starting to use glade files for its dialogs so they can be reconfigured by users. Only one is currently supported (filter editor).<br />
* The contents of the menus can be configured by customizing the <code>menus.xml</code> file. <br />
* Toolbar contents for the command bar (<code>commands-toolbar.ui</code>), the snap bar (<code>snap-toolbar.ui</code>), the tool controls bars for each tool (<code>select-toolbar.ui</code>), the toolbox (<code>tool-toolbar.ui</code>) is now configurable.<br />
* The file <code>keybindings.rc</code> allows you to... '''(TODO: do what? What does it do in comparison to keys.xml? Seems to not work at all... seems to be ancient. Can be deleted?)'''<br />
* The interface colors and some more UI styles can be customized in <code>style.css</code> (very raw themeing support).<br />
<br />
=== Theme selection ===<br />
<br />
In 'Edit > Preferences > User Interface > Theme', users can set a custom GTK3 theme for Inkscape. If the theme comes with a dark variant, activating the 'Use dark theme' checkbox will result in the dark variant being used. The new theme will be applied immediately.<br />
<br />
New theme folders can be added to the directory indicated in Edit > Preferences > System : User themes. A large selection of (more or less current) GTK3 themes is available for download at [https://www.gnome-look.org/browse/cat/135/ord/top/ gnome-look.org]<br />
<br />
=== Icon set selection ===<br />
<br />
In 'Edit > Preferences > User Interface > Theme', the icon set to use can be selected. By default, Inkscape comes with 'hicolor' and 'Tango' icons. In addition to this, it offers to use the system icons.<br />
<br />
Inkscape also comes with a default symbolic icon set as part of the hicolor icon set. These icons can be colorized in a custom color.<br />
<br />
Changes to the icon set take effect when Inkscape is restarted, or when the entire user interface is reloaded by clicking on the 'Reload icons' button. This rebuilds all Inkscape windows. Rebuild takes a couple of seconds, during which the Inkscape interface will be invisible.<br />
<br />
<br />
<gallery><br />
File:Tango icons.png|''Light theme with Tango icon set''|alt=Light theme and Tango icon set<br />
File:Hicolor icons.png|''Light theme with hicolor icon set''|alt=Light theme and hicolor icon set<br />
File:Dark with symbolic icons.png|''Dark theme with symbolic icon set''|alt=Dark theme and symbolic icon set<br />
File:Dark symbolic custom color.png|''Dark theme with symbolic icon set and a custom icon color''|alt=Dark theme with custom colored symbolic icon set<br />
</gallery><br />
<br />
=== Saving the current file as template ===<br />
<br />
A new entry for saving the current file as a template has been added to the 'File' menu. You need to specify a name for it, and optionally, you can add the template's author, a description and some keywords. A checkbox allows you to set the new template as the default template.<br />
<br />
<gallery><br />
File:Save as templage.png|''Save current file as a template''|alt=Save current file as a template<br />
</gallery><br />
<br />
=== Custom page sizes in Document Properties ===<br />
<br />
Inkscape now creates along with the preferences file a "pages.csv" file containing the default page sizes, that you can edit to remove the ones you won't use, or add new ones.<br />
<br />
== Inkview ==<br />
<br />
'''Inkview''' was considerably improved and got some new features:<br />
<br />
* Support folders as input (will load all SVG files from the specified folder)<br/>The <code>-r</code> or <code>--recursive</code> option will even allow to search subfolders recursively.<br />
* Implement <code>-t</code> or <code>--timer</code> option which allows to set a time after which the next file will be automatically loaded.<br />
* Add <code>-s</code> or <code>--scale</code> option to set a factor by which to scale the displayed image.<br />
* Add <code>-f</code> or <code>--fullscreen</code> option to launch Inkview in fullscreen mode<br />
* Many smaller fixes and improvements<br />
<br />
<br />
== Command Line ==<br />
<br />
* [[Using xverbs|xverbs]] (command line commands that take parameters, e.g. for saving the selection under a specified filename as svg file) ([https://sourceforge.net/p/inkscape/mailman/inkscape-devel/thread/33487d06-e3c1-a4e5-1496-7b370d672d2f%40gmail.com/#msg35392523 mailing list thread])<br />
* New verb allows to swap fill and stroke from command line: EditSwapFillStroke (a keyboard shortcut can now be assigned to it) ([https://bugs.launchpad.net/inkscape/+bug/675690 bug 675690])<br />
* Files can now also be saved as Inkscape SVG without calling the GUI save dialog (new command: --export-inkscape-svg)<br />
* Inkscape can now import a specific page of a PDF file from the command line, for batch processing (new option: --pdf-page N)<br />
<br />
<br />
== Translations ==<br />
<br />
New UI translations for [please fill in].<br />
<br />
<br />
== Notable Bugfixes ==<br />
<br />
* Symbols: Visio Stencils loaded from .vss files now use their actual name instead of a placeholder derived from the symbol file's name ([https://bugs.launchpad.net/inkscape/+bug/1676144 bug 1676144])<br />
* Shapes on Pen and Pencil tools now retain color and width ([https://bugs.launchpad.net/inkscape/+bug/1707899 bug:1707899]).<br />
* Text and Font dialog: The font selection no longer jumps to the top of the list when clicking Apply.<br />
* Docked dialogs now open on their own when the corresponding functionality is called from a menu or button [TBC: Bug: if minimized, this requires a second click]<br />
* The icon preview dialog now correctly shows the page background (Bug #[https://bugs.launchpad.net/inkscape/+bug/1537497 1537497]).<br />
<br />
For an exhaustive list of bugs that have been fixed, please see the [https://launchpad.net/inkscape/1.0.x milestones page for Inkscape 1.0].<br />
<br />
== Known Issues ==<br />
<br />
[Please fill in]<br />
<br />
<br />
== Previous releases ==<br />
* [[Release notes/0.92]] ([[Release_notes/0.92.1 |0.92.1]], [[Release_notes/0.92.2 |0.92.2]], [[Release_notes/0.92.3 |0.92.3]])<br />
* [[Release notes/0.91]]<br />
* [[Release notes/0.48]] ([[Release notes/0.48.1 |0.48.1]], [[Release notes/0.48.2 | 0.48.2]], [[Release notes/0.48.3 | 0.48.3]], [[Release notes/0.48.4 | 0.48.4]], [[Release notes/0.48.5 | 0.48.5]])<br />
* [[Release notes/0.47]]<br />
* [[Release notes/0.46]]<br />
* [[Release notes/0.45]]<br />
* [[Release notes/0.44]]<br />
* [[Release notes/0.43]]<br />
* [[Release notes/0.42]]<br />
* [[Release notes/0.41]]<br />
* [[Release notes/0.40]]<br />
* [[Release notes/0.39]]<br />
* [[Release notes/0.38]]<br />
* [[Release notes/0.37]]<br />
* [[Release notes/0.36]]<br />
* [[Release notes/0.35]]</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Hackfest2018_Kiel_Topics&diff=111131Hackfest2018 Kiel Topics2018-09-09T08:29:59Z<p>Mc: </p>
<hr />
<div>Other pages: [[Hackfest2018 Kiel]], [[Hackfest2018 Kiel Attendees]].<br />
<br />
== Topics for Inkscape Hackfest 2018 in Kiel ==<br />
<br />
* Inkscape 1.0 release:<br />
** Testing<br />
** Bug fixing (Patrick, Mc)<br />
** Release notes (Maren)<br />
** Release news/press management (Vectors?)<br />
** Translations (focus on Spanish, Brazilian Portuguese, and Indonesian, Maren)<br />
** Discuss (and possibly put into place) a web interface (hosted or self-hosted) for Inkscape-related translations<br />
** Plan (Mc)<br />
* Improving developer documentation. (Patrick)<br />
** Test the build instructions (in recent mails people reported some problems)<br />
** Bugfix reporting process (Mc)<br />
** extensions API documentation, python, c++, gitlab... (jnweiger)<br />
* Improving user documentation.<br />
** Prepare 1.0 documentation (Patrick)<br />
* Improving the extension API, especially for physical output (lasercutting, vinyl plotting, ...) (doctormo, Max, jnweiger)<br />
** Hatching (Tav)<br />
** Improve/merge the lists of extensions<br />
* Licensing GPL 2 -> GPL 3 (Tav)<br />
* File menu [[Files: Output]] (Tav)<br />
* SVG 2 strategy (Tav)<br />
* Recruiting of new developers<br />
* improve first-user experience (Max, )<br />
* [https://gitlab.com/inkscape/inkscape/merge_requests/250 invert y-axis]<br />
** work on guides (Thomas)<br />
** work on 3D boxes (Thomas)<br />
** testing<br />
* Package dependencies (Mc ?)<br />
* ...</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Hackfest2018_Kiel_Topics&diff=111106Hackfest2018 Kiel Topics2018-09-09T08:11:45Z<p>Mc: </p>
<hr />
<div>Other pages: [[Hackfest2018 Kiel]], [[Hackfest2018 Kiel Attendees]].<br />
<br />
== Topics for Inkscape Hackfest 2018 in Kiel ==<br />
<br />
* Inkscape 1.0 release:<br />
** Testing<br />
** Bug fixing (Patrick, Mc)<br />
** Release notes (Maren)<br />
** Release news/press management (Vectors?)<br />
** Translations (focus on Spanish, Brazilian Portuguese, and Indonesian, Maren)<br />
** Discuss (and possibly put into place) a web interface (hosted or self-hosted) for Inkscape-related translations<br />
** Plan (Mc)<br />
* Improving developer documentation. (Patrick)<br />
** Test the build instructions (in recent mails people reported some problems)<br />
** Bugfix reporting process (Mc)<br />
* Improving user documentation.<br />
* Improving the extension API, especially for physical output (lasercutting, vinyl plotting, ...) (doctormo, Max)<br />
** Hatching (Tav)<br />
** Improve/merge the lists of extensions<br />
* Licensing GPL 2 -> GPL 3 (Tav)<br />
* File menu [[Files: Output]] (Tav)<br />
* SVG 2 strategy (Tav)<br />
* Recruiting of new developers<br />
* improve first-user experience (Max, )<br />
* ...</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Hackfest2018_Kiel_Attendees&diff=110676Hackfest2018 Kiel Attendees2018-07-31T16:59:52Z<p>Mc: </p>
<hr />
<div>Other pages: [[Hackfest2018 Kiel]], [[Hackfest2018 Kiel Topics]].<br />
<br />
== Who is Attending? ==<br />
<br />
{| class="wikitable" style="text-align: center;"<br />
|+ List of Attendees<br />
Hackfest<br />
|-<br />
! rowspan="2" | Who<br />
! rowspan="2" | Dates<br />
! rowspan="2" | Maximum Allocation<br />
! colspan="2" | Arrival<br />
! colspan="2" | Departure<br />
! rowspan="2" | Hotel<br />
|-<br />
! Date/Time<br />
! Detail<br />
! Date/Time<br />
! Detail<br />
|-<br />
| Tavmjong Bah<br />
| 9/9, 9/10, 9/11, 9/12, 9/13 (TBC)<br />
| $2000<br />
| <br />
| <br />
| <br />
| <br />
|<br />
|-<br />
| Maren Hachmann<br />
| 9/9, 9/10, 9/11, 9/12, 9/13<br />
| N/A (local)<br />
| <br />
| <br />
| <br />
| <br />
|<br />
|-<br />
| Martin Owens<br />
| 9/9, 9/10, 9/11, 9/12, 9/13<br />
| $2000<br />
| 2018-09-08<br />
| Iceland Air (FI632)-(FI510)<br />
| 2018-09-14<br />
| Iceland Air (FI511)-(FI633)<br />
| TBD<br />
|-<br />
| Thomas Holder<br />
| 9-? (TBC)<br />
| $2000<br />
| <br />
| <br />
| <br />
| <br />
|<br />
|-<br />
| Christopher Rogers<br />
| 9-13<br />
| $2000<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| Marc Jeanmougin<br />
| 9-13<br />
| $2000<br />
| 2018-09-08<br />
| ICE74 @18h44 (train)<br />
| 2018-09-15<br />
| ICE77 @11h13 (train)<br />
|<br />
|-<br />
| Jabier Arraiza<br />
| 9-13<br />
| $2000<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| Mihaela Jurković<br />
| 9-13 (TBC)<br />
| $2000<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| Max Gaukler<br />
| 9-? (TBD)<br />
| $2000<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| Krzysztof Kosiński<br />
| 9/? (TBD)<br />
| $0 (self-sponsored)<br />
| <br />
| <br />
| <br />
| <br />
|<br />
|-<br />
| Patrick "Ede_123" Storz<br />
| 9/? (TBD)<br />
| $2000<br />
| <br />
| <br />
| <br />
| <br />
|<br />
|-<br />
| Jürgen Weigert<br />
| 9-13<br />
| $2000<br />
| <br />
| <br />
| <br />
| <br />
| Centro Hotel Consul<br />
|-<br />
| Alex Valavanis<br />
| 9/? (TBD)<br />
| $2000<sup>1</sup><br />
| <br />
| <br />
| <br />
| <br />
|<br />
|-<br />
| Khaled Hosny<br />
| 9/? (TBD)<br />
| $2000<sup>1</sup><br />
| <br />
| <br />
| <br />
| <br />
|<br />
|-! Total<br />
!<br />
! $22,000<br />
!<br />
!<br />
!<br />
!<br />
!<br />
|}<br />
<br />
TBD: "To Be Determined"<br />
<br />
The Inkscape board has approved travel reimbursements of up to $2000 per person. Note: additional participants require the formality of a board vote.<br />
<br />
Separate allocations for:<br />
* Inkscape dinner, participants and guests (450€).<br />
* Snacks, etc. (300€).<br />
* Venue: Free.<br />
<br />
<sup>1</sup> Requires formality of board vote.</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Hackfest2018_Kiel_Attendees&diff=110671Hackfest2018 Kiel Attendees2018-07-31T16:59:16Z<p>Mc: </p>
<hr />
<div>Other pages: [[Hackfest2018 Kiel]], [[Hackfest2018 Kiel Topics]].<br />
<br />
== Who is Attending? ==<br />
<br />
{| class="wikitable" style="text-align: center;"<br />
|+ List of Attendees<br />
Hackfest<br />
|-<br />
! rowspan="2" | Who<br />
! rowspan="2" | Dates<br />
! rowspan="2" | Maximum Allocation<br />
! colspan="2" | Arrival<br />
! colspan="2" | Departure<br />
! rowspan="2" | Hotel<br />
|-<br />
! Date/Time<br />
! Detail<br />
! Date/Time<br />
! Detail<br />
|-<br />
| Tavmjong Bah<br />
| 9/9, 9/10, 9/11, 9/12, 9/13 (TBC)<br />
| $2000<br />
| <br />
| <br />
| <br />
| <br />
|<br />
|-<br />
| Maren Hachmann<br />
| 9/9, 9/10, 9/11, 9/12, 9/13<br />
| N/A (local)<br />
| <br />
| <br />
| <br />
| <br />
|<br />
|-<br />
| Martin Owens<br />
| 9/9, 9/10, 9/11, 9/12, 9/13<br />
| $2000<br />
| 2018-09-08<br />
| Iceland Air (FI632)-(FI510)<br />
| 2018-09-14<br />
| Iceland Air (FI511)-(FI633)<br />
| TBD<br />
|-<br />
| Thomas Holder<br />
| 9-? (TBC)<br />
| $2000<br />
| <br />
| <br />
| <br />
| <br />
|<br />
|-<br />
| Christopher Rogers<br />
| 9-13<br />
| $2000<br />
| 2018-09-08<br />
| ICE74 @18h44 (train)<br />
| 2018-09-15<br />
| ICE77 @11h13 (train)<br />
|<br />
|-<br />
| Marc Jeanmougin<br />
| 9-13<br />
| $2000<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| Jabier Arraiza<br />
| 9-13<br />
| $2000<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| Mihaela Jurković<br />
| 9-13 (TBC)<br />
| $2000<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| Max Gaukler<br />
| 9-? (TBD)<br />
| $2000<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| Krzysztof Kosiński<br />
| 9/? (TBD)<br />
| $0 (self-sponsored)<br />
| <br />
| <br />
| <br />
| <br />
|<br />
|-<br />
| Patrick "Ede_123" Storz<br />
| 9/? (TBD)<br />
| $2000<br />
| <br />
| <br />
| <br />
| <br />
|<br />
|-<br />
| Jürgen Weigert<br />
| 9-13<br />
| $2000<br />
| <br />
| <br />
| <br />
| <br />
| Centro Hotel Consul<br />
|-<br />
| Alex Valavanis<br />
| 9/? (TBD)<br />
| $2000<sup>1</sup><br />
| <br />
| <br />
| <br />
| <br />
|<br />
|-<br />
| Khaled Hosny<br />
| 9/? (TBD)<br />
| $2000<sup>1</sup><br />
| <br />
| <br />
| <br />
| <br />
|<br />
|-! Total<br />
!<br />
! $22,000<br />
!<br />
!<br />
!<br />
!<br />
!<br />
|}<br />
<br />
TBD: "To Be Determined"<br />
<br />
The Inkscape board has approved travel reimbursements of up to $2000 per person. Note: additional participants require the formality of a board vote.<br />
<br />
Separate allocations for:<br />
* Inkscape dinner, participants and guests (450€).<br />
* Snacks, etc. (300€).<br />
* Venue: Free.<br />
<br />
<sup>1</sup> Requires formality of board vote.</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Hackfest2018_Kiel_Attendees&diff=110281Hackfest2018 Kiel Attendees2018-06-16T09:19:30Z<p>Mc: </p>
<hr />
<div>Other pages: [[Hackfest2018 Kiel]], [[Hackfest2018 Kiel Topics]].<br />
<br />
== Who is Attending? ==<br />
<br />
{| class="wikitable" style="text-align: center;"<br />
|+ List of Attendees<br />
Hackfest<br />
|-<br />
! rowspan="2" | Who<br />
! rowspan="2" | Dates<br />
! rowspan="2" | Maximum Allocation<br />
! colspan="2" | Arrival<br />
! colspan="2" | Departure<br />
! rowspan="2" | Hotel<br />
|-<br />
! Date/Time<br />
! Detail<br />
! Date/Time<br />
! Detail<br />
|-<br />
| Tavmjong Bah<br />
| 9/9, 9/10, 9/11, 9/12, 9/13 (TBC)<br />
| TBD<br />
| <br />
| <br />
| <br />
| <br />
|<br />
|-<br />
| Maren Hachmann<br />
| 9/9, 9/10, 9/11, 9/12, 9/13<br />
| N/A (local)<br />
| <br />
| <br />
| <br />
| <br />
|<br />
|-<br />
| Martin Owens<br />
| 9-13 (TBC)<br />
| TBD<br />
| <br />
| <br />
| <br />
| <br />
|<br />
|-<br />
| Thomas Holder<br />
| 9-? (TBC)<br />
| <br />
| <br />
| <br />
| <br />
| <br />
|<br />
|-<br />
| Christopher Rogers<br />
| 9-13<br />
| TBD<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| Marc Jeanmougin<br />
| 9-13<br />
| TBD<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
! Total<br />
!<br />
! $xxxx<br />
!<br />
!<br />
!<br />
!<br />
!<br />
|}<br />
<br />
TBD: "To Be Determined"<br />
<br />
Budget TBD. Separate allocation for Inkscape dinner (TBD). Venue: Free.<br />
<br />
''' Funding approved, funding details need to be determined in a second election by Inkscape board.'''<br />
<br />
Allocation for attending hackfest:<br />
* TBD</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Inkscape_Devlibs&diff=110211Inkscape Devlibs2018-06-01T06:52:49Z<p>Mc: </p>
<hr />
<div>{{Note|The information on this page is outdated. Please see '''[[Compiling Inkscape on Windows]]''' for the updated instructions.}}<br />
<br />
'''For 64 bit: see [[Inkscape Devlibs 64-bit]]'''<br />
<br />
----<br />
<br />
Inkscape Devlibs are a bundle of libraries and tools used to [[Compiling Inkscape on Windows|compile Inkscape on Windows]]. It is hosted in a [https://launchpad.net/inkscape-devlibs Launchpad repository]. Here's some information for those who need to maintain them and rebuild all or part of the libraries.<br />
<br />
== What you need to start ==<br />
<br />
* Install the [http://www.tdragon.net/recentgcc/ TDM-GCC] build of MinGW into c:\mingw (or any other folder). This is the compiler.<br />
<br />
* Install [http://www.mingw.org/wiki/msys MSYS]. This is the Unix-like build environment including a shell. When you run the MSYS installer, at the end it will ask you if you have MinGW installed and if so, where. Specify the directory where you installed MinGW.<br />
Make sure that you are using MSYS's make inside MSYS, instead of MinGW's make. You will need a recent version of MSYS, use mingw-get to install it. (make version 3.81 works for me)<br />
<br />
* Check out the current devlibs into C:\devlibs from Launchpad repository (see [[Win32Port]]).<br />
<br />
* Download sources for the libraries you want to build. Released versions are recommended, not snapshots.<br />
<br />
* Create an empty directory C:\devlibs-update. This is where the resulting compiled libraries will be placed. When you succeed, you'll have to copy them to c:\devlibs before recompiling Inkscape, so it can use the new libs.<br />
<br />
== Updating the C part of devlibs ==<br />
<br />
The C part of the GTK stack can be directly copied from official development bundles. Do not copy unneeded stuff like .lib, .def, static libraries, examples or documentation.<br />
<br />
=== Rebuilding libgc ===<br />
<br />
Use MSYS and this configure command. Tested with GC 7.1. Threading support does not work: GC 6.8 compiles but causes a segfault on startup, while GC 7.1 doesn't compile.<br />
$ ./configure --enable-large-config --disable-shared --disable-threads<br />
--prefix=/c/devlibs-update<br />
<br />
Note: as of GC 7.3, libatomic_ops needs to be downloaded separately and installed in the GC source base directory (see http://www.hboehm.info/gc/#where).<br />
<br />
=== Conflict between gc.h and MagickCore.h ===<br />
<br />
ImageMagick defines _DLL in its pkg-config file to mark its API as imported from DLLs. However, the same symbol is also used by libgc, and we currently link it as a static library. To solve this conflict, two things were done:<br />
* The bit that defines GC_DLL when _DLL is defined was removed.<br />
* The pkg-config file was changed to define _MAGICKDLL_ instead of _DLL - this define is also supported in the MagickCore.h header.<br />
<br />
===Potrace===<br />
<br />
Now (Inkscape 0.92+) that we compile against an external Potrace library, libpotrace needs to be maintained in the devlibs. Nothing special except that you need to provide CPPFLAGS and LDFLAGS for zlib:<br />
<br />
$ CPPFLAGS="-I/c/devlibs/include"<br />
LDFLAGS="-L/c/devlibs/lib"<br />
./configure --prefix /c/devlibs-update --with-libpotrace<br />
<br />
== Rebuilding cairo ==<br />
<br />
* Download and unzip a release of pixman and cairo from [http://cairographics.org cairographics.org].<br />
<br />
* Run MSYS, and in its shell window, give the following commands:<br />
<br />
$ export PKG_CONFIG_PATH=/c/devlibs-update/lib/pkgconfig:/c/devlibs/lib/pkgconfig<br />
$ PATH="/c/devlibs-update/bin:$PATH:/c/devlibs/bin"<br />
$ PATH=$PATH:/c/devlibs/perl/bin<br />
$ export LDFLAGS="-L/c/devlibs/lib -lpthreadGC2"<br />
<br />
* cd to pixman source dir and do:<br />
<br />
$ CPPFLAGS="-I/c/devlibs/include" CXXFLAGS="-O2" ./configure --prefix=/c/devlibs-update<br />
$ make<br />
$ make install<br />
<br />
* then cd to the cairo source dir and do the same 3 commands<br />
<br />
Done! Now in c:\devlibs-update\bin you will find the new libpixman-1-0.dll and libcairo-2.dll.<br />
<br />
If you encounter a "previous declaration of 'ssize_t' was here" error when compiling, add "#define _SSIZE_T_DEFINED 1" in the config.h file in the cairo source folder. (error still present with cairo 1.12.14).<br />
<br />
The same or similar procedure should work for other C libs.<br />
<br />
== Rebuilding the gtkmm stack ==<br />
<br />
The C++ libraries are: libsigc++, glibmm, cairomm, pangomm, gtkmm. We use only header-only libraries from boost, so it doesn't need to be rebuilt - just copy the headers.<br />
<br />
* Install Doxygen: gtkmm wants it, otherwise it won't build.<br />
<br />
* Run MSYS. Set up paths the following way. The object of this is to build e.g. gtkmm using the glibmm you have just built.<br />
$ export PKG_CONFIG_PATH=/c/devlibs-update/lib/pkgconfig:/c/devlibs/lib/pkgconfig<br />
$ PATH="/c/devlibs-update/bin:$PATH:/c/devlibs/bin"<br />
$ PATH="$PATH:/c/Program Files/Doxygen/bin"<br />
<br />
* For C++11, setup the CXXFLAGS correctly. You have to add "-std=gnu++0x" (gcc) or "-std=c++11" (clang). (note that if you have to change CXXFLAGS later on, you should add "-std=gnu++0x"!)<br />
$ export CXXFLAGS="-std=gnu++0x -O2"<br />
<br />
* When using DW2 exception handling, extra stuff is needed. Also, if you need to point to another compiler, use CXX and CC:<br />
$ export LDFLAGS="-shared-libgcc"<br />
$ export CXX=g++-dw2<br />
$ export CC=gcc-dw2<br />
<br />
* For each C++ library, configure, build and install it. Do it in the following order: libsigc++, glibmm, cairomm, pangomm, gtkmm. The commands should look like this:<br />
$ CXXFLAGS="-O2" ./configure --prefix=/c/devlibs-update<br />
$ make<br />
$ make install<br />
<br />
* pangomm, cairomm and gtkmm seem to want Freetype2, but don't use pkg-config to find it. For them, do something like this. Note that those are backticks, not apostrophes.<br />
$ FT2_CFLAGS=`pkg-config --cflags freetype2`<br />
$ FT2_LIBS=`pkg-config --libs freetype2`<br />
$ CXXFLAGS="-O2 $FT2_CFLAGS" LDFLAGS="$FT2_LIBS" ./configure --prefix=/c/devlibs-update<br />
<br />
* devlibs\include\fontconfig\fontconfig.h may give a warning with C++11, change<br />
#define FC_CACHE_SUFFIX ".cache-"FC_CACHE_VERSION<br />
#define FC_DIR_CACHE_FILE "fonts.cache-"FC_CACHE_VERSION<br />
#define FC_USER_CACHE_FILE ".fonts.cache-"FC_CACHE_VERSION<br />
to<br />
#define FC_CACHE_SUFFIX ".cache-" FC_CACHE_VERSION<br />
#define FC_DIR_CACHE_FILE "fonts.cache-" FC_CACHE_VERSION<br />
#define FC_USER_CACHE_FILE ".fonts.cache-" FC_CACHE_VERSION<br />
C++11 wants a space between string literals.<br />
<br />
* giomm (which is part of glibmm) has a defective main header which includes Unix-specific stuff that is not built on Windows. Comment out the following three includes in C:\devlibs-update\include\giomm-2.4\giomm.h. Otherwise gtkmm will not build. [Apparently fixed in Glibmm-2.42.0]<br />
#include <giomm/desktopappinfo.h><br />
#include <giomm/unixinputstream.h><br />
#include <giomm/unixoutputstream.h><br />
<br />
* Prune C:\devlibs-update from unneeded stuff. In particular, you don't need static libraries, libtool files (.la), documentation and example programs. Note however that you DO need import libraries. They end with .dll.a - don't confuse them with static libraries that end with .a.<br />
<br />
* Copy the contents of C:\devlibs-update to C:\devlibs and enjoy.<br />
<br />
* Before the enjoyment can start, it may be that some pkg-config files are misconfigured. In my case C:\devlibs\lib\pkgconfig\gtkmm-2.4.pc had to be modified, 1st to include glibmm-2.4, and 2nd the version number comparisons had to be dropped (possibly because of old version of pkg-config.exe?). I had to correct the Requires: lines as follows:<br />
C:\devlibs\lib\pkgconfig\gtkmm-2.4.pc<br />
Requires: glibmm-2.4 atkmm-1.6 giomm-2.4 pangomm-1.4 gtk+-2.0 gdkmm-2.4<br />
C:\devlibs\lib\pkgconfig\gdkmm-2.4.pc<br />
Requires: cairomm-1.0 giomm-2.4 >= 2.27.93 pangomm-1.4 >= 2.27.1 gtk+-2.0 >= 2.24.0<br />
<br />
* For TDM-GCC 4.8.1, I have to delete devlibs/include/pthread.h because it is already supplied by the compiler and it will result in bad errors. windows.h is included by the devlibs/include/pthread.h, and fouls the complete namespace. (So you will see many name clashes, for example vpsc::Rectangle will clash if the namespace vpsc is not mentioned.<br />
<br />
== Rebuilding other C++ libraries ==<br />
<br />
Inkscape currently uses two non-gtkmm C++ libraries: Poppler and Magick++ (part of ImageMagick). There are currently problems with Poppler later than 0.12.1, see [https://bugs.launchpad.net/inkscape/+bug/487038 bug 487038] for status.<br />
<br />
===Poppler===<br />
<br />
Follow the procedure for the gtkmm stack outlines above, with the following modifications:<br />
<br />
* Ensure that you have libtiff, libpng and libjpeg development files matching the versions supplied by GTK. They can be downloaded from the GTK+ Windows binaries page, but should also be included in Devlibs.<br />
* Poppler complains that it wants libopenjpeg for JPEG2000 support. I have not been successful in building it correctly with MinGW, however.<br />
* libjpeg headers are broken - they define types that have conflicting definitions in basetsd.h and rpcndr.h (part of Windows API). To fix this, do two things.<br />
** Modify jmorecfg.h at line 162 - remove the final underscore. Apparently the include guards differ between the MS-supplied Win32 headers and the MinGW-supplied ones. The header in devlibs has this modification applied.<br />
#ifndef _BASETSD_H<br />
** Comment out line 52 of c:\tdm-gcc\include\rpcndr.h<br />
/*typedef unsigned char boolean;*/<br />
* You need to add Perl you PATH (for glib-mkenums).<br />
$ PATH="$PATH:/c/devlibs/perl/bin"<br />
* You need to tell configure you want the internal headers, which Inkscape uses at the moment (but shouldn't: see [https://bugs.launchpad.net/inkscape/+bug/254849 bug 254849]).<br />
$ CXXFLAGS="-O2" CFLAGS="-O2"<br />
CPPFLAGS="-I/c/devlibs-update/include -I/c/devlibs/include"<br />
LDFLAGS="-L/c/devibs-update/lib -L/c/devlibs/lib<br />
./configure --prefix=/c/devlibs-update --enable-xpdf-headers<br />
<br />
* In case compilation fails with a "GetFileSizeEx was not declared in this scope" error, set the WINVER value (in c:\tdm-gcc\include\windef.h) to 0x0501 (for Windows XP) or more.<br />
<br />
===ImageMagick===<br />
<br />
ImageMagick needs the Freetype2 treatment. Additionally, the version of libtool it uses is retarded in some way, because it can't find the compiler's libgomp. You need to specify the compiler's library dir explicitly.<br />
$ FT2_CFLAGS=`pkg-config --cflags freetype2`<br />
$ FT2_LIBS=`pkg-config --libs freetype2`<br />
$ CXXFLAGS="-O2" CFLAGS="-O2"<br />
CPPFLAGS="-I/c/devlibs-update/include -I/c/devlibs/include $FT2_CFLAGS"<br />
LDFLAGS="-L/c/devibs-update/lib -L/c/devlibs/lib $FT2_LIBS<br />
-L/mingw/lib/gcc/mingw32/4.4.1"<br />
./configure --prefix=/c/devlibs-update --disable-static --without-perl<br />
<br />
== Generating import libraries from DLLs ==<br />
<br />
MinGW requires an import library to link against DLLs using -l switches. Fortunately, it's usually possible to generate it from the DLL. Here's how to do this.<br />
* Download the [http://sourceforge.net/projects/mingw/files/MinGW%20pexports/pexports-0.44-1/pexports-0.44-1-mingw32-bin.tar.lzma/download <tt>pexports</tt> utility] from MinGW and unpack it somewhere into your PATH.<br />
* Navigate to the DLL directory and say this:<br />
pexports some.dll > some.def<br />
dlltool -D some.dll -d some.def -l libsome.dll.a<br />
* Move libsome.dll.a to the <tt>lib</tt> directory of devlibs. You have to use a name that matches the pattern lib*.dll.a. Delete the .def file that was generated as a side effect.<br />
* Now you can link against somelib.dll using -lsome.<br />
* If you rename the DLL, you'll have to regenerate the import library and relink any libraries and executables linked against that DLL.<br />
<br />
== Generating libboost_python for py2geom ==<br />
<br />
'''Unfortunately, our version of Boost (1.34) does not support our gcc version. So you cannot follow these instructions at this moment. We have to upgrade our Boost version to 1.37 or higher to be able to build it with our gcc... See the [http://bugs.mysql.com/bug.php?id=45798 bug report here]. I have uploaded my old libboost_python binaries to devlibs, built using MinGW 4.2.1'''<br />
<br />
This concerns generating lib\libboost_python.a and lib\libboost_python.dll, required for building and using py2geom (lib2geom's python bindings). I have followed the [http://www.boost.org/doc/libs/1_42_0/libs/python/doc/building.html procedure described by Boost]. <br />
<br />
* download Boost's source (not the latest Boost version, but the Boost version that is included in the devlibs!)<br />
* figure out how to get the bjam build program.<br />
* go to the commandline and to the root of the Boost you downloaded (in my case c:\boost, and make sure gcc is in the path (run Inkscape's mingwenv.bat)<br />
* execute<br />
<br />
C:\Boost> bjam --with-python --toolset=gcc<br />
<br />
* Boost will build a variety of different libboost_python binaries in the "bin.v2" directory. For py2geom, we want the dynamically linked library. The files we want are located in bin.v2\libs\python\build\gcc-mingw-4.2.1\release. Copy "libboost_python-mgw42-1_34_1.a" and "libboost_python-mgw42-1_34_1.dll" to devlibs\lib, and rename them to libboost_python.a and libboost_python.dll.<br />
* Commit to bzr and you are done!</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Inkscape_Devlibs_64-bit&diff=110206Inkscape Devlibs 64-bit2018-06-01T06:52:30Z<p>Mc: </p>
<hr />
<div>{{Note|The information on this page is outdated. Please see '''[[Compiling Inkscape on Windows]]''' for the updated instructions.}}<br />
<br />
'''For 32 bit: see [[Inkscape Devlibs]]'''<br />
<br />
----<br />
<br />
Inkscape Devlibs 64-bit are a bundle of libraries and tools used to [[Compiling Inkscape on Windows 64-bit|compile Inkscape on Windows 64-bit]]. It is hosted in a [https://code.launchpad.net/~inkscape.dev/inkscape-devlibs64/trunk Launchpad project]. They have been compiled with SJLJ exception handling (not SEH), and are significantly newer than the 32-bit version of these libraries.<br />
<br />
bin/gdb.exe was cross-compiled from one of [[User:LiamW]]'s machines. The configure line was:<br />
<br />
CC="x86_64-w64-mingw32-gcc" LDFLAGS="-L/home/liam/gdb/install/lib -static -lexpat -Wl,-Bdynamic" \<br />
CPPFLAGS="-I/home/liam/gdb/install/include" ./configure --prefix=/home/liam/gdb/install \<br />
--host=x86_64-w64-mingw32 --with-expat<br />
<br />
==Aspell 0.60.6.1==<br />
aspell 0.60.6.1 was compiled (by Johan) using MSYS, the rest of devlibs64, and mingw64 compiler used for building Inkscape too.<br />
I.e.:<br />
export PATH=/c/mingw64/mingw64_posix_sjlj/bin:/c/devlibs64/bin:$PATH<br />
export PKG_CONFIG_PATH=/c/devlibs64/lib/pkgconfig<br />
<br />
One file had to be modified slightly. aspell-0.60.6.1/common/file_util.cpp, line 49:<br />
- || (asc_isalpha(file[0]) && file[1] == ':')<br />
+ || (isalpha(file[0]) && file[1] == ':')<br />
<br />
No special configure flags were used:<br />
CFLAGS = CXXFLAGS = "-O2"<br />
./configure<br />
<br />
The make files produced contain two errors, both in the file "libtool". Open that file, search for "x86_64-w64-mingw32-static/lib" and remove the quote (') after that string.</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Hackfest2018_LGM_Attendees&diff=109776Hackfest2018 LGM Attendees2018-04-04T19:03:40Z<p>Mc: /* Who is Attending? */</p>
<hr />
<div>Other pages: [[Hackfest2018 LGM]], [[Hackfest2018 LGM Topics]].<br />
<br />
== Who is Attending? ==<br />
<br />
{| class="wikitable" style="text-align: center;"<br />
|+ List of Attendees<br />
Hackfest<br />
|-<br />
! rowspan="2" | Who<br />
! rowspan="2" | Dates<br />
! rowspan="2" | Allocation<br />
! colspan="2" | Arrival<br />
! colspan="2" | Departure<br />
! rowspan="2" | Hotel<br />
|-<br />
! Date/Time<br />
! Detail<br />
! Date/Time<br />
! Detail<br />
|-<br />
| Tavmjong Bah<br />
| 4/26, 4/27, 4/28, 4/29, 4/30<br />
| $1000<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| Jabier Arraiza Cenoz<br />
| 4/26, 4/27, 4/28, 4/29, 4/30<br />
| $1000<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| Felipe "Juca" Sanches<br />
| 4/26, 4/27, 4/28, 4/29, 4/30<br />
| $1000<sup>1</sup><br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| Marc Jeanmougin<br />
| 4/26, 4/27, 4/28, 4/29, 4/30<br />
| $1000<br />
| 24/04 19h45<br />
| TO3108<br />
| 02/05 19h45<br />
| TO3109<br />
|AirBnB w/FSanches <br />
|-<br />
| Attendee 5<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
! Total<br />
!<br />
! $xxxx<sup>2</sup><br />
!<br />
!<br />
!<br />
!<br />
!<br />
|}<br />
<br />
TBD: "To Be Determined"<br />
<br />
Budget TBD. Separate allocation for Inkscape dinner (TBD). Venue: Free.<br />
<br />
<sup>1</sup> Sponsored by outside organization.<br />
<sup>2</sup> Actual expenditure expected to be much smaller.<br />
<br />
''' Funding approved by Inkscape board. Some additional funding may be possible from LGM. '''<br />
<br />
Allocation for attending hackfest:<br />
* Up to $1000 each for Inkscape developers who have contributed for 3+ years and > 200 commits.<br />
* Up to $750 each for Inkscape developers who have contributed for 2+ years and > 100 commits.<br />
* Up to $500 each for Inkscape developers who have contributed for 1+ year and > 50 commits.<br />
* Up to $250 each for any Inkscape contributor listed in AUTHORS file with at least 10 commits by Jan 1, 2018.<br />
<br />
If your are an active contributor to Inkscape but are NOT in the AUTHORS file (translator, documentor, etc.) we may still be able to provide some funding on a case-by-case basis.</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Hackfest2018_LGM_Attendees&diff=109771Hackfest2018 LGM Attendees2018-04-03T17:21:22Z<p>Mc: /* Who is Attending? */</p>
<hr />
<div>Other pages: [[Hackfest2018 LGM]], [[Hackfest2018 LGM Topics]].<br />
<br />
== Who is Attending? ==<br />
<br />
{| class="wikitable" style="text-align: center;"<br />
|+ List of Attendees<br />
Hackfest<br />
|-<br />
! rowspan="2" | Who<br />
! rowspan="2" | Dates<br />
! rowspan="2" | Allocation<br />
! colspan="2" | Arrival<br />
! colspan="2" | Departure<br />
! rowspan="2" | Hotel<br />
|-<br />
! Date/Time<br />
! Detail<br />
! Date/Time<br />
! Detail<br />
|-<br />
| Tavmjong Bah<br />
| 4/26, 4/27, 4/28, 4/29, 4/30<br />
| $1000<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| Jabier Arraiza Cenoz<br />
| 4/26, 4/27, 4/28, 4/29, 4/30<br />
| $1000<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| Felipe "Juca" Sanches<br />
| 4/26, 4/27, 4/28, 4/29, 4/30<br />
| $1000<sup>1</sup><br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| Marc Jeanmougin<br />
| 4/26, 4/27, 4/28, 4/29, 4/30<br />
| $1000<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| Attendee 5<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
! Total<br />
!<br />
! $xxxx<sup>2</sup><br />
!<br />
!<br />
!<br />
!<br />
!<br />
|}<br />
<br />
TBD: "To Be Determined"<br />
<br />
Budget TBD. Separate allocation for Inkscape dinner (TBD). Venue: Free.<br />
<br />
<sup>1</sup> Sponsored by outside organization.<br />
<sup>2</sup> Actual expenditure expected to be much smaller.<br />
<br />
''' Funding approved by Inkscape board. Some additional funding may be possible from LGM. '''<br />
<br />
Allocation for attending hackfest:<br />
* Up to $1000 each for Inkscape developers who have contributed for 3+ years and > 200 commits.<br />
* Up to $750 each for Inkscape developers who have contributed for 2+ years and > 100 commits.<br />
* Up to $500 each for Inkscape developers who have contributed for 1+ year and > 50 commits.<br />
* Up to $250 each for any Inkscape contributor listed in AUTHORS file with at least 10 commits by Jan 1, 2018.<br />
<br />
If your are an active contributor to Inkscape but are NOT in the AUTHORS file (translator, documentor, etc.) we may still be able to provide some funding on a case-by-case basis.</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Google_Summer_of_Code&diff=107226Google Summer of Code2017-11-01T18:32:59Z<p>Mc: </p>
<hr />
<div>= Welcome to Inkscape! =<br />
<br />
For quite a few years Inkscape has been successfully participating in [http://code.google.com/soc/ Google Summer of Code].<br />
<br />
GSoC is a program where Google funds the development of specific features in open source software by university students. You don't need to be a Computer Science student to apply. Features to be developed are picked by Inkscape administrators from the pool of proposals submitted by students.<br />
<br />
We've mentored about half a dozen students a year since GSoC started. Many students enjoyed their work and continue to be involved; perhaps your mentor will be a past GSoC student! We have a high rate of acceptance of student code into the core codebase. Indeed, GSoC projects have been a key source of some of Inkscape's best features in the past several releases.<br />
<br />
If you are interested in joining us this summer, it is time to get your proposal ready. You can choose a proposal from our list of suggestions or come up with one of your own. In either either case, you must give us a detailed outline of what you plan to do. It is highly recommended that you discuss your idea as early as possible with Inkscape developers. They not only can give you guidance as you flesh out your proposal but ultimately you must convince them that you can do the work planned in the time allotted.<br />
<br />
= Student Applications =<br />
<br />
* Google program information:<br />
** [https://summerofcode.withgoogle.com/ Home page].<br />
** Summer of Code Application form. Applications open at 19:00 UTC on March 20th.<br />
<br />
* Inkscape-specific information:<br />
** [[SOC Application Template]].<br />
** [[Roadmap | Inkscape Roadmap]] - to see our overall objectives.<br />
** [[SOC Writing Project Proposals]] - some guidelines for proposals.<br />
** [[SOC Selection Criteria]] - how we rate applications.<br />
<br />
'''Student Applications for GSoC 2017 must be submitted to the GSoC site by 19:00 UTC on April 3rd 2017.'''<br />
<br />
= The "two patches" rule =<br />
<br />
We require two patches from each potential GSoC student, before accepting the student for GSoC participation (it is the same requirement as for obtaining rights to commit changes to the Bazaar code repository).<br />
The reason for this requirement is that you can show us that you have succeeded in building Inkscape on your PC, and that you have understood a little piece of Inkscape's code and are able to improve it. <br />
Inkscape is a large project, and you really should not try to understand all the code. Many (all?) developers know only parts of the program code!<br />
You can join our [http://inkscape.org/discussion.php jabber/IRC] channel and ask developers for help.<br />
<br />
== Suggested "easy" bug fixes or improvements ==<br />
<br />
To get you started on Inkscape development, you can find (probably) easy-to-fix bugs or small improvements that require very little knowledge of the whole program by searching our [https://bugs.launchpad.net/inkscape bug-tracker] for bugs tagged with 'easy-fix'.<br />
<br />
= Performance Evaluation =<br />
<br />
GSoC has two formal evaluation points, at the ''mid-term'' and at the end. These evaluations determine if you receive the stipend from Google. In order to receive a pass for the evaluations you will need to show adequate progress toward your project's goals.<br />
<br />
To help you meet your goals and so that your mentor can better evaluate your progress you need to:<br />
<br />
* Have frequent, public discussions of your progress. (Don't rely on just your mentor for advice.)<br />
* Have a public Inkscape branch for your code to which you commit regularly.<br />
* Give weekly status reports.<br />
<br />
For the final pass, you will normally be required to merge your code into Inkscape trunk.<br />
<br />
Remember: ''we want you to succeed!''<br />
<br />
= Suggested Project Ideas =<br />
<br />
The following is a list of formal project suggestions, but do not feel limited to only these - some of our best contributions have been unique ideas that students had in mind from other sources!<br />
<br />
See also [[Development Project Ideas]] and https://blueprints.launchpad.net/inkscape/<br />
<br />
==P1. Better CSS Style Sheet Support (Done in 2017)==<br />
<br />
Enhance Inkscape's support for CSS style sheets.<br />
<br />
* Estimation of difficulty: Moderately hard<br />
* Potential mentors: Tavmjong Bah<br />
* Programming skills needed: C++<br />
* Prerequisites: Experience with CSS style sheets.<br />
<br />
<u>Detailed Description</u><br />
<br />
Inkscape has rudimentary support for CSS style sheets that can read and parse one internal style sheet. A 2016 GSoC project added a simple style dialog that can create and modify the internal style sheet. The dialog is very limited and is not intuitive to use. This project will extend the usefulness of that dialog by making it more user friendly and by extending its functionality. The use of CSS classes should eventually replace the Selection Set dialog.<br />
<br />
Stretch goals include:<br />
<br />
* Support external style sheets.<br />
* Support multiple internal style sheets.<br />
* Support CSS 3 selectors.<br />
* Support parsing of 'font-face'.<br />
<br />
<u>Use Cases</u><br />
<br />
* Support externally created SVGs.<br />
* Producing better SVGs for the Web.<br />
* Changing style on multiple objects at once (palettes).<br />
<br />
<u>Related Material</u><br />
<br />
* [https://www.w3.org/TR/CSS2/ CSS 2 Specification]<br />
* [https://www.w3.org/TR/css-2015/ CSS 2015 Snapshot]<br />
<br />
==P2. Development Project Management System==<br />
<br />
Enhance Inkscape's web tools for managing development projects.<br />
<br />
* Estimation of difficulty: Moderately hard<br />
* Potential mentors: Bryce Harrington<br />
* Programming skills needed: Python<br />
* Prerequisites: Working knowledge of Django web application development<br />
<br />
<u>Detailed Description</u><br />
<br />
Design and implement tools to allow submitting and editing ideas for development projects. Create various project listing views that display projects that need further editing, lists of projects meeting various criteria (e.g. janitorial, new features, programming language, etc.), assigned projects, completed projects, and so forth.<br />
<br />
This work would be part of a larger, ongoing effort to unify Inkscape's various collections of task ideas into a single system, to make them easier for potential contributors to review and select from. Some of this project has already been implemented, so you would be focusing on enhancing its user interfaces to make it more powerful and more broadly usable.<br />
<br />
<u>Use Cases</u><br />
* "Janitorial" tasks suitable for new developers looking for easy ways to get involved in Inkscape development<br />
* Google Summer of Code Project Ideas (this page!!)<br />
* Funded development work, with funds supplied by various fundraisers<br />
* User-supplied requests for feature enhancements<br />
<br />
<u>Related Material</u><br />
* Current collections of tasks that we want to eventually migrate into this system:<br />
** http://wiki.inkscape.org/wiki/index.php/Janitorial_tasks<br />
** https://blueprints.launchpad.net/inkscape/<br />
* [https://inkscape.org/en/support-us/funded-development/ High level specification for the system]<br />
* [[FundedProjectSystemDevelopment]] related tasks<br />
<br />
<br />
==P3. Slice toolbar items==<br />
[[File:Cuttool.png|200px|thumb|right|Example of result of the cut/eraser tool]]<br />
* Estimation of difficulty: Moderately hard<br />
* Potential mentors: Jabier Arraiza (Spanish, some English)<br />
* Programming skills needed: C++<br />
<br />
<u>Detailed Description</u><br />
The goal is a toolbar item, called "slice" to slice items in a easy way.<br />
We check to convert strokes to path previously to cut, to avoid continuing with stroke thought cut-out item fills.<br /><br />
Maybe positioned in the path menu after bool operations, the selected items are sliced from topmost path, converting strokes to paths, duplicating fills and maybe apply to groups (there is some work in groups boolops from Martin Owens). <br /><br />
A lot of helper code is done yet in flatten branch (Alexander Brock lp:~inkscape+alexander/inkscape/flatten).<br /><br />
There are new Boolean operations, implemented but not used in trunk. We need to switch the division and flatten branch methods from Livarot to these new operations.<br /><br />
Another feature interesting is a second toolbar item "slice from guides" to get the guides over the selected item and use it as cut-out.<br /><br />
<br />
<u>Use Cases</u><br />
* Better item slicing.<br />
<br />
==P4. SVG 2 Text Support (Done in GSOC 2017)==<br />
<br />
* Estimation of difficulty: Hard<br />
* Potential mentors: Tavmjong Bah<br />
* Programming skills needed: C++<br />
* Prerequisites: Familiarity with text layout. Knowledge of CSS.<br />
<br />
<u>Detailed Description</u><br />
<br />
Inkscape currently has a non-compliant flowed text feature (based on SVG 1.2 which was never adopted) that needs to be made compatible with both SVG2 and SVG 1.1. This project is to re-implement the flowed text feature within Inkscape to be SVG2 compliant and to have a proper SVG 1.1 fallback. In addition to the flowed text itself as it exists within Inkscape, SVG2 adds new formatting features including shape-margin and shape-padding, shape-inside and shape-outside, exclusions, additional white-space control settings, pre-wrap, pre-line, etc.<br />
<br />
<u>Use Cases</u><br />
* Proper text flow into rectangles and other shapes.<br />
<br />
<u>Related Material</u><br />
* [https://svgwg.org/svg2-draft/text.html Current draft of SVG 2 text specification.]<br />
<br />
==P5. UI-Free Inkscape ==<br />
<br />
* Estimation of difficulty: Moderate<br />
* Potential mentors: Marc Jeanmougin<br />
* Programming skills: C++, CMake<br />
* Prerequisites: Minimal knowledge of build systems<br />
<br />
<u>Detailed Description</u><br />
Inkscape currently builds with X11 and gtk and a lot of graphical dependencies. But since it is allowed to run in commandline, and there are controlled environments (servers) that use it to convert svg to png and to perform actions, there should be no need to force it to build with those. The main goal of this project is to add a WITH_GUI compilation flag that when OFF, does *not* link Inkscape with any graphical dependency. Then action verbs should be checked and made independent from the gui (one should be able to use any action modifying the svg in --no-gui mode, which is not currently the case). <br />
<br />
Stretch goal may include the transformation of said verbs to Gio::Action regular actions to ease gtk3 handling, and/or no-gui performance optimizations (currently Inkscape actions in commandline are slower than with gui).<br />
<br />
<u>Use cases</u><br />
* Server installs, scripts<br />
<br />
<br />
==P6. Your project ==<br />
* Estimation of difficulty: Variable<br />
* Potential mentors: Marc Jeanmougin<br />
* Programming skills: usually C++<br />
* Prerequisites: good ideas<br />
<br />
<u>Detailed Description</u><br />
The most successful GSoC we had in the past were students coming with their own past, use cases and ideas for Inkscape. Many basic tools like 3d cubes or connectors you can see in Inkscape now have been brought by brilliant people (like you) with ideas. If we think that your project fits with Inkscape (ie: has its place with a vector graphic editor), we can help you refining your ideas and help bring shiny new stuff to life!<br />
<br />
<u>Use cases</u><br />
* Amaze us!<br />
<br />
<br />
<br />
= Successful SOC Projects from Previous Years =<br />
* 2005<br />
** Connectors<br />
** Inkboard<br />
** [http://www.openclipart.org/ Open Clip Art Library (OCAL)] Interface<br />
** DXF Import / Export<br />
* [[Google Summer of Code 2006|2006]]<br />
** Support for SVG Filters<br />
** Filter Effects<br />
** PDF export<br />
** Inkboard Protocol Spec / Lib Conversion<br />
* [[Google Summer of Code 2007|2007]]<br />
** Text Style Improvements<br />
** PDF import<br />
** Live Path Effects<br />
** 3D Box Tool<br />
** UI for SVG Filter Effects<br />
** Raster Functionality<br />
** Importing from, and Exporting to, a remote ccHost instance<br />
* [[Google Summer of Code 2008|2008]]<br />
** SVG Fonts support<br />
** 2Geom refactoring project - port most geometry code to 2Geom<br />
** lib2geom: interactive applications showing off the power of lib2geom<br />
** Tech drawing abilities<br />
** A test suite<br />
* 2009<br />
** [[GSoC2009 Node Tool Rewrite|Node tool rewrite]]<br />
** D-Bus scripting API<br />
** Connector tool improvements<br />
** ICC/CMYK workflow<br />
* 2010<br />
** Cairo-based rendering<br />
** C++ification of SP Layer<br />
* 2011<br />
** Rendering caching<br />
** Javascript support improvements<br />
** CSS support improvements<br />
* 2012<br />
** Usibility Improvements for Guides<br />
** [[Tiling tool|On-canvas support for Tessellations]]<br />
** Creating python bindings for lib2geom<br />
* [[Google Summer of Code 2013|2013]]<br />
** Recolor Tool<br />
** Improved Units Support<br />
** Electronics CAD Support<br />
** New From Templates Dialog<br />
** New Raster to Vector Algorithm<br />
* 2014<br />
** Better Support for SVG Paints<br />
** Robust Boolean and Stroking Operations for 2Geom<br />
* 2016<br />
** [[GSoC 2016 Better data structure for selections|Better data structure for selections]]<br />
** [[Style Editor|CSS Style Sheet Editor]]<br />
* 2017<br />
** SVG 2 Text Support<br />
** Better CSS Style Sheet Support<br />
[[Category:Developer Documentation]]</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Extension_repository&diff=107121Extension repository2017-10-24T22:47:25Z<p>Mc: https://answers.launchpad.net/inkscape/+question/659906</p>
<hr />
<div>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.<br />
<br />
Starting from 2015, users can upload their extensions into their InkSpace (gallery) to the [https://inkscape.org Inkscape website], which will then be made available to other users from our [https://inkscape.org/en/download/addons/ extensions gallery].<br />
<br />
This page lists extensions which are neither available per default in Inkscape, and which have not yet been uploaded to inkscape.org by their authors.<br />
<br />
== Extensions ==<br />
<br />
===[https://github.com/jnweiger/inkscape-gears-dev ImprovedGears]===<br />
Greatly improved Gears extension including racks, rings, offsets, metric sizes.<br />
<br />
===[https://github.com/Neon22/inkscape-jigsaw InkscapeJigsaw]===<br />
Create an NxM Jigsaw with randomisation, curve control, a surround and backboard. Optimised for minimal cuts.<br />
<br />
===[https://github.com/Neon22/inkscape-LasercutBox InkscapeLasertcutBox]===<br />
A tabbed box script with kerf adjustment for lasercutters. Minimal packing or perfect fit. Dimples for pressure fit of some materials.<br />
<br />
===[http://www.iki.fi/pav/software/textext/ TexText]===<br />
Embed re-editable LaTeX objects into SVG drawings.<br />
<br />
===[http://technoargia.free.fr/swftools/ SWF output]===<br />
Save drawings as SWF. (Updated version (compatible with Inkscape 0.48 on Linux) available on [https://gist.github.com/frederik-elwert/1a46f82fce5d3deb7842 GitHub]).<br />
<br />
===[http://wiki.colivre.net/Aurium/Puff Puff]===<br />
Fluffs elements! :D Ruby-based extension. Requires [http://wiki.colivre.net/bin/view/Aurium/RubyInk RubyInk].<br />
<br />
===[[CalligraphedOutlineFill]]===<br />
Helps to fill in the inside area of shapes drawn with the Calligraphy tool, similar to filling with the paint bucket. Alternative from Inkscape 0.91 on: PowerStroke path effect (instead of Calligraphy tool) + Clone original Path effect for the fill.<br />
<br />
===[http://wiki.colivre.net/Aurium/InkscapeGenerator Generator]===<br />
Replace text and data to automatically generate files (as PDF, PNG, EPS, PS, JPG, SVG), based on an SVG template and a CSV file. <br />
Also available via apt in Debian and Ubuntu repositories. [https://inkscape.org/en/~Moini/%E2%98%85example-files-for-generator-extension Example file set for testing]<!-- Confirmed to work on Linux, consists of a shell script (author gives instructions for Win and OS X - can they work?) --> <br />
<br />
===[https://github.com/kjellmf/svg2tikz SVG2tikz]===<br />
Export SVG paths as TikZ.<br />
<br />
===[[FindMatch]]===<br />
Looks for paths that match the selected path and places all matches on the same layer, note the comment at the bottom of the page.<br />
<br />
===[http://emilien.tlapale.com/code/inksyntax InkSyntax]===<br />
A source code syntax highlighter plugin for Inkscape (wrapping [http://pygments.org pygments] and [http://www.andre-simon.de/doku/highlight/en/highlight.html highlight]).<br />
<br />
===[http://sites.google.com/site/placeonpath/ Place Objects on Path]===<br />
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.<br />
<br />
===[http://svg2dxf.googlecode.com/files/svg2dxf_inkscape.zip svg2dxf]===<br />
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.<br />
<br />
===[https://github.com/brathering82/inkscape/tree/master/src Scale Generator]===<br />
Create a scale for a ruler, map, gauge, clock, compass, etc. Confirmed to work with Inkscape 0.91.<br />
<br />
===[http://code.google.com/p/scott-inkscape/wiki/SevenSegmentDigits Seven Segment Digits]===<br />
Create calculator style digits. [https://storage.googleapis.com/google-code-archive-source/v2/code.google.com/scott-inkscape/source-archive.zip Direct link]<br />
<br />
===[http://dp48069596.lolipop.jp/inkscape_script.html Closeoff, Scatterpath, Selection, Zigzag and Netting]===<br />
See [http://dp48069596.lolipop.jp/inkscape_video.html] for how to use Zigzag and scater extensions.<br />
<br />
===[http://wiki.xmoto.tuxfamily.org/index.php?title=How_to_create_smooth_levels_using_Inkscape Inksmoto]===<br />
Level editor for the Xmoto 2D-Motocross game.<br />
<br />
===[http://www.cnc-club.ru/forum/viewtopic.php?f=33&t=37 Close Curves]===<br />
Extension to close the paths in the selection.<br />
<br />
===[http://www.signcutpro.com/download-available-plug-ins/ SignCut Export]===<br />
Set of extensions that come with SignCut to enable Inkscape users to use plotters / cutters via the SignCut software.<br />
<br />
===[http://www.lysator.liu.se/~perni/iboardgameexts/ Boardgame extensions]===<br />
Inkscape Extensions for Boardgame Development [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. More recent versions available here: [https://github.com/lifelike/countersheetsextension] and here: [https://github.com/lifelike/hexmapextension]<br />
<br />
=== [http://sozi.baierouge.fr/ Sozi] ===<br />
A tool for presentations made using zooms and rotations, not just slides. Uses Javascript added to the .svg file to display in web-browsers.<br />
<br />
Version 13.11 is the last version of sozi which is available as an Inkscape extension. According to [http://sozi.baierouge.fr/release-14.10.html this article], future versions will be available as standalone-application.<br />
<br />
<!-- ===[http://wiki.softwarelivre.org/InkscapeBrasil/ExportarPDFCMYK CMYK pdf/tiff export]===<br />
Extension to export to CYMK colourspaced PDFs / Tiffs for Linux. More info in English (instead of Portuguese) [here http://www.inkscapeforum.com/viewtopic.php?f=11&t=5943].<br />
--><br />
===[http://sourceforge.net/projects/o-scape/ O-Scape; Orienteering map making tools]===<br />
Extensions to help make Orienteering maps; see this [http://www.nopesport.com/news/1343-o-scape-free-orienteering-mapping-software interview] for more information<br />
<br />
===[http://www.inkscapeforum.com/viewtopic.php?f=5&t=4729#p32019 Mirror]=== <br />
Mirror a path along any axis. From version 0.92 on, there will also be a Mirror LPE available.<br />
<br />
===[http://sourceforge.net/projects/inkscape-tables/ Tables in Inkscape]===<br />
Adds (experimental?) table suport as an extension.<br />
<br />
===[http://doctormo.org/2011/05/19/deviantart-plugins-released/ deviantArt uploaders]===<br />
Upload artwork to deviantArt from the "publish to" menue item under extensions.<!-- appears to be broken for current DA website and Inkscape --><br />
<br />
===[https://github.com/piroxiljin/inkscape-music-scale-generator Musical scales]===<br />
Extension for automatic generation schemes of musical scale and chords on piano.<br />
<br />
===[http://www.inkscapeforum.com/viewtopic.php?f=11&t=9212 Text from CSV]===<br />
Extension to enter text from a CSV file<br />
<br />
===[http://luther.ceplovi.cz/git/inkscape-ungroup-deep.git/ Deep Ungroup]===<br />
Ungroup all groups in the selected object. [https://github.com/cw/inkscape-ungroup-deep Alternative source]<br />
<br />
===[http://www.pernsteiner.org/inkscape/layerclip/ Layer Clip]===<br />
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.<br />
<br />
Features include: Clip containing layer, Clip layer above, Clip layer below, Clip parent layer.<br />
<br />
'''''Notes:'''<br />
''You must select an object in the clipping layer before applying the extension, otherwise you will receive an error message.<br />
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 "Clip layer below". This may be exploited to create a masking layer.<br />
Tested on Inkscape 0.48.2 r98''19''<br />
<br />
===[https://bitbucket.org/daviddamerell/inkscapesaveasicoextension Icon Generation]===<br />
This is an Inkscape output extension that adds an option to the "save-as" dialog box to generate Windows Icon files (*.ico). Uses perl.<br />
<br />
===[https://github.com/quirxi/SheetMetalCone/ Sheet Metal Cone]===<br />
This draws the 2d shape which is required to form a 3dcone (or truncated cone) after it's cut out (of whatever material). Documentation or to report a bug: http://www.quirxi.net/code/python/sheet_metal_cone/overview.html<br />
(released when 0.91 was current stable version)<br />
<br />
==Extensions for Programmers:==<br />
===[http://wiki.colivre.net/Aurium/RubyInk RubyInk]===<br />
Inkscape extension with Ruby<br />
<br />
===[http://wiki.colivre.net/Aurium/InkBash Ink-Bash]===<br />
<nowiki>ShellScript</nowiki> Forever!<br />
<br />
===[http://wiki.colivre.net/Aurium/InkMoz InkMoz]===<br />
The Bridge from Inkscape to Mozilla (Inkscape extension with Javascript and more)<br />
<br />
===[https://github.com/sambody/inkscape-guide-tools Inkscape guide tools]===<br />
These are a series of Inkscape extensions related to guides: Add centered guides to page or selection, Add margin guides to page or selection, Add grid guides and Remove selected guides. Allows to add guides at specified distances from the page border.<br />
<br />
== Extensions that have made it into Inkscape ==<br />
<br />
===[http://www.julienvitard.eu/en/eqtexsvg_en.html EQTeXSVG]===<br />
Convert an inline LATEX equation into SVG path using Python. More current version included in Inkscape's default extensions.<br />
<br />
===[[ExtrudeEffect]]===<br />
Extrude polygons to "3d", also make "string art". More current version included in Inkscape's default extensions.<br />
<br />
===[http://wiki.colivre.net/Aurium/InkscapeCalendarShellScript InkscapeCalendarShellScript]===<br />
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. More current version included in Inkscape's default extensions.<br />
<br />
===[http://wiki.colivre.net/Aurium/InkscapeAreaCuter InkscapeAreaCutter]===<br />
For web designers. Slice your site design into .png images. (pt_BR) Dead link, no longer available. More current version included as Web slicer in Inkscape now.<br />
<br />
===[https://sites.google.com/site/richardhenwood/project/inkscapelatexextension inkscapeLatexExtension]===<br />
Extract text in an SVG drawing to a LaTeX picture environment. Now included in Inkscape as 'PDF+Latex' option during pdf / eps / ps export.<br />
<br />
===[http://code.google.com/p/jessyink/ JessyInk]===<br />
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. More current version included in Inkscape.<br />
<br />
===[http://code.google.com/p/pixelsnap/ PixelSnap]===<br />
Tool for aligning object/paths onto the pixel grid for bitmap export. More current version included in Inkscape.<br />
<br />
===[http://code.google.com/p/inkscape-guides-creator/ Guide creator]===<br />
Creates multiple guides at once, at set intervals. More current version included in Inkscape.<br />
<br />
===[https://github.com/cnc-club/gcodetools Gcode tools]===<br />
Generates Gcode program (used in CNC machinery) from given paths ([http://www.cnc-club.ru/forum/viewtopic.php?f=15&p=101 English forum]). Included in Inkscape now.<br />
<br />
===[https://code.google.com/p/inkscape-guillotine/ Guillotine]===<br />
This is a mirror of the GIMP guillotine function, it allows you to drag guides onto the canvas, and then using Export->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&t=5832 Forum link]<br />
<br />
===[http://code.google.com/p/inkscape-replace-font/ Replace Font]===<br />
Allows mass replacement of the fonts in a document. Can list existing fonts. [http://www.inkscapeforum.com/viewtopic.php?f=11&t=5843 Forum link]<br />
<br />
<!-- == Dead links or superseded ==<br />
<br />
===[http://www.inkbar.lineaire.net/ InkBar]===<br />
Create EAN13 bar codes. More versatile Barcode extension available in Inkscape now.<br />
<br />
===[http://edlab.die.unipd.it/Site4.html SlotStar]===<br />
Helps to draw the star of slot of a winding of an electrical machine. Dead link, couldn't find newer version.<br />
<br />
===[http://camm-gl.dyndns.org/ Inkscape CAMM-GL Extension]===<br />
... vinyl cutting utility for Inkscape<br />
<br />
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. Dead link.<br />
<br />
--><br />
<br />
<br />
<br />
== The Repository Specification ==<br />
<br />
A website where programmers can publish their extensions, users can search by that, and an update program can access this updates.<br />
<br />
=== The Website ===<br />
<br />
Must Have:<br />
* '''User Registration''': to allow upload, votes and comments<br />
* '''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.<br />
** '''Validation Feedback''': the validator user must write why the extension was not validated.<br />
** '''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.<br />
* '''Extension Search''': with filter, by any available data.<br />
* '''User Votes and Comments for Extensions''': The user can vote and/or comment an extension version.<br />
* '''Extension Bug-Tracker''': today, third part extensions are in simple web-pages. The site may have a Bug-Traker to help all little scripts.<br />
* '''User Extensions Requests''': a lot of users have ideas. Here is a good place for programmers see and make that alive.<br />
* '''Host a cool page for the extension''': allow introduction text, documenbtation, screenshots, examples, and '''i18n'''!<br />
* '''Help the l10n of this extensions''': with a web interface, like pootle and provide the l10n file for the updater program.<br />
* '''Provide Version Control''': A SVN account will be cool, but web uploads (by web-forms) can be transparently SVN commits.<br />
<br />
=== The Extension Meta-Data ===<br />
<br />
''The data in INX file and more some, like the OS and Inkscape version compatibility...''<br />
<br />
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).<br />
<br />
=== The Update Program ===<br />
<br />
* '''Search for New Extensions''': when the user request<br />
* '''Update Extensions''': search for updates and install that<br />
* '''Help the Code Validation''': for advanced users. Show the extension code and the diff if is that an update.<br />
* '''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)''<br />
* '''Must test the extension dependencies''': the user must know what is needed to install before try to use.<br />
<br />
== Name Proposal ==<br />
<br />
Propose a name for the Inkscape Extension Repository:<br />
<br />
* '''The Factory'''<br />
* '''Extension Factory'''<br />
* '''INX Factory'''<br />
<br />
''Why Factory? Because it is not only a repository. ;-)''<br />
<br />
* '''The Furnace'''<br />
''Because Fire & Coal (Passion & Knowledge) are your tools for creating the extensions''<br />
<br />
[[Category:Developer Documentation]]<br />
[[Category:Extensions]]<br />
<br />
== Mockups ==<br />
<br />
Here are some suggestions for what an extension repository might look like.<br />
<br />
<gallery><br />
File:Extension_repository_-_homepage.png|The home page.<br />
File:Extension_repository_-_extension_page.png|The page for an individual extension.<br />
File:Extension_repository_-_request_page.png|The page for an individual request.<br />
File:Extension_repository_-_search_page.png|The search form page.<br />
File:Extension_repository_-_search_results.png|The search results page.<br />
File:Extension_repository_-_submit_extension.png|The extension submission page.<br />
File:Extension_repository_-_submit_request.png|The request submission page.<br />
File:Extension_repository_-_requests.png|The main requests page.<br />
</gallery><br />
<br />
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)</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Hackfest2017_Attendees&diff=105486Hackfest2017 Attendees2017-06-12T15:07:33Z<p>Mc: </p>
<hr />
<div><br />
Other pages: [[Hackfest2017]], [[Hackfest2017 Topics]].<br />
<br />
== Who is Attending? ==<br />
<br />
{| class="wikitable" style="text-align: center;"<br />
|+ List of Attendees<br />
Hackfest<br />
|-<br />
! rowspan="2" | Who<br />
! rowspan="2" | Dates<br />
! rowspan="2" | Allocation<br />
! colspan="2" | Arrival<br />
! colspan="2" | Departure<br />
! rowspan="2" | Hotel<br />
|-<br />
! Date/Time<br />
! Detail<br />
! Date/Time<br />
! Detail<br />
|-<br />
| Marc Jeanmougin (co-host)<br />
| 6/27, 6/28, 6/29, 6/30, 7/1<br />
| $1500<br />
| colspan="4" | Local<br />
|<br />
|-<br />
| Tavmjong Bah (co-host)<br />
| 6/27, 6/28, 6/29, 6/30, 7/1<br />
| $2000<br />
| colspan="4" | Local<br />
|<br />
|-<br />
| Martin Owens<br />
| 6/27, 6/28, 6/29, 6/30, 7/1<br />
| $2000<br />
| 7:45am 6/26<br />
| AA146<br />
| 10:30am 7/3<br />
| AA1507<br />
| Paris La Villette<br />
|-<br />
| C R (Designer, UX, and Coffeh!)<br />
| 6/26, 6/27, 6/28, 6/29, 6/30, 7/1, 7/2, 7/3, 7/4<br />
| Donation back to Inkscape<br />
|<br />
|<br />
|<br />
|<br />
| Hôtel Paris Villette<br />
|-<br />
| Jabier Arraiza<br />
| 6/26, 6/27, 6/28, 6/29, 6/30, 7/1, 7/2, 7/3, 7/4<br />
| $2000<br />
| 6:45pm 6/26<br />
| iDTGV 7912<br />
| 12:52am 7/4<br />
| TGV 8541<br />
| Hôtel Paris Villette<br />
|-<br />
| Alex Valavanis<br />
| TBD<br />
| $2000<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| Cédric (pygmee)<br />
| 6/27, 6/28<br />
| <br />
| 11:40am 6/27 <br />
| ouibus (bercy)<br />
| 19:40pm 6/28<br />
| ouibus (bercy)<br />
| Hotel Ibis Budget Paris La Villette<br />
|-<br />
| Elisa (yemanjalisa)<br />
| 6/27, 6/28<br />
|<br />
| 11:40am 6/27 <br />
| ouibus (bercy)<br />
| 19:40pm 6/28<br />
| ouibus (bercy)<br />
|<br />
|-<br />
| Sylvain Chiron<br />
| 6/27, 6/28, 6/29, 6/30, 7/1<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| chr[]<br />
| 6/27, 6/28 6/29, 6/30<br />
| <br />
| 16h08 06/27 <br />
| Thalys 9448 (Paris Nord)<br />
| 15h55 07/01 <br />
| Thalys (Paris Nord)<br />
| Hotel Paris La Villette<br />
|-<br />
! Total<br />
!<br />
! $TBD<br />
!<br />
!<br />
!<br />
!<br />
|}<br />
<br />
TBD: "To Be Determined"<br />
<br />
Budget $13,000. Separate allocation for Inkscape dinner ($600). Venue: Free.<br />
<br />
<sup>1</sup> Sponsored by outside organization.<br />
<br />
Allocation for attending hackfest:<br />
* Up to $2000 each for Inkscape developers who have contributed for 3+ years and > 200 commits.<br />
* Up to $1500 each for Inkscape developers who have contributed for 2+ years and > 100 commits.<br />
* Up to $1000 each for Inkscape developers who have contributed for 1+ year and > 50 commits.<br />
* Up to $500 each for any Inkscape contributor listed in AUTHORS file with at least 10 commits by Jan 1, 2017.<br />
<br />
If your are an active contributor to Inkscape but are NOT in the AUTHORS file (translator, documentor, etc.) we may still be able to provide some funding on a case-by-case basis.<br />
<br />
== Travel ==<br />
<br />
Attendees seeking reimbursement '''must''' follow [https://gitorious.org/conservancy/policies/raw/75b8894f8586503e5abd23bed84229bbe5c1b7ee:Travel/conservancy-travel-policy.txt?p=conservancy:policies.git;a=blob_plain;f=Travel/conservancy-travel-policy.txt;hb=HEAD SFC travel policy]. Most importantly, take a screen shot of your airfare search. Your ticket must be within $100 of the lowest fare. Keep receipts for transport and lodging. Meal cost and misc. expenses are handled by a per diem and don't require receipts.<br />
<br />
=== Transport ===<br />
<br />
Google Flights search is probably your best bet. kayak.com and mobissimo.com can also be useful.<br />
<br />
There are three airports in Paris: Charles de Gaulle (CDG, normally long-haul flights), Orly (ORY, mostly inter-European flights), and Beauvais (BVA, mostly low-budget airlines). BVA is a bit far from Paris (85km). CDG and ORY are both connected by rail to central Paris.<br />
<br />
Paris is also the center of the TGV train network with frequent high-speed connections from London, Brussels, Amsterdam, Geneva, etc.<br />
<br />
[http://www.cite-sciences.fr/fr/au-programme/lieux-ressources/carrefour-numerique2/ Carrefour Numérique²] is located inside [http://www.cite-sciences.fr/fr/accueil/ Cité des sciences et de l'industrie] (Floor -1) which is about 15 minutes by Metro line 7 (Porte de la Villette) from central Paris.<br />
<br />
=== Hotel ===<br />
<br />
CR will be looking into hotels. There are plenty of reasonably priced AirBnB places nearby.<br />
<br />
== Reimbursements ==<br />
<br />
After the event, forward your receipts to the SFC. You need to also send payment information (name, currency, paypal account or bank information: see travel policy for more details).<br />
<br />
[[Category:Hackfest]]</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Hackfest2017_Topics&diff=105291Hackfest2017 Topics2017-06-02T17:12:10Z<p>Mc: </p>
<hr />
<div>Other pages: [[Hackfest2017]], [[Hackfest2017 Attendees]].<br />
<br />
<br />
== Topics for Inkscape's 2017 Hackfest ==<br />
<br />
* Infrastructure<br />
** Fund raising<br />
** Forums<br />
** Website<br />
** Documentation<br />
** Git<br />
** Automatic builds (windows, mac os)<br />
** Jenkins<br />
** ?<br />
<br />
* Inkscape Code<br />
** GTK3<br />
** Coordinate system flip<br />
** C++11<br />
** Modularity/Extensibility/Addons<br />
** Performance<br />
** ?<br />
<br />
* Community Meetup<br />
** Saturday. Details to come.</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Compiling_Inkscape_on_Windows_32-bit&diff=105161Compiling Inkscape on Windows 32-bit2017-05-06T21:43:43Z<p>Mc: </p>
<hr />
<div>{{Note|We're currently investigating to move to '''[http://www.msys2.org/ MSYS2]''' for building Inkscape on Windows. Please see '''[[Compiling Inkscape on Windows with MSYS2]]''' for the updated instructions.<br />
<br />
You're encouraged to test the new method and give feedback regarding any issues you might encounter. If no severe issues are found it's likely this will become the recommended method for building trunk in future and might also be considered for building the 0.92.x stable branch.}}<br />
<br />
'''For 64 bit: see [[Compiling Inkscape on Windows 64-bit]]'''<br /><br />
'''Warning: As our 32-bit development libraries (devlibs) currently do not offer GTK+ 3 (which is required by trunk) you have to follow the instructions for 64-bit builds or use MSYS2 if you want to compile the latest code (lp:inkscape)!'''<br />
<br />
----<br />
<br />
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.<br />
<br />
==Setting up the build environment==<br />
<br />
To develop Inkscape, you will need the following things:<br />
<br />
* [http://wiki.bazaar.canonical.com/WindowsDownloads Bazaar]<br />
* [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html PuTTY] programs: puttygen.exe and pageant.exe<br />
* 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://inkscape.13.x6.nabble.com/Compiling-on-Windows-7-x64-td4965465.html discussion on the developers' list]).<br />
* Launchpad account<br />
<br />
In order to build the installer (not needed for most developers):<br />
* [http://wixtoolset.org Windows Installer XML Toolset] for rencent msi builds<br />
* [http://sourceforge.net/projects/nsis/files/NSIS%202/2.46/nsis-2.46-setup.exe/download NSIS 2.46]<br />
<br />
<br />
===Install the compiler===<br />
Run the TDM-MinGW installer:<br />
# Install in a path that doesn't contain spaces. The path 'C:\mingw' is ideal beacuse it is currently set in the <tt>mingwenv.bat</tt> file (along with the location of devlibs).<br />
#* TDM-MinGW's default install option may be to a different location. You will have to edit the <tt>mingwenv.bat</tt> file to point there.<br />
#* If you install it into another path, set the environment variable MINGW_PATH to the TDM-MinGW installation directory, e.g. the one containing <tt>README-tdm-gcc.txt</tt> (right click My Computer -> Properties -> Advanced -> Environment Variables).<br />
# Be sure to enable the "GCC -> openmp support" checkbox from the components list<br />
<br />
===Create your Launchpad account===<br />
You can skip this step (or do it later) if you just want to download the sources, but not submit your changes.<br />
<br />
If you do not have an SSH public/private key pair to identify yourself:<br />
*run the program puttygen.exe to generate an SSH key<br />
*save both its parts.<br />
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 "Add Key" 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.<br />
<br />
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).<br />
<br />
C:\> bzr whoami "''Your Name'' <''your_real_email@example.com''>"<br />
C:\> bzr launchpad-login "''your_launchpad_account''"<br />
<br />
===Error messages using Bazaar===<br />
If you are seeing this error message in your Windows console:<br />
<br />
Connected (version 2.0, client Twisted)<br />
bzr: ERROR: Connection error: Unable to authenticate to SSH host as<br />
<email address hidden><br />
supported auth types: ['publickey']<br />
<br />
Please make sure to check [https://help.launchpad.net/YourAccount/CreatingAnSSHKeyPair: Creating An SSH Key Pair] and make sure you setup your key pair correctly (pageant.exe, puttygen.exe and plink.exe).<br />
<br />
===Install the developer libraries===<br />
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 <tt>--lightweight</tt> parameter.<br />
<br />
C:\> bzr checkout --lightweight lp:inkscape-devlibs devlibs<br />
<br />
To update devlibs:<br />
<br />
C:\devlibs> bzr update<br />
<br />
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]].<br />
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].<br />
<br />
=== Obtaining Inkscape source code ===<br />
<br />
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.<br />
<br />
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.<br />
<br />
C:\src\inkscape> bzr init-repo --rich-root .<br />
C:\src\inkscape> bzr upgrade<br />
C:\src\inkscape> bzr checkout lp:inkscape trunk<br />
<br />
If you don't want to create any branches, you can skip the shared repository step.<br />
<br />
C:\src> bzr checkout lp:inkscape<br />
<br />
'''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.<br />
<br />
== Building ==<br />
=== Environment variables ===<br />
Edit the file <code>mingwenv.bat</code> in the root directory of the Inkscape source to match you local paths. Most importantly the two lines:<br />
<br />
<pre><br />
# Path to the Inkscape development libraries.<br />
if "%DEVLIBS_PATH%"=="" set DEVLIBS_PATH=c:\devlibs<br />
<br />
# Path to the MinGW installation. Note: MinGW does not work with white spaces in the path name.<br />
if "%MINGW_PATH%"=="" set MINGW_PATH=c:\mingw<br />
</pre><br />
<br />
should point to the folders containing MinGW and the inkscape-devlibs.<br />
<br />
Whenever you want to build Inkscape open a command prompt (<code>cmd.exe</code>), change into the root directory of the Inkscape source and set the environment variables with the following command:<br />
<br />
<pre><br />
mingwenv.bat<br />
</pre><br />
<br />
=== Compiling Inkscape using CMake ===<br />
<br />
''Note: To significantly reduce the time needed for incremental rebuilds consider [[CMake#Using CMake with Ninja to build Inkscape|using CMake in combination with Ninja]].''<br />
<br />
Go to the directory containing your Inkscape source and create the build output directory. In example:<br />
<br />
<pre><br />
mkdir build<br />
cd build<br />
</pre><br />
<br />
You can also create an out of source build anywhere else in your file system. Just make sure that you pass the correct path to the source code directory in the next step. Create the makefiles using CMake:<br />
<br />
<pre><br />
# Pass the path to the source code directory as a parameter.<br />
cmake -G "MinGW Makefiles" ..<br />
</pre><br />
<br />
Start the build process. The compiled Inkscape.exe will be in bin directory afterwards:<br />
<br />
<pre><br />
# 2 is the number of parallel threads to use for compiling. Increase the number to utilize more of your available CPU cores.<br />
mingw32-make -j 2<br />
</pre><br />
<br />
''Note: The version of mingw32-make included in TDM GCC 4.6.1 (this is what you should be using when building 32-bit Inkscape) does not have jobserver support, yet. As CMake makes use of recursive make calls the <code>-j</code> option won't have any effect on the recursively spawned instances. You can work around this by executing <code>set MAKE=mingw32-make -j 2</code> before starting the compilation process (this will make each spawned instance use up to 2 jobs).''<br />
<br />
Collect all the needed files and create a selfcontaing directory:<br />
<br />
<pre><br />
mingw32-make DESTDIR=mydir install<br />
</pre><br />
<br />
See [http://stackoverflow.com/questions/11307465/destdir-and-prefix-of-make this article] in stackoverflow about the difference in DESTDIR and PREFIX of make. After this step we have a *mydir/Program Files/inkscape/* where everything ''should'' be. ''(Note: Using relative paths with <code>DESTDIR</code> is currently broken. Usually you can just omit the command to simply install into <code>./build/inkscape/</code>)''<br />
<br />
As cmake hides the actual compiler calls, here is a way how to see what make is doing.<br />
<br />
<pre><br />
mingw32-make VERBOSE=1 -j 2<br />
</pre><br />
<br />
; If something goes wrong<br />
Execute the following commands from the <code>build</code> directory<br />
<pre><br />
rm -r CMakeFiles<br />
rm CMakeCache.txt<br />
</pre><br />
and start with running CMake (see above) again.<br />
<br />
; If something goes very wrong<br />
Remove the <code>build</code> directory and start over.<br />
<br />
=== Compiling Inkscape using btool (deprecated) ===<br />
<br />
''Note: This method was the default up to Inkscape 0.91. It still works in 0.92 but compiling using CMake [[#Compiling Inkscape using CMake|as described above]] is the preferred option.''<br />
<br />
Now compile the build tool with the following command:<br />
<br />
C:\src\inkscape\trunk> g++ buildtool.cpp -o btool -fopenmp<br />
<br />
The <code>-fopenmp</code> flag enables [https://gcc.gnu.org/wiki/openmp OpenMP] which allows to use parallel compilation threads when building Inkscape.<br />
<br />
==== Building Inkscape ====<br />
<br />
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 "-j 8" to use (for example) 8 parallel compilation threads.<br />
<br />
C:\src\inkscape\trunk> btool -j 8<br />
<br />
Once everything is done, there should be an <tt>inkscape</tt> directory that contains the Inkscape executable and libraries needed to run it.<br />
<br />
==== Rebuilding ====<br />
<br />
If you have only changed a few files and want to rebuild, delete the <tt>inkscape</tt> directory and run <tt>btool</tt> again.<br />
<br />
To rebuild from scratch, execute the following sequence of commands:<br />
C:\src\inkscape\trunk> btool clean<br />
C:\src\inkscape\trunk> btool<br />
<br />
==== Dealing With Build Errors ====<br />
Feel free to add any questions or answers you have in here;<br />
<br />
'''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?<br />
<br />
'''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.<br />
<br />
'''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.<br />
<br />
'''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.<br />
<br />
You may see something like this in the command window;<br />
=============================<br />
## Target : link : link objects and library to create executable<br />
---- task : rc<br />
============ cmd ============<br />
windres -o build/inkres.o --include-dir=src src/inkscape.rc<br />
=============================<br />
---- task : link<br />
This will likely be followed by an error message. This means you were at the ''link'' stage<br />
<br />
Now simply type;<br />
...>btool ''stage''<br />
Or in this case<br />
...>btool link<br />
And the build will continue from there.<br />
<br />
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="''target''"') ''init'', ''touchabout'', ''compile'', ''java'', ''lib'', ''i18n'', ''link'', ''linkinkview'', ''dist'', ''dist-all'', ''clean''. <br />
<br />
<br />
<br />
'''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.<br />
<br />
'''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.<br />
<br />
<br />
<br />
'''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.<br />
<br />
'''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.<br />
<br />
<br />
<br />
'''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?<br />
<br />
src/extension/internal/pdfinput/pdf-parser.cpp:2248: error: no matching function for call to 'GfxFont::getNextChar(char*&, int&, CharCode*, Unicode [8], int, int*, double*, double*, double*, double*)'<br />
<br />
Same error for line 2297 as well.<br />
<br />
=== For more information ===<br />
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<br />
and old files mey be<br />
http://inkscape.modevia.com/win32libs/<br />
<br />
== Creating an installer ==<br />
<br />
There are currently two complementary methods:<br />
* NSIS (Nullsoft Scriptable Install System), for creating an *.exe installer<br />
* WiX Toolset (Windows Installer XML Toolset), for creating an *.msi installer<br />
<br />
NSIS provides a higher degree of freedom giving the .exe installer some advantages, notably translations, better component selection and smaller file size.<br />
<br />
MSI however is the format preferred by many computer experts because it's a format standardized by Microsoft (i.e. it ''should'' always work) and facilitates administrative installation tasks.<br />
<br />
In the long run it would be desirable to have a single solution combining the advantages of both methods and preferably allowing to create *.exe and *.msi installers at the same time. Input and contributions are welcome!<br />
<br />
=== NSIS installer (*.exe) ===<br />
<br />
In order to create an *.exe installer you need to download and install [http://nsis.sourceforge.net/ NSIS]. Starting with Inkscape 0.92 a Unicode installer is built, so you need at least NSIS 3.0 (which is the first version with official Unicode support).<br />
<br />
# Compile Inkscape as described above.<br />
# You should then have a distribution directory containing all necessary files in either <code>…\inkscape</code> or <code>…\build\inkscape</code> sub-folder.<br/><small>At least this is where NSIS will be looking for it. If you have set-up paths differently define <code>INKSCAPE_DIST_DIR</code> in <code>inkscape.nsi</code> accordingly.</small><br />
# Compile the file <code>…\packaging\win32\inkscape.nsi</code> using NSIS (e.g. by right clicking the file and choosing "Compile NSIS Script").<br />
<br />
Once finished compiling (to reduce compile time you can choose a compressor different from LZMA) you should have a brand-new Inkscape *.exe installer in the <code>…\packaging\win32</code> folders.<br />
<br />
=== WiX Toolset (*.msi) ===<br />
<br />
In order to create an *.msi installer you need to download and install the [http://wixtoolset.org/ WiX Toolset].<br />
<br />
Step-by-step instructions can be found in the file [http://bazaar.launchpad.net/~inkscape.dev/inkscape/trunk/view/head:/packaging/wix/README <code>…\packaging\wix\README</code>].<br />
<br />
<br />
=== Windows store (*.appx) ===<br />
<br />
In order to upload the installer on [https://www.microsoft.com/fr-fr/store/p/inkscape/9pd9bhglfc7h the windows store], you need to use the [https://www.microsoft.com/fr-fr/store/p/desktop-app-converter/9nblggh4skzw desktop app converter] to create a .appx from the msi installer. The correct commandline is : <br />
<br />
C:\src\inkscape\trunk> desktopAppConverter -Installer Inkscape-0.92.1-x64.msi -Destination C:/Users/Inkscape/SomeFolder/ -PackageName 25415Inkscape.Inkscape -Publisher CN=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX -Version 0.92.1.0 -MakeAppx -AppDisplayName Inkscape -PackagePublisherDisplayName Inkscape -PackageDisplayName Inkscape -AppID Inkscape<br />
<br />
The correct CN name can be found on the [https://developer.microsoft.com/en-us/dashboard/apps/overview windows developer admin panel] where you upload the package.<br />
<br />
== Note about Unicode ==<br />
<br />
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.<br />
<br />
=See also=<br />
*[[Compiling Inkscape]]<br />
*[[Using Visual Studio]]<br />
<br />
[[Category:Developer Documentation]]</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Hackfest2017&diff=104946Hackfest20172017-03-31T20:18:17Z<p>Mc: </p>
<hr />
<div>== Possible Fall Hackfest ==<br />
<br />
This page details the planning of a possible Inkscape's 2017 Fall hackfest.<br />
<br />
Other pages: [[Hackfest2017Fall Topics]], [[Hackfest2017Fall Attendees]]. Old: [[Hackfest2017]], [[Hackfest2016]], [[Hackfest2015]].<br />
<br />
==Description==<br />
<br />
A hackfest! We will work on Inkscape bugs, new features, and packaging as well as website issues; in fact anything that can benefit from developers and users being physically in the same space. <br />
<br />
<br />
=== Paris ===<br />
<br />
Paris is well connected with three international airports (including the second busiest Europe) as well as being the center of the TGV high speed train network.<br />
It is centrally located in Europe and is an easy trip for many Inkscape hackers. There are direct flights to/from most major US cities.<br />
<br />
Possible locations:<br />
<br />
==== Paris proper ====<br />
<br />
Mc can/did contact the following places about meeting space.<br />
<br />
Advantages:<br />
<br />
* All the benefits of being in the center of one of the most vibrant world cities.<br />
<br />
Disadvantages:<br />
<br />
* High housing cost.<br />
<br />
====[https://www.ens.fr ENS]====<br />
* Very few availability, no availability from mid-june to mid-july<br />
* 75% discount (=>125€/day for a classrom)<br />
<br />
====[http://www.cnam.fr CNAM]====<br />
* hard to find whom to contact (TODO)<br />
* high probability to be able book a room for free (depending on date)<br />
<br />
====[http://www.cite-sciences.fr/fr/au-programme/lieux-ressources/carrefour-numerique2/ Carrefour Numérique²]====<br />
* Fablab/hackerspace using Inkscape all the time (they love it), with working space<br />
* few availability (no possibility in may)<br />
* free<br />
<br />
====[https://paris.numa.co/ NUMA]====<br />
* special coworking space<br />
* free if the event is open<br />
<br />
====[https://gaite-lyrique.net/ Gaîté Lyrique]====<br />
* Some sort of special place where technology and art meet. With a big open working space and rooms<br />
* Did not email them yet<br />
<br />
====Other options====<br />
* [https://www.mozilla.org/en-US/contact/spaces/paris/ Mozilla] ?<br />
* [http://www.telecom-paristech.fr/ Télécom Paris] ? (not investigated yet)<br />
<br />
==== Saint-Rémy-lès-Chevreuse ====<br />
<br />
Paris suburb with easy train connection from Paris (50 minutes from central Paris, trains every 15 minutes, opposite end of train line that connects Paris to Charles de Gaulle airport).<br />
<br />
Advantages:<br />
<br />
* Pleasant town in the [http://www.parc-naturel-chevreuse.fr/ Haute Vallée de Chevreuse Regional Natural Park]. 11th century chateau towers over the neighboring town.<br />
* For a small gathering (<=10), Tav can host at his home. Nearby AirBnB and pleasant hotel within walking distance as well as a couple of bakeries and restaurants.<br />
* Lower cost than Paris proper.<br />
<br />
Disadvantage:<br />
<br />
* Far from central Paris.<br />
<br />
[[Category:Hackfest]]</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.92&diff=103911Release notes/0.922017-01-04T14:15:16Z<p>Mc: </p>
<hr />
<div>{{Other languages|en=Release notes/0.92}}<br />
<br />
== Inkscape 0.92 ==<br />
<br />
== Release highlights ==<br />
<br />
Released on '''2017-01-01'''.<br />
<br />
* [[Mesh Gradients]] are now supported.<br />
* Many SVG2 and CSS3 properties are now supported (e.g. paint-order, mix-blend-mode). Not all are available from the GUI.<br />
* The new Object dialog allows to select, label, hide and lock any object in the drawing from a dialog that lists them all<br />
* Selection sets make it possible to 'group' objects together regardless of document structure<br />
* Guides can now be locked to avoid accidental movement<br />
* Several new path effects have been added, among them Envelope/Perspective, Lattice Deformation, Mirror and Rotate Copies<br />
* There are several new extensions (e.g. a seamless pattern extension) and a new filter (colorblindness simulation) included in the release, many old extensions have been updated or got new features<br />
* Spray tool and measure tool received a set of nifty new features<br />
* Interactive smoothing for lines created with the Pencil tool<br />
* BSplines (and more) are available for the Pen tool<br />
* Checkerboard background can be used to more easily see object transparencies<br />
<br />
[https://inkscape.org/en/~jabiertxof/%E2%98%85inkscape-092-showcase Watch the video which presents the latest version]<br />
<br />
== Important changes ==<br />
<br />
* The default resolution was changed from 90dpi to 96dpi, to match the CSS standard. For more background information, please see [[Units_In_Inkscape | the Wiki article about handling of units in Inkscape]]. Inkscape 0.92 will attempt to identify 'legacy' Inkscape files that need to be converted. If such a file is detected, the user will be offered three options:<br />
*# Set 'viewBox'. Inkscape will add an appropriate 'viewBox' which will do a global scaling of the document. It will also adjust the document width and height if necessary.<br />
*# Scale elements. Inkscape will scale each internal element.<br />
*# Ignore. Do nothing. This is an appropriate choice for documents meant for screen display.<br />
*:''[See [https://bugs.launchpad.net/inkscape/+bug/1389723 release blocker bug report] for more details.]''<br />
<br />
* For developers and packagers, the switch from autotools to CMake is a relevant change (users who do not compile their own version will not be affected). While the old system is still available for 0.92, it is now also possible to compile Inkscape using CMake ([[CMake |Background info about why this change was made]] and [[Working with CMake | How to work with CMake]]).<br />
<br />
== Manipulating Objects ==<br />
<br />
=== Objects Dialog ===<br />
<br />
New dialog for manipulating the object tree.<br />
<br />
* Drag and drop reordering of objects.<br />
* Lock, and hide one or more items.<br />
* Use Ctrl+F to search for an item.<br />
* Select one or more objects in the drawing.<br />
* Shows individual objects as well as layers.<br />
* Ability to change highlight color of objects.<br />
* Ability to set blend mode per object.<br />
<br />
Imported from Ponyscape.<br />
<br />
=== Selection Sets Dialog ===<br />
<br />
New dialog that allows the creation of selection sets that are not affected by document structure.<br />
<br />
Usage:<br />
<br />
* '''Open''' Dialog with 'Object > Selection sets'<br />
<br />
* To '''create''' a new selection set:<br />
*# click on the '+' button at the bottom of the dialog (double-click on its label to edit)<br />
<br />
* To '''add objects''' to a selection set:<br />
*# select object on the canvas<br />
*# in the 'Selection sets' dialog click on the '+' icon before the selection set in the list<br />
<br />
* To '''select all objects''' of a selection set:<br />
*# deselect any existing selection and click on the selection set in the list<br />
<br />
* To '''remove an object''' from a selection set<br />
*# select the selection set in the dialog<br />
*# click on 'Items' to show all objects in the set<br />
*# select an object on the canvas or in the Items list in the dialog<br />
*# click on the 'Delete' icon (trashbin) before the object in the list<br />
<br />
* To '''delete''' a selection set:<br />
*# select it in the list and click on the '-' button at the bottom of the dialog<br />
<br />
== Text ==<br />
<br />
=== Font Features ===<br />
<br />
It is now possible to take advantage of '''OpenType tables''' to select alternative glyphs from a font. For this, '''a third tab''' ('Variants') has been added to the 'Text and Font' dialog. Note that browser support is still limited. Inkscape must also be linked with a recent version of the Pango library.<br />
<br />
=== Vertical Text ===<br />
<br />
Support for vertical text layout has been improved.<br />
* The default behavior for Latin bases glyphs has been changed. They are now rotated sideways as required by the SVG 1.1 standard.<br />
* Support for the CSS 3 'text-orientation' property has been added. (Note that this property is not yet fully supported by browsers.)<br />
* The CSS 3 values for the 'writing-mode' property are supported in rendering. Saving still uses the deprecated SVG 1.1 values.<br />
<br />
=== Accessibility ===<br />
<br />
Converting text to a path will save the text in the 'aria-label' attribute. This is useful for accessibility and could eventually be used by Inkscape to reconstruct the text.<br />
<br />
=== Line Spacing ===<br />
<br />
Line spacing in Inkscape now follows the CSS standard for the 'line-height' property. Note the following points:<br />
<br />
* [[File:Text_flexible_spacing.png |thumb| right | Outer: "font-size:40px;line-height:1.25"]] [[File:Text_flexible_spacing3.png |thumb| right | Outer: "font-size:40px;line-height:1.25em"]] The unit for 'line-height' can now be chosen. Previous versions of Inkscape used a unitless value. When the value is unitless, the line spacing is recalculated for each change in font size. This is the most commonly expected behaviour. When the value has a unit, the line spacing is calculated at the point where the CSS 'line-height' property is defined and that value is used regardless of following changes in font size. This however, will not always lead to evenly spaced lines due to the idiosyncrasies of how line spacing is calculated in CSS. (See Tav's write up [http://tavmjong.free.fr/blog/?p=1632 CSS Text Line Spacing Exposed] for the details.) <br />
<br />
* [[File:Text_flexible_spacing2.png |thumb| right | Outer: "font-size:40px;line-height:0", Inner: "line-height:1.25em"]] The minimum spacing between lines is determined by the 'strut' value. This is determined by the product of the 'font-size' and 'line-height' values on the outermost text element. These values are shown and can be set when the "Outer Style" button is enabled in the Text Tool's Tool Control bar. To set the 'strut' to zero, set the outer style 'line-height' to zero.<br/>If the 'strut' has zero height, you'll need to set 'line-height' on all the inner text elements to keep the lines from being on top of each other. Use Ctrl-A to select all the text and disable the "Outer Style" button to set the "line-height" on all the innter elements.<br/>Note: when the "Outer Style" button is not enabled, the "Font size" and "Line height" boxes show the values of either the high-lighted selected text or at the cursor point (if no text is selected). Changes in font size and line spacing will be applied to the selected text or to all the inner elements (if no text is selected). Unlike other styling properties (e.g. fill color), there is no visual indicator of which characters have a particular 'line-height' value. One can step through character by character with the cursor to determine a span of characters with the same 'line-height' value.<br />
<br />
* [[File:Text_flexible_spacing4.png |thumb| right | Outer: "font-size:40px;line-height:1.25", Inner: "line-height:0"]] To create a set of evenly spaced lines regardless of font size, set the 'strut' value to the desired line spacing and then set the inner 'line-height' values to zero.<br />
<br />
== Live Path Effects ==<br />
<br />
* Now some suitable LPEs can be applied to clips and masks.<br />
* Helper lines come again to life.<br />
* The option to add a bend path directly was added to the pen/pencil shape combo box.<br />
<br />
=== Spiro Live ===<br />
<br />
Extended video: https://www.youtube.com/watch?v=bFakiI5f0-Y<br />
<br />
Based upon Spiro Live Path Effect, now shows the result while drawing.<br />
<br />
* '''Cusp''' nodes can be created by holding down the Shift key.<br />
* When you append a path in cusp and Spiro mode, the helper preview path will be displayed.<br />
<br />
[[File:Spirolive.gif]]<br />
<br />
=== BSpline ===<br />
<br />
Extended video https://www.youtube.com/watch?v=vwV0DHvA-OE<br />
<br />
==== Pen & Node mode ====<br />
<br />
Uses the '''BSpline Live Path Effect''' while creating and editing paths.<br />
<br />
* Works with Pen and Pencil tool directly.<br />
* Create '''cusp''' nodes by holding down the Shift key (Pen/Bézier tool only).<br />
* When a path is appended, a preview helper path will also be shown.<br />
* Hold down Shift key and drag on a handle to change the '''weight''' of a bspline in node tool.<br />
* Custom '''weight steps''' are applied by holding '''CTRL''' down and dragging on a handle with the node tool (no Shift key required).<br />
* Double-click on a handle resets weight to default<br />
<br />
[[File:Bspline.gif]] [[File:Bspline2.gif]]<br />
<br />
==== Live Path Effect mode ====<br />
<br />
[[File:Bspline3.gif|170px|right|thumb|Bspline LPE]]<br />
<br />
The options in the Live Path Effect dialog give you full control over bspline paths.<br />
<br />
* Option to set to '''Default weight''' (0.3333 times curve segment)<br />
* Option to make nodes '''cusp'''<br />
* Numeric input for '''weight'''<br />
* Option to set number of '''Steps with CTRL''' to quickly snap the weight in node/handle editing<br />
* '''Apply changes if weight ...''' applies changes in the widgets to all nodes with weight == 0 or weight > 0 or both, for example, retains cusp nodes when you change the weight and have unselected "Apply changes if weight == 0".<br />
* '''Change only selected nodes''' applies to all other widgets changes.<br />
* Shows a '''helper path''' with the final shape and the generated new nodes.<br />
<br />
=== Roughen ===<br />
<br />
[[File:Roughen.png|170px|right|thumb|Roughen LPE]]<br />
<br />
Extended video: https://www.youtube.com/watch?v=130Dbt0juvY<br />
<br />
This path effect is a semi-clone of two extensions, ("add nodes" and "jitter nodes") and handles units.<br />
<br />
The parameters are similar to both extensions and adds a global randomizer.<br />
<br />
* Can be applied to paths, shapes and groups.<br />
* Can be applied to clips and masks, if they are vector objects.<br />
<br />
[[File:Roughen.gif]]<br />
<br />
=== Simplify ===<br />
<br />
[[File:Simplify.png|170px|thumb|right|Simplify LPE]]<br />
<br />
Extended video: https://www.youtube.com/watch?v=gaWujN_iTSk<br />
<br />
Simplifies a vector element using a non-destructive live path effect.<br />
<br />
* Can be used on paths, shapes and groups of these.<br />
* Can be applied to clips and masks, if they are vector objects<br />
* The effect's threshold can be modified in the preferences dialog, by setting a numeric parameter.<br />
* Apply Simplify multiple times in the same LPE.<br />
<br />
[[File:Simplify.gif]]<br />
<br />
This path effect can optionally be applied directly via the pencil/freehand drawing tool's tool bar when creating a new path. It then replaces the normal smoothing (which would be a destructive operation).<br />
<br />
=== Perspective/Envelope ===<br />
<br />
[[File:Perspective-envelope.png|170px|thumb|right|Perspective/Envelope LPE]] <br />
<br />
Extended video: https://www.youtube.com/watch?v=CjKGatyxTZ8<br />
<br />
Both deformations can be applied by specifying 4 points.<br />
<br />
* Two modes, perspective and envelope<br />
* Can be used on paths, shapes and groups.<br />
* Also works with vector clips and masks.<br />
<br />
[[File:Perspective-envelope.gif]]<br />
<br />
=== Lattice Deformation 2 ===<br />
<br />
[[File:Latice2.png|170px|thumb|right|Lattice Deformation 2 LPE]]<br />
<br />
Extended video: https://www.youtube.com/watch?v=YlK9L88_tWE<br /><br />
Symmetry video: https://www.youtube.com/watch?v=jhuVjqFA6ig<br />
<br />
* Deforms an object by 25 handles arranged in a mesh<br />
* Optionally deforms symmetrically along vertical or horizontal axis or both.<br />
* Can be applied to paths, shapes and groups.<br />
* Also works on vector clips and masks.<br />
<br />
[[File:Latice2.gif]]<br />
<br />
=== Show Handles ===<br />
<br />
[[File:ShowHandles.png|170px|thumb|right|Show Handles LPE]]<br />
<br />
Extended video: https://www.youtube.com/watch?v=h9ul_PR9XYo<br />
<br />
An LPE version of the Show Handles extension.<br />
<br />
* Works on paths, shapes and groups.<br />
* Works on clones.<br />
* Node and Handle shapes are resizeable<br />
* If not applied to a clone, this is a destructive LPE, it does not save styles, better work on a copy!<br />
<br />
[[File:ShowHandles.gif]]<br />
<br />
=== Transform by two points ===<br />
<br />
[[File:TransformByTwoKnots.png|170px|thumb|right|Transform by 2 points LPE]]<br />
<br />
Extended video: https://www.youtube.com/watch?v=ZLmYdWoXXIw<br /><br />
Extended video (Elastic rubber): https://www.youtube.com/watch?v=lOWTeZC_LjM<br />
<br />
Transforms an element by two control points (e.g. moving, skewing, resizing and rotation). You can position the control points on the bounding box edge midpoints or by the index of the nodes of the original path.<br />
Thanks to Ivan Louette for the idea for this effect!<br />
<br />
* Works on paths, shapes. With groups you have limited features constrained to bounding box.<br />
* Allows snapping of both control points.<br />
* Allows to fix angle or distance.<br />
* Elastic mode to simulate a rubber band path.<br />
* Two bounding box edge midpoints can be used as control points if 'From original width' is active.<br />
<br />
[[File:TransformByTwoKnots.gif]]<br />
<br />
=== Rotate copies ===<br />
<br />
[[File:LPERotateCopies.png|170px|thumb|right|Rotate copies LPE]]<br />
<br />
Extended video (partial fuse path): https://www.youtube.com/watch?v=UpI8gRbkTu4<br /><br />
Extended video (live editing): https://www.youtube.com/watch?v=fBQpvfgT4mE<br /><br />
Extended video (kaleidoscope): https://www.youtube.com/watch?v=LfMixSKy3Eo<br />
<br />
Arranges identical elements dynamically on an arc or circle.<br />
<br />
* Works on paths, shapes and groups of paths.<br />
* Allows to fuse the result to create kaleidoscope-like effects<br />
* Allows to arrange the copies on an arc when the 360° copies checkbox is not checked.<br />
* Live editing.<br />
<br />
=== Mirror Symmetry ===<br />
<br />
[[File:LPEMirror.png|170px|thumb|right|Mirror LPE]]<br />
<br />
Extended video: https://www.youtube.com/watch?v=m1sj4AeU3Yo<br />
<br />
Mirrors an item dynamically.<br />
<br />
* Works on paths, shapes and groups.<br />
* Allows to fuse the result.<br />
* Different mirror lines: Free, bounding box center X, bounding box center Y, Document center X, Document center Y.<br />
<br />
=== Attach Path ===<br />
<br />
[[File:LPEAttachPath.png|80px|thumb|right|Attach Path LPE]]<br />
<br />
Connect a path to another path (optionally at each end), by attaching it to a specified location on the other path (specified as in <node number>.<fraction of segment length>, or by dragging a handle). <br />
<br />
The connecting curve segment can be shaped with handles, or by entering a number. <br />
<br />
This LPE makes it possible for the first time to have 'crossings' between paths that move with the path when it is modified, which isn't possible within the SVG specification.<br />
<br />
=== Bounding Box ===<br />
<br />
[[File:LPEBoundingBox.png|80px|thumb|right|Bounding Box LPE]]<br />
<br />
An arbitrary path can be used to serve as a bounding box rectangle for the path that is linked. It will follow all transformations of the linked path. This can, for example, be used to provide a background for exporting as png.<br />
<br />
=== Ellipse by 5 Points ===<br />
<br />
[[File:LPEEllipse5Points.png|80px|thumb|right|Ellipse by 5 Points LPE]]<br />
<br />
An ellipse will be constructed, whose circumference will go through each of the nodes of a 5-node path.<br />
<br />
=== Fill between Many ===<br />
<br />
[[File:LPEFillBetweenMany.png|80px|thumb|right|Fill Between Many LPE]]<br />
<br />
Adds a fill to a collection of independent open paths, connecting their ends with straight lines. <br />
<br />
* The LPE is applied to one path (which will be converted into the fill, and serves as a 'container' for the effect).<br />
* The other paths, which are part of the drawing, can then be added to it by copy-pasting in the LPE dialog.<br />
* The order in which the paths are filled can be changed, and the direction can be reversed for each path independently.<br />
<br />
Now it is possible to apply the kind of path effects which only work on a path without subpaths (PowerStroke, Taper Stroke, ...) to the single paths (see image for an example).<br />
<br />
=== Fill between Strokes ===<br />
<br />
[[File:LPEFillBetweenStrokes.png|80px|thumb|right|Fill Between Strokes LPE]]<br />
<br />
Similar to 'Fill between Many', but can only be used on two open paths, to fill them seamlessly.<br />
<br />
* Requires a 'container' path, which will turn into the fill after the first path has been added to the LPE.<br />
* Connects one couple of path ends with a stroke, if the path that functions as a container has a stroke set. <br />
* Can also be used to apply a duplicate stroke.<br />
<br />
=== Interpolate Points ===<br />
<br />
[[File:LPEInterpolatePoints.png|80px|thumb|right|Interpolate Points LPE variations]]<br />
<br />
This LPE redraws all path segments, using one of the following interpolation methods:<br />
<br />
* Centripetal Catmull-Rom<br />
* CubicBezierFit<br />
* CubicBezierJohan<br />
* Linear<br />
* SpiroInterpolator<br />
<br />
=== Join Type ===<br />
<br />
[[File:LPEJoinTypepng.png|80px|thumb|right|Join Type LPE variations]]<br />
<br />
The LPE allows you to set the type of connection to be used on cusp nodes and path end caps.<br />
<br />
* Available join types: <br />
** Beveled<br />
** Extrapolated Arc<br />
** Extrapolated Arc Alt1<br />
** Extrapolated Arc Alt2<br />
** Extrapolated Arc Alt3<br />
** Miter<br />
** Miter Clip<br />
** Rounded<br />
* Available end cap types: <br />
** Butt<br />
** Peak<br />
** Rounded<br />
** Square<br />
* Set Miter limit<br />
* Set stroke width<br />
<br />
=== Taper Stroke ===<br />
<br />
[[File:LPETaperStroke.png|80px|thumb|right|Taper Stroke LPE variations]]<br />
<br />
Draw tapered strokes with different settings for open paths without subpaths.<br />
<br />
* Change width of stroke ends with handles on both ends, or by entering offset numerically <br />
* Different amounts of rounding can be applied<br />
* Stroke width can be changed<br />
* Join type for cusp nodes can be selected:<br />
** Beveled<br />
** Extrapolated<br />
** Miter<br />
** Rounded<br />
<br />
== Pen / Bézier tool ==<br />
<br />
* New shortcut to automatically close a path when it is being drawn: Shift + Enter<br />
<br />
== Spray tool ==<br />
<br />
Extended video 1 (No overlap): https://www.youtube.com/watch?v=uehj4ATOWos<br /><br />
Extended video 2 (No overlap multiple items): https://www.youtube.com/watch?v=1eTG2U3qlb4<br /><br />
Extended video 3 (Over visible, pick color): https://www.youtube.com/watch?v=aTdKu7mAZE8<br /><br />
Extended video 4 (Pressure): https://www.youtube.com/watch?v=kWdQnxd_z30<br /><br />
Extended video 5 (Trace -clones- dialog): https://www.youtube.com/watch?v=Zn3vzf-yA_w<br />
<br />
* New eraser mode<br />
* More pressure toggles added<br />
* "No overlap" option with optional multiple elements<br />
* "No overlap" option between different background colors<br />
* Configurable offset for overlaps<br />
* Color picker from center or average area<br />
* Apply picked color to fill<br />
* Apply picked color to stroke<br />
* Invert picked colors<br />
* Spray over transparent background areas<br />
* Spray over non-transparent background areas<br />
* Makes use of "Trace the drawing" options from Tiled Clones dialog<br />
<br />
== Measure tool ==<br />
<br />
Extended video: https://www.youtube.com/watch?v=OE0cVDGCzbM<br />
<br />
* Measure is kept until a new one is made (only visible when using measure tool)<br />
* Repositioning of origin/end<br />
* Convert to object<br />
* Convert to guides<br />
* Add just the distance measurement, consisting of editable text and a line indicating start and end<br />
* Display a 'phantom measurement' temporarily to be able to compare two measurements<br />
* Reverse origin/end<br />
* Measure global<br />
* Measure only current layer<br />
* Change precision<br />
<br />
== Gradient tool ==<br />
<br />
* To accomodate for keyboards that do not have an Insert key, the keyboard combination '''Shift+I''' can now also be used to insert a new stop into a gradient.<br />
<br />
== Align and Distribute ==<br />
<br />
* NEW: drop-down chooser with options to align nodes relative to each other in node editing mode.<br />
<br />
== Import / Export ==<br />
<br />
=== Export PDF / EPS / PS ===<br />
<br />
* The default PostScript level for exporting from the command line changes from 2 to 3 (consistent with the user interface PS exporter which defaults to level 3). Level 3 is required for gradient support.<br />
<br />
=== Export Optimized SVG ===<br />
<br />
* Completely redesigned settings dialog<br />
* Starting with version 0.92, Inkscape uses the Scour version installed on the system (e.g. via "pip install scour") instead of a bundled version so you can always profit from the latest improvements<br />
* A lot of new features and fixes in the Scour module itself, check out the [https://github.com/scour-project/scour/blob/master/HISTORY.md release notes] (Scour 0.26 from 2011-05-09 was the version that has been bundled with Inkscape 0.91)<br />
<br />
=== Export to PNG ===<br />
<br />
* PNG file extension is now enforced, to prevent exporting with invalid / misleading file extensions.<br />
<br />
== Extensions ==<br />
<br />
=== New ===<br />
* Render > '''Seamless Pattern''' ([https://www.youtube.com/watch?v=MYGKAF7EPFY Screencast])<br />
* Images > '''Set Image Attributes''' (Bug #[https://bugs.launchpad.net/inkscape/+bug/1357808 1357808], can be used to fix the scaling problem of raster images in SVGs created with previous Inkscape versions)<br />
* Render > '''NiceCharts''' ([https://github.com/Moini/NiceCharts/tree/patch-1 github repo, not maintained])<br />
* Arrange > '''Deep Ungroup''' (Bug #[https://bugs.launchpad.net/inkscape/+bug/171117 171117])<br />
<br />
=== Plotter Driver ===<br />
<br />
==== Multiple Pens ====<br />
<br />
The Plotter driver (Extensions -> Export -> Plot) can now handle multiple pens to create colorful drawings on Pen Plotters:<br />
<br />
* Create a layer for every pen to use and move the corresponding drawings into it<br />
* Name the layer with a title like "Pen 1" or "MyLayerName Pen 1", where the number corresponds to the pen number the plotter should use<br />
* The layer name always overrides the standard pen setting in the plot menu<br />
<br />
==== Serial Connection ====<br />
<br />
The connection settings now allow you to specify rarely used serial connection settings like byte size, stop bits and parity. Most plotters use the default settings, so only change these if you know what you are doing.<br />
<br />
=== HPGL Export ===<br />
<br />
The HPGL export (File -> Save as -> HP Grafics Language file) has now the same multiple pens feature as the [[#Plotter Driver]].<br />
<br />
=== HPGL Import ===<br />
<br />
The HPGL import (File -> Open -> Select .hpgl file) can now import multiple pens into corresponding layers, see [[#Plotter Driver]] for more information.<br />
<br />
=== PDF Import ===<br />
<br />
The image 'interpolate' value is now used to determine how to display bitmaps (interpolated or blocky).<br />
<br />
=== Miscellaneous Improvements ===<br />
<br />
* Arrange > '''Restack''' has new options to reverse and shuffle the z-order of selected objects.<br />
* Render > '''Random Tree''' has new option to omit redundant segments.<br />
* Visualize Path > '''Measure Path''' has additional text layout options.<br />
* Render > '''Barcode''' was updated with new EAN2 code and extended EAN13 with automatic EAN2 and EAN5 additions<br />
* Color > '''Randomize''' now allows to set the range for randomization, and (with some limits) can now also randomize opacity<br />
* Modify Path > '''Jitter nodes''' was partially rewritten and now also supports Pareto and Log-Normal distributions.<br />
<br />
=== Extension Development ===<br />
<br />
* It is now possible for an extension to retrieve a list of selected nodes (See Bug #[https://bugs.launchpad.net/inkscape/+bug/171287 171287] for an example extension).<br />
<br />
== Filters / Blend Modes ==<br />
<br />
=== New Filters ===<br />
<br />
* Color > '''Color Blindness''' filter allows to simulate different color blindness conditions.<br />
<br />
=== New Blend Modes ===<br />
<br />
Blend Modes can now be applied to '''single objects as well as to layers'''.<br />
<br />
In addition to the previously available modes 'Multiply', 'Screen', 'Darken' and 'Lighten', the following modes are now available:<br />
<br />
* Overlay<br />
* Color Dodge<br />
* Color Burn<br />
* Hard Light<br />
* Soft Light<br />
* Difference<br />
* Exclusion<br />
* Hue<br />
* Saturation<br />
* Color<br />
* Luminosity<br />
<br />
== Other dialogs ==<br />
<br />
=== Document Properties: Licences ===<br />
<br />
All selectable licences have been updated to most current version.<br />
<br />
=== Filter Editor ===<br />
<br />
Filter list now displays how often a filter is used.<br />
<br />
== Menus ==<br />
<br />
* 'Resize page to selection' added to Edit menu, shortcut: Shift+Ctrl+R<br />
* 'Pop selection out of group' available in context menu of objects which are part of a group, when the group has been entered, and via the 'Objects' menu. It will move the object up by one level in the grouping hierarchy.<br />
* 'Create Clip Group' from context menu groups the selected objects and clips that group with a clone of itself. This allows for quick creation of, for example, inset shadows.<br />
<br />
== Other user interface ==<br />
<br />
=== Node Snapping ===<br />
<br />
Snapping in the node tool has been improved:<br />
<br />
* When double clicking to insert new nodes, the position of these new nodes will snap to for example path intersections and to path-guide intersections<br />
* When grabbing a segment of a path and dragging it to deform it, the pointer will now snap<br />
<br />
=== Checkerboard Background ===<br />
<br />
It is now possible to use a checkerboard background when editing. This allows one to clearly see the transparency of objects. (See "Page" tab of the "Document Properties" dialog.)<br />
<br />
=== View Box ===<br />
<br />
One can now set the SVG 'viewBox' attribute from the GUI. This attribute sets the ''scale'' of the drawing by determining the real-world value of the SVG ''user unit'' (pixel size).<br />
<br />
=== Lock Guides ===<br />
<br />
Now guides can be locked and unlocked globally or individually.<br />
<br />
=== Panning ===<br />
<br />
Panning with space bar can now be deactivated in the Preferences (uncheck Behavior > Scrolling > Mouse Move pans when Space is pressed).<br />
<br />
== SVG and CSS ==<br />
<br />
* The 'marker-orientation' property now recognizes units ('deg', 'rad', 'grad' and 'turn').<br />
* The new SVG 2 'context-fill' and 'context-stroke' properties are implemented which allows the auto-matching of arrowhead fill color to path stroke color.<br />
* The new SVG 2 marker orientation attribute value 'auto-start-reverse' is implemented. This allows one arrow marker to be used for both ends of a path.<br />
* The new CSS 3 'mix-blend-mode' and 'isolation' properties are implemented, allowing setting the blend mode between objects without using filters.<br />
* The new SVG 2 'paint-order' property is now supported. This allows setting the order in which the fill, stroke, and markers are drawn (see the 'Stroke style' tab in the 'Fill and Stroke' dialog).<br />
* The SVG 1.2/SVG 2 'vector-effect' property's 'non-scaling-stroke' value is now supported. This will keep the stroke width fixed regardless of the zoom factor.<br />
* The new SVG 2 'mesh' paint server is supported, including bicubic ''auto-smoothing''. A primitive GUI is available.<br />
* The SVG 1.1 'text-decoration' property is now rendered (underlines, strike through, etc.). CSS 3 'text-decoration' properties are also rendered.<br />
* The new SVG 2 'hatch' paint server is now supported.<br />
* The CSS 'white-space' property is now supported. Use of this property was added in SVG 2 to replace the now deprecated 'xml:space' attribute.<br />
* The SVG 1.1 'textLength" and 'textAdjust' attributes are implemented, however, there is no GUI for these attributes.<br />
* Rendering of the Component Transfer filter primitive has been corrected.<br />
* Units are now recognized in the text and tspan 'x', 'y', 'dx', and 'dy' attributes.<br />
* Percentage values are now interpreted correctly for shapes.<br />
<br />
New SVG 2 and CSS 3 features are generally not enabled in the GUI until widespread support in browsers.<br />
<br />
== New dependencies ==<br />
<br />
* The Paintbucket and Trace Bitmap tools now use an external copy of the Potrace library, which is available in many Linux distributions or can be obtained from http://potrace.sourceforge.net<br />
* Export to Optimized SVG now depends upon an external copy of the Scour python module, which can be obtained via pip (pip install scour), package management (version may be outdated) or from the [https://github.com/scour-project/scour/releases scour project github site]. For Windows versions, the module is included.<br />
<br />
== Translations ==<br />
<br />
New UI translations for Assamese, Bodo, Dogri, Gujarati, Hindi, Icelandic, Kannada, Kashmiri (Perso-Arabic and Devanagari), Konkani (Latin and Devanagari scripts), Maithili, Malayalam, Manipuri (Meetei Mayek and Bengali scripts), Marathi, Odia, Santali (Devanagari and Ol-Chiki scripts), Sanskrit, Sindhi, Tamil, Urdu (Perso-Arabic and Devanagari scripts). <br />
<br />
Many other translations have been updated and improved.<br />
<br />
== Notable Bugfixes ==<br />
<br />
* Severe performance issues on MS Windows, 64bit Inkscape builds on systems with Intel graphic cards (hiding the rulers was a workaround for Inkscape 0.91) ([https://bugs.launchpad.net/inkscape/+bug/1351597 bug #1351597])<br />
* On MS Windows, 64bit Inkscape builds, printing may result in mostly black pages when partial opacity is used in the document ([https://bugs.launchpad.net/inkscape/+bug/1418865 bug #1418865])<br />
* Printing offsets page (Windows) ([https://bugs.launchpad.net/inkscape/+bug/918319 bug #918319])<br />
* "Tiled Clones" inside transformed groups/layers in resized documents are displaced ([https://bugs.launchpad.net/inkscape/+bug/168651 bug #168651])<br />
* Displaced clones, offsets ([https://bugs.launchpad.net/inkscape/+bug/844909 bug #844909], [https://bugs.launchpad.net/inkscape/+bug/653574 bug #653574], [https://bugs.launchpad.net/inkscape/+bug/1152657 bug #1152657], [https://bugs.launchpad.net/inkscape/+bug/1245339 bug #1245339], [https://bugs.launchpad.net/inkscape/+bug/168013 bug #168013], [https://bugs.launchpad.net/inkscape/+bug/177751 bug #177751])<br />
* Crash on quit before saving has completed, resulting in incompletely saved files ([https://bugs.launchpad.net/inkscape/+bug/967416 bug #967416])<br />
* Guides: Colour not rendered opening saved document ([https://bugs.launchpad.net/inkscape/+bug/1374870 bug #1374870])<br />
* Text tool: Fails to set new default font family ([https://bugs.launchpad.net/inkscape/+bug/1227232 bug #1227232])<br />
* Extensions: Failure with documents lacking width/height attributes ([https://bugs.launchpad.net/inkscape/+bug/1461346 bug #1461346], [https://bugs.launchpad.net/inkscape/+bug/1463623 bug #1463623])<br />
* UI: Missing icons with Gtk+'s built-in icon theme (Windows, OS X) ([https://bugs.launchpad.net/inkscape/+bug/1269698 bug #1269698])<br />
* Text rendering cuts off trailing character ([https://bugs.launchpad.net/inkscape/+bug/1283194 bug #1283194], [https://bugs.launchpad.net/inkscape/+bug/1450675 bug #1450675])<br />
* Paste style - markers are omitted ([https://bugs.launchpad.net/inkscape/+bug/1467674 bug #1467674])<br />
* DXF export doesn't support <line> and <circle> elements ([https://bugs.launchpad.net/inkscape/+bug/1474347 bug #1474347], [https://bugs.launchpad.net/inkscape/+bug/1489320 bug #1489320])<br />
* Crash when importing raster images of different file types ([https://bugs.launchpad.net/inkscape/+bug/1467103 bug #1467103])<br />
* Filter effects and blur quality options broken ([https://bugs.launchpad.net/inkscape/+bug/1512729 bug #1512729]) (To get the same render quality in 0.92 as you had in 0.91, you need to set filter effects quality to 'Better' and the blur quality to 'Average'.)<br />
* Shape: 'Triangle in' and 'Triangle out' are identical ([https://bugs.launchpad.net/inkscape/+bug/1525401 bug #1525401])<br />
<br />
Many other crashes, memory leaks and lots of little things have also been fixed. For an exhaustive list of bugs that have been fixed, please see the [https://launchpad.net/inkscape/+milestone/0.92 milestones page for Inkscape 0.92] and the [https://launchpad.net/inkscape/+milestone/0.91.1 milestones page for the (not released) Inkscape version 0.91.1]<!-- CHECK on Release -->.<br />
<br />
== Known Issues ==<br />
<br />
* Fonts that are loaded by font managing software on Windows are not available for selection in Inkscape ([https://bugs.launchpad.net/inkscape/+bug/1416674 bug #1416674])<br />
* Dialogs that have been minimized do not open again until their icon in the dock is clicked on ([https://bugs.launchpad.net/inkscape/+bug/1270295 bug #1270295], will be fixed in 0.93)<br />
* The opacity indicator isn't initialized correctly (0% opacity even when the object is fully opaque, [https://bugs.launchpad.net/inkscape/+bug/1463078 bug #1463078], will be fixed in 0.93)<br />
* For some texts, the line height that is used for displaying the text in 0.91 doesn't correspond to the one that is used in 0.92, so line height is larger than it should be (as a workaround, [https://bugs.launchpad.net/inkscape/+bug/1652340 there is an extension available that can fix those texts]).<br />
<br />
[Please fill in]<br />
<br />
== Previous releases ==<br />
* [[Release notes/0.91]]<br />
* [[Release notes/0.48]] ([[Release notes/0.48.1 |0.48.1]], [[Release notes/0.48.2 | 0.48.2]], [[Release notes/0.48.3 | 0.48.3]], [[Release notes/0.48.4 | 0.48.4]], [[Release notes/0.48.5 | 0.48.5]])<br />
* [[Release notes/0.47]]<br />
* [[Release notes/0.46]]<br />
* [[Release notes/0.45]]<br />
* [[Release notes/0.44]]<br />
* [[Release notes/0.43]]<br />
* [[Release notes/0.42]]<br />
* [[Release notes/0.41]]<br />
* [[Release notes/0.40]]<br />
* [[Release notes/0.39]]<br />
* [[Release notes/0.38]]<br />
* [[Release notes/0.37]]<br />
* [[Release notes/0.36]]<br />
* [[Release notes/0.35]]</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Hackfest2016_Attendees&diff=98536Hackfest2016 Attendees2016-03-11T14:42:11Z<p>Mc: /* Who is Attending? */</p>
<hr />
<div>== Who is Attending? ==<br />
<br />
<br />
{| class="wikitable"<br />
|+ List of Attendees<br />
Hackfest<br />
|-<br />
! rowspan="2" | Who<br />
! colspan="2" | Dates<br />
! colspan="2" | Allocation<br />
! colspan="2" | Flights/Train<br />
! rowspan="2" | Hotel<br />
|-<br />
! Hackfest<br />
! LGM<br />
! Hackfest<br />
! LGM<br />
! Arrival<br />
! Departure<br />
|-<br />
| Tavmjong Bah<br />
| 4/11, 4/12, 4/13<br />
| 4/15, 4/16, 4/17, 4/18<br />
| $2000<br />
| $500<br />
| xx<br />
| xx<br />
| xx<br />
|-<br />
| Martin Owens<br />
| 4/11, 4/12, 4/13<br />
| 4/15, 4/16, 4/17, 4/18<br />
| $2000<br />
| $500<br />
| 7:25AM April 10th BOS -> LHR<br />
| 1:05PM April 25th LHR -> BOS<br />
| xx<br />
|-<br />
| C R<br />
| 4/11, 4/12, 4/13<br />
| 4/15, 4/16, 4/17, 4/18<br />
| TBD<br />
| TBD<br />
| xx<br />
| xx<br />
| xx<br />
|-<br />
| Alex Valavanis (host)<br />
| 4/11, 4/12, 4/13<br />
| -<br />
| $2000<br />
| -<br />
| N/A<br />
| N/A<br />
| N/A<br />
|-<br />
| Marc Jeanmougin<br />
| 4/11, 4/12, 4/13<br />
| 4/15, 4/16, 4/17, 4/18<br />
| $1000<br />
| $500<br />
| (04/10)Eurostar+train (arrival 5:31PM)<br />
| (04/19)Eurostar (departure 4:31PM)<br />
| Boundary Hotel then YHA StPancras<br />
|-<br />
| Sebastian Faubel<br />
| 4/11, 4/12, 4/13<br />
| 4/15, 4/16, 4/17, 4/18<br />
| TBD<br />
| TBD<br />
| xx<br />
| xx<br />
| xx<br />
|-<br />
| Sebastian's colleague<br />
| 4/11, 4/12, 4/13<br />
| 4/15, 4/16, 4/17, 4/18<br />
| TBD<br />
| TBD<br />
| xx<br />
| xx<br />
| xx<br />
|-<br />
| Jabier Arraiza<br />
| 4/11, 4/12, 4/13<br />
| 4/15, 4/16, 4/17, 4/18<br />
| $2000<br />
| $500<br />
| xx<br />
| xx<br />
| xx<br />
|-<br />
| Krzysztof Kosiński<br />
| 4/11, 4/12, 4/13<br />
| 4/15, 4/16, 4/17, 4/18<br />
| <sup>1</sup><br />
| <sup>1</sup><br />
| <sup>2</sup><br />
| <sup>2</sup><br />
| <sup>1</sup><br />
|-<br />
| the Adib<br />
| -<br />
| 4/15, 4/16, 4/17, 4/18<br />
| NA<br />
| $500<br />
| xx<br />
| xx<br />
| xx<br />
|-<br />
| John Cliff<br />
| -<br />
| 4/15, 4/16, 4/17, 4/18<br />
| NA<br />
| $500<br />
| xx<br />
| xx<br />
| xx<br />
|-<br />
! Total<br />
!<br />
!<br />
! $TBD<br />
! $TBD<br />
!<br />
!<br />
!<br />
|}<br />
<br />
TBD: To Be Determined -> need to verify commits/years of activity.<br />
<br />
<sup>1</sup> Sponsored by outside organization.<br />
<sup>2</sup> Flight sponsored by outside organization.<br />
<br />
Allocation for attending hackfest:<br />
* Up to $2000 each for Inkscape developers who have contributed for 3+ years and > 200 commits.<br />
* Up to $1500 each for Inkscape developers who have contributed for 2+ years and > 100 commits.<br />
* Up to $1000 each for Inkscape developers who have contributed for 1+ year and > 50 commits.<br />
* Up to $500 each for any Inkscape contributor listed in AUTHORS file with at least 10 commits by Jan 1, 2016.<br />
<br />
Allocation for attending LGM (additional to allocation for hackfest):<br />
* Up to $500 each for any Inkscape contributor listed in AUTHORS file by Jan 1, 2016.<br />
<br />
If your are an active contributor to Inkscape but are NOT in the AUTHORS file (translator, documentor, etc.) we may still be able to provide some funding on a case-by-case basis.<br />
<br />
== Travel ==<br />
<br />
Attendees seeking reimbursement must follow [https://gitorious.org/conservancy/policies/raw/75b8894f8586503e5abd23bed84229bbe5c1b7ee:Travel/conservancy-travel-policy.txt SFC travel policy]. Most importantly, take a screen shot of your airfare search. Your ticket must be within $100 of the lowest fare. Keep receipts for transport and lodging. Meal cost and misc. expenses are handled by a per diem and don't require receipts.<br />
<br />
=== Transport ===<br />
<br />
Google Flights search is probably your best bet. kayak.com and mobissimo.com can also be useful.<br />
<br />
There is a small airport in Leeds (Leeds-Bradford). http://www.justtheflight.co.uk/cheap-flights-from-LBA/<br />
<br />
Manchester airport is 1.5 hours away (~$30, 50 min; ~$10 if booked several weeks in advance [http://www.thetrainline.com])<br />
<br />
Trains between London (Kings Cross) and Leeds take a bit more than 2 hours. Book your ticket one month ahead to save 70%!<br />
<br />
Trains between Paris and Leeds: $70 one way, 5 hours, booked far in advance.<br />
<br />
Devenshire Hall is about 25 minutes by bus #1 (every 10 minutes) or a 40 minute walk from Leeds Train station.<br />
<br />
=== Hotel ===<br />
<br />
Check AirBnB. Often 1/3 the cost of a hotel room.<br />
<br />
=== Venue ===<br />
<br />
CONFIRMED<br />
<br />
The hackfest will take place in Devenshire Hall at the University of Leeds. (Cumberland Road, Leeds, LS6 2EQ)<br />
<br />
A map of the U. of Leeds campus can be found at http://www.meetinleeds.co.uk/map-of-venues<br />
<br />
== Reimbursements ==<br />
<br />
After the event, forward your receipts (scans/pdf files/etc.) to me (Tavmjong). I'll collect them and forward them to the SFC. You need to also send payment information (name, currency, paypal account or bank information: see travel policy for more details).</div>Mchttps://wiki.inkscape.org/wiki/index.php?title=Hackfest2016_Attendees&diff=98531Hackfest2016 Attendees2016-03-11T14:40:47Z<p>Mc: /* Who is Attending? */</p>
<hr />
<div>== Who is Attending? ==<br />
<br />
<br />
{| class="wikitable"<br />
|+ List of Attendees<br />
Hackfest<br />
|-<br />
! rowspan="2" | Who<br />
! colspan="2" | Dates<br />
! colspan="2" | Allocation<br />
! colspan="2" | Flights/Train<br />
! rowspan="2" | Hotel<br />
|-<br />
! Hackfest<br />
! LGM<br />
! Hackfest<br />
! LGM<br />
! Arrival<br />
! Departure<br />
|-<br />
| Tavmjong Bah<br />
| 4/11, 4/12, 4/13<br />
| 4/15, 4/16, 4/17, 4/18<br />
| $2000<br />
| $500<br />
| xx<br />
| xx<br />
| xx<br />
|-<br />
| Martin Owens<br />
| 4/11, 4/12, 4/13<br />
| 4/15, 4/16, 4/17, 4/18<br />
| $2000<br />
| $500<br />
| 7:25AM April 10th BOS -> LHR<br />
| 1:05PM April 25th LHR -> BOS<br />
| xx<br />
|-<br />
| C R<br />
| 4/11, 4/12, 4/13<br />
| 4/15, 4/16, 4/17, 4/18<br />
| TBD<br />
| TBD<br />
| xx<br />
| xx<br />
| xx<br />
|-<br />
| Alex Valavanis (host)<br />
| 4/11, 4/12, 4/13<br />
| -<br />
| $2000<br />
| -<br />
| N/A<br />
| N/A<br />
| N/A<br />
|-<br />
| Marc Jeanmougin<br />
| 4/11, 4/12, 4/13<br />
| 4/15, 4/16, 4/17, 4/18<br />
| $1000<br />
| $500<br />
| (04/10)Eurostar+train@17:31<br />
| (04/19)Eurostar@16h31<br />
| Boundary Hotel then YHA StPancras<br />
|-<br />
| Sebastian Faubel<br />
| 4/11, 4/12, 4/13<br />
| 4/15, 4/16, 4/17, 4/18<br />
| TBD<br />
| TBD<br />
| xx<br />
| xx<br />
| xx<br />
|-<br />
| Sebastian's colleague<br />
| 4/11, 4/12, 4/13<br />
| 4/15, 4/16, 4/17, 4/18<br />
| TBD<br />
| TBD<br />
| xx<br />
| xx<br />
| xx<br />
|-<br />
| Jabier Arraiza<br />
| 4/11, 4/12, 4/13<br />
| 4/15, 4/16, 4/17, 4/18<br />
| $2000<br />
| $500<br />
| xx<br />
| xx<br />
| xx<br />
|-<br />
| Krzysztof Kosiński<br />
| 4/11, 4/12, 4/13<br />
| 4/15, 4/16, 4/17, 4/18<br />
| <sup>1</sup><br />
| <sup>1</sup><br />
| <sup>2</sup><br />
| <sup>2</sup><br />
| <sup>1</sup><br />
|-<br />
| the Adib<br />
| -<br />
| 4/15, 4/16, 4/17, 4/18<br />
| NA<br />
| $500<br />
| xx<br />
| xx<br />
| xx<br />
|-<br />
| John Cliff<br />
| -<br />
| 4/15, 4/16, 4/17, 4/18<br />
| NA<br />
| $500<br />
| xx<br />
| xx<br />
| xx<br />
|-<br />
! Total<br />
!<br />
!<br />
! $TBD<br />
! $TBD<br />
!<br />
!<br />
!<br />
|}<br />
<br />
TBD: To Be Determined -> need to verify commits/years of activity.<br />
<br />
<sup>1</sup> Sponsored by outside organization.<br />
<sup>2</sup> Flight sponsored by outside organization.<br />
<br />
Allocation for attending hackfest:<br />
* Up to $2000 each for Inkscape developers who have contributed for 3+ years and > 200 commits.<br />
* Up to $1500 each for Inkscape developers who have contributed for 2+ years and > 100 commits.<br />
* Up to $1000 each for Inkscape developers who have contributed for 1+ year and > 50 commits.<br />
* Up to $500 each for any Inkscape contributor listed in AUTHORS file with at least 10 commits by Jan 1, 2016.<br />
<br />
Allocation for attending LGM (additional to allocation for hackfest):<br />
* Up to $500 each for any Inkscape contributor listed in AUTHORS file by Jan 1, 2016.<br />
<br />
If your are an active contributor to Inkscape but are NOT in the AUTHORS file (translator, documentor, etc.) we may still be able to provide some funding on a case-by-case basis.<br />
<br />
== Travel ==<br />
<br />
Attendees seeking reimbursement must follow [https://gitorious.org/conservancy/policies/raw/75b8894f8586503e5abd23bed84229bbe5c1b7ee:Travel/conservancy-travel-policy.txt SFC travel policy]. Most importantly, take a screen shot of your airfare search. Your ticket must be within $100 of the lowest fare. Keep receipts for transport and lodging. Meal cost and misc. expenses are handled by a per diem and don't require receipts.<br />
<br />
=== Transport ===<br />
<br />
Google Flights search is probably your best bet. kayak.com and mobissimo.com can also be useful.<br />
<br />
There is a small airport in Leeds (Leeds-Bradford). http://www.justtheflight.co.uk/cheap-flights-from-LBA/<br />
<br />
Manchester airport is 1.5 hours away (~$30, 50 min; ~$10 if booked several weeks in advance [http://www.thetrainline.com])<br />
<br />
Trains between London (Kings Cross) and Leeds take a bit more than 2 hours. Book your ticket one month ahead to save 70%!<br />
<br />
Trains between Paris and Leeds: $70 one way, 5 hours, booked far in advance.<br />
<br />
Devenshire Hall is about 25 minutes by bus #1 (every 10 minutes) or a 40 minute walk from Leeds Train station.<br />
<br />
=== Hotel ===<br />
<br />
Check AirBnB. Often 1/3 the cost of a hotel room.<br />
<br />
=== Venue ===<br />
<br />
CONFIRMED<br />
<br />
The hackfest will take place in Devenshire Hall at the University of Leeds. (Cumberland Road, Leeds, LS6 2EQ)<br />
<br />
A map of the U. of Leeds campus can be found at http://www.meetinleeds.co.uk/map-of-venues<br />
<br />
== Reimbursements ==<br />
<br />
After the event, forward your receipts (scans/pdf files/etc.) to me (Tavmjong). I'll collect them and forward them to the SFC. You need to also send payment information (name, currency, paypal account or bank information: see travel policy for more details).</div>Mc