We have moved to https://dokuwiki.librecad.org/

Lots of content was already moved to the new wiki, but there is still work to do. If you want to contribute, please register a new account at https://dokuwiki.librecad.org/

This wiki will be kept for a while to keep search engine results valid. Moved sites may be deleted here in future.

Difference between revisions of "GSoC 2015"

From LibreCAD wiki
Jump to: navigation, search
(LibreCAD Projects Ideas: added mobile to idea list)
(Formatting. Should 'mentors' be a section on this page?)
 
(11 intermediate revisions by 3 users not shown)
Line 1: Line 1:
[[File:GSoC-2015.png|100px|GSoC 2015 logo]]
+
[[File:GSoC-2015.png|100px|right|GSoC 2015 logo]]
 +
= How to Apply =
 +
Please see [[GSoC|GSoC Checklist]]. It's important that you read about how to apply first before you talk to use so you have an idea what is going to happen.
  
= LibreCAD Projects Ideas =
+
= Expectations =
 +
 
 +
GSoC is about getting people involved and contributing to open source over the long-term. As such, we weight our application selection process towards students that are interested in remaining involved in open source software development long after GSoC has ended.
 +
 
 +
GSoC is not a job. If you are in for easy money then this job is not for you; if you are in because you like to learn and want to participate in an open source project, the rewards are great.
 +
 
 +
We do grade submissions based on perception of the submitter's abilities to complete the task within the program timeframe, general consensus on the technical approach being proposed, and overall interest in having such modifications made to LibreCAD. Open Source is about communication; we do very much like our student's to communicate with us, hang out on the IRC channel and be active on the forum. Not only for the GSoC project but in general be actively involved in LibreCAD.
 +
 
 +
Just about every GSoC organization receives considerably more project proposals than can be accepted. Every application gets read multiple times and reviewed in detail. Of those applications, only a small subset are selected so keep in mind that the selection process is rather competitive and difficult.
 +
 
 +
Whether or not you are accepted, contributing to open source outside of GSoC is one of the main goals of the program and is the best way to be noticed and get your proposal accepted. Keep that in mind. Thanks for your interest and we look forward to working with new LibreCAD developers!
 +
 
 +
= LibreCAD Project Ideas =
  
 
LibreCAD is a free Open Source CAD application for Windows, Apple and Linux. Support and documentation is free from our large, dedicated community of users, contributors and developers.
 
LibreCAD is a free Open Source CAD application for Windows, Apple and Linux. Support and documentation is free from our large, dedicated community of users, contributors and developers.
  
{| bgcolor=#fff
+
 
!
+
'''REMEMBER''' These are ideas for GSoC, if you want to work on a other subject then any of the the below that will benefit LibreCAD, then please don't hesitate and let us know! Contact me (Ries) or Dongxu and let us know your thought's and ideas!
!align=center|Languages
+
We ar looking forward to hear how ''you'' want to improve LibreCAD!
!align=center|Difficulty
+
 
!align=center|Contacts
+
{| class=wikitable
 +
!Project
 +
!Languages
 +
!Difficulty
 +
!Contacts
 
|-
 
|-
|width=62%|'''[[LibreCAD 3 Features]]:'''  After the project in 2014, LibreCAD engine is maturing, and it's reasonable to add GUI support for drawing and editing actions to start exposing it to end users.
+
 
|align=center|C++ , Qt
+
|- bgcolor=#ffffff
|align=center|MEDIUM to HIGH
+
|width=62%|'''[[LibreCAD 3 UI Phase 1]]:'''  After the project in 2014, LibreCAD engine is maturing, and it's reasonable to add GUI support for drawing and editing actions to start exposing it to end users. We have separated this in 2 phases
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|R. van Twisk]]
+
First phase:
 +
 
 +
Within our current LibreCAD 3 there is a library that handles drawing of entities.
 +
This needs to be extended such that it can handle mouse/keyboard input and have the capability to create entities within our document. We require a framework that can easily be extended such that other entities can be created with or without constrains.
 +
Constrains can include must be a extendable framework
 +
* Snap on grid
 +
* Snap on snap point's of entities
 +
* Snap tangent on other entities
 +
* Vertical/Horizontal constrains
 +
* others...
 +
 
 +
This portion doesn't require a UI with icons/buttons but a API in/around the document canvas that can handle the above such it can be included in other applications other then LibreCAD (BRL-CAD/FreeCAD etc...)
 +
 
 +
|align=center|C++,QT,UI
 +
|align=center|MEDIUM  
 +
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|dli (Dongxu Li < dongxuli2011 at gmail >, R. van Twisk <LibreCAD@rvt.dds.nl>]]
 
|-
 
|-
|
+
 
 +
|- bgcolor=#ffffff
 +
|width=62%|'''[[LibreCAD 3 UI Phase 2]]:'''  After the project in 2014, LibreCAD engine is maturing, and it's reasonable to add GUI support for drawing and editing actions to start exposing it to end users. We have separated this in 2 phases
 +
Second phase:
 +
 
 +
Build a  UI that communicates with the document canvas. This is the portion that does have the UI/Buttons/Menu's We are leaning towards using QT but any other UI framework is open to suggestion.
 +
Initially we are looking towards the framework portion so we can work and extend but at a minimum we should be able to draw and manipulate the basic entities.
 +
 
 +
|align=center|C++ , Qt, UI
 +
|align=center|HIGH
 +
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|R. van Twisk <LibreCAD@rvt.dds.nl>]]
 +
 
 +
|- bgcolor=#ffffff
 +
|width=62%|'''[[LibreCAD 3 Math support]]:''' For LibreCAD 3 we need to implement more manipulation and creation of entities based on existing entity information.
 +
Examples of creation:
 +
* Offset of spline, line, circle etc
 +
* Make entities tangent to each other (with restrictions)
 +
* Circle inscribed (example in LibreCAD 2)
 +
* Circle tangential (example in LibreCAD 2)
 +
 
 +
Examples of manipulation:
 +
* trimming of entities
 +
* lengthen of entities (to extend to a specific location)
 +
* Rounding ( Bevel of entities
 +
* Change direction of entities. so all start/end's are connected for a list of entities
 +
* Polyline generation of selected entities
 +
 
 +
|align=center|C++,Math
 +
|align=center|MEDIUM TO HIGH
 +
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|dli (Dongxu Li < dongxuli2011 at gmail >, R. van Twisk <LibreCAD@rvt.dds.nl>]]
 +
|-
 +
 
 +
|- bgcolor=#ffffff
 +
|width=62%|'''[[Improve Spline/Bézier Support]]:''' LibreCAD has basic support for [http://en.wikipedia.org/wiki/B-spline B-spline] and quadratic splines, but many interesting features are still missing. For example, methods for trimming, offsetting, hatching, tangential directions, ''etc.'' are required to allow extensive usage of splines in LibreCAD. A rather comprehensive collection of spline mathematics can be found at [http://pomax.github.io/bezierinfo/ A Primer on Bézier Curves]
 +
Examples of spline features to implement:
 +
* Trimming
 +
* Hatching
 +
* Arc length
 +
* Area included by a contour
 +
 
 +
|align=center|C++,Math
 +
|align=center|MEDIUM TO HIGH
 +
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|dli (Dongxu Li < dongxuli2011 at gmail >, R. van Twisk <LibreCAD@rvt.dds.nl>]]
 +
|-
 +
 
  
 
|- bgcolor=#ffffff
 
|- bgcolor=#ffffff
 
|width=62%|'''[[Improve contour topology support]]:'''  Similar to [http://sourceforge.net/p/librecad/feature-requests/21/ hatching by clicking], more robust handling of contours is desirable in LibreCAD. In the process, support for area enclosed in a contour should be supported as well (see, [[Math_bits#Area_within_a_simple_closed_contour]]).
 
|width=62%|'''[[Improve contour topology support]]:'''  Similar to [http://sourceforge.net/p/librecad/feature-requests/21/ hatching by clicking], more robust handling of contours is desirable in LibreCAD. In the process, support for area enclosed in a contour should be supported as well (see, [[Math_bits#Area_within_a_simple_closed_contour]]).
 +
|align=center|C++
 +
|align=center|MEDIUM
 +
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|dli (Dongxu Li < dongxuli2011 at gmail >]]
 +
|-
 +
 +
|- bgcolor=#ffffff
 +
|width=62%|'''[[Improve precision and robustness of equation solvers]]:'''  LibreCAD uses its own equation solvers for polynominal equations and systems of equation up to the quartic order. Robustness is of great importance for features such as finding common tangential circles. An ideal solution involves adding multi-precision support for the current equation solvers in used by LibreCAD, either by using a 3rd party library or by direct implementation.
 +
|align=center|C++
 +
|align=center|MEDIUM
 +
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|dli (Dongxu Li < dongxuli2011 at gmail >]]
 +
|-
 +
 +
|- bgcolor=#ffffff
 +
|width=62%|'''[[Conic curve support]]:'''  LibreCAD supports basic entity types including ellipse. It's desirable to have support for parabola and hyperbola as primitive entity types, giving the LibreCAD equation solvers are capable of handling quartic equations. This imiplementation should be in LibreCAD V3, but backporting to the current stable release V2 is also encouraged.
 
|align=center|C++
 
|align=center|C++
 
|align=center|MEDIUM
 
|align=center|MEDIUM
Line 37: Line 128:
 
|align=center|Qt Android iOS
 
|align=center|Qt Android iOS
 
|align=center|MEDIUM
 
|align=center|MEDIUM
|align=center|[[Google_Summer_of_Code/Project_Ideas#Mentors|R. van Twisk <gsoc_2014@rvt.dds.nl>,dli (Dongxu Li < dongxuli2011 at gmail >]]
+
|align=center|[[dli (Dongxu Li < dongxuli2011 at gmail >]]
 
|-
 
|-
  
Line 62: Line 153:
  
 
It's recommended to use github's pull requests instead of patches: [https://help.github.com/articles/using-pull-requests Using pull requests]
 
It's recommended to use github's pull requests instead of patches: [https://help.github.com/articles/using-pull-requests Using pull requests]
 +
 +
[[Category:Developers]]

Latest revision as of 06:38, 19 May 2015

GSoC 2015 logo

How to Apply

Please see GSoC Checklist. It's important that you read about how to apply first before you talk to use so you have an idea what is going to happen.

Expectations

GSoC is about getting people involved and contributing to open source over the long-term. As such, we weight our application selection process towards students that are interested in remaining involved in open source software development long after GSoC has ended.

GSoC is not a job. If you are in for easy money then this job is not for you; if you are in because you like to learn and want to participate in an open source project, the rewards are great.

We do grade submissions based on perception of the submitter's abilities to complete the task within the program timeframe, general consensus on the technical approach being proposed, and overall interest in having such modifications made to LibreCAD. Open Source is about communication; we do very much like our student's to communicate with us, hang out on the IRC channel and be active on the forum. Not only for the GSoC project but in general be actively involved in LibreCAD.

Just about every GSoC organization receives considerably more project proposals than can be accepted. Every application gets read multiple times and reviewed in detail. Of those applications, only a small subset are selected so keep in mind that the selection process is rather competitive and difficult.

Whether or not you are accepted, contributing to open source outside of GSoC is one of the main goals of the program and is the best way to be noticed and get your proposal accepted. Keep that in mind. Thanks for your interest and we look forward to working with new LibreCAD developers!

LibreCAD Project Ideas

LibreCAD is a free Open Source CAD application for Windows, Apple and Linux. Support and documentation is free from our large, dedicated community of users, contributors and developers.


REMEMBER These are ideas for GSoC, if you want to work on a other subject then any of the the below that will benefit LibreCAD, then please don't hesitate and let us know! Contact me (Ries) or Dongxu and let us know your thought's and ideas! We ar looking forward to hear how you want to improve LibreCAD!

Project Languages Difficulty Contacts
LibreCAD 3 UI Phase 1: After the project in 2014, LibreCAD engine is maturing, and it's reasonable to add GUI support for drawing and editing actions to start exposing it to end users. We have separated this in 2 phases

First phase:

Within our current LibreCAD 3 there is a library that handles drawing of entities. This needs to be extended such that it can handle mouse/keyboard input and have the capability to create entities within our document. We require a framework that can easily be extended such that other entities can be created with or without constrains. Constrains can include must be a extendable framework

  • Snap on grid
  • Snap on snap point's of entities
  • Snap tangent on other entities
  • Vertical/Horizontal constrains
  • others...

This portion doesn't require a UI with icons/buttons but a API in/around the document canvas that can handle the above such it can be included in other applications other then LibreCAD (BRL-CAD/FreeCAD etc...)

C++,QT,UI MEDIUM dli (Dongxu Li < dongxuli2011 at gmail >, R. van Twisk <LibreCAD@rvt.dds.nl>
LibreCAD 3 UI Phase 2: After the project in 2014, LibreCAD engine is maturing, and it's reasonable to add GUI support for drawing and editing actions to start exposing it to end users. We have separated this in 2 phases

Second phase:

Build a UI that communicates with the document canvas. This is the portion that does have the UI/Buttons/Menu's We are leaning towards using QT but any other UI framework is open to suggestion. Initially we are looking towards the framework portion so we can work and extend but at a minimum we should be able to draw and manipulate the basic entities.

C++ , Qt, UI HIGH R. van Twisk <LibreCAD@rvt.dds.nl>
LibreCAD 3 Math support: For LibreCAD 3 we need to implement more manipulation and creation of entities based on existing entity information.

Examples of creation:

  • Offset of spline, line, circle etc
  • Make entities tangent to each other (with restrictions)
  • Circle inscribed (example in LibreCAD 2)
  • Circle tangential (example in LibreCAD 2)

Examples of manipulation:

  • trimming of entities
  • lengthen of entities (to extend to a specific location)
  • Rounding ( Bevel of entities
  • Change direction of entities. so all start/end's are connected for a list of entities
  • Polyline generation of selected entities
C++,Math MEDIUM TO HIGH dli (Dongxu Li < dongxuli2011 at gmail >, R. van Twisk <LibreCAD@rvt.dds.nl>
Improve Spline/Bézier Support: LibreCAD has basic support for B-spline and quadratic splines, but many interesting features are still missing. For example, methods for trimming, offsetting, hatching, tangential directions, etc. are required to allow extensive usage of splines in LibreCAD. A rather comprehensive collection of spline mathematics can be found at A Primer on Bézier Curves

Examples of spline features to implement:

  • Trimming
  • Hatching
  • Arc length
  • Area included by a contour
C++,Math MEDIUM TO HIGH dli (Dongxu Li < dongxuli2011 at gmail >, R. van Twisk <LibreCAD@rvt.dds.nl>
Improve contour topology support: Similar to hatching by clicking, more robust handling of contours is desirable in LibreCAD. In the process, support for area enclosed in a contour should be supported as well (see, Math_bits#Area_within_a_simple_closed_contour). C++ MEDIUM dli (Dongxu Li < dongxuli2011 at gmail >
Improve precision and robustness of equation solvers: LibreCAD uses its own equation solvers for polynominal equations and systems of equation up to the quartic order. Robustness is of great importance for features such as finding common tangential circles. An ideal solution involves adding multi-precision support for the current equation solvers in used by LibreCAD, either by using a 3rd party library or by direct implementation. C++ MEDIUM dli (Dongxu Li < dongxuli2011 at gmail >
Conic curve support: LibreCAD supports basic entity types including ellipse. It's desirable to have support for parabola and hyperbola as primitive entity types, giving the LibreCAD equation solvers are capable of handling quartic equations. This imiplementation should be in LibreCAD V3, but backporting to the current stable release V2 is also encouraged. C++ MEDIUM dli (Dongxu Li < dongxuli2011 at gmail >
SmartSnap: Currently LibreCAD has various snap capabilities, but they are only directly on entities, or on the grid.

With smart snap LibreCAD can find endpoints, length, arc sizes of the 'same' at different locations. This allows for much faster creating of drawings because entering of new entities require less steps. Each time LibreCAD finds a smart snap, the point or entry would light up on the screen showing the users the snap interaction.

C++ MEDIUM dli (Dongxu Li < dongxuli2011 at gmail >
LibreCAD on mobile: Qt5 support for mobile (Android and iOS, see Qt mobile. The framework of creating a mobile version LibreCAD needs to be created. This platform support should be implemented for the LibreCAD V3, but support for the current stable release (V2) should be considered during the framework design. Qt Android iOS MEDIUM [[dli (Dongxu Li < dongxuli2011 at gmail >]]
Support for multiple units upon data entry: Similar to feet and inches support, support for supplying LibreCAD with different units. For example if LibreCAD was set to 'foot' in the unit setup, it should be possible to enter a unit of [1" + 2'], or [1.2meter]. LibreCAD would then convert the entered units to the unit LibreCAD is operating/set for. Various measuring system should be supported. C++ MEDIUM R. van Twisk <gsoc_2014@rvt.dds.nl>,dli (Dongxu Li < dongxuli2011 at gmail >

HOW TO SUBMIT A PATCH?

1) To create patch first clone our repository and make a new branch

$git clone https://github.com/LibreCAD/LibreCAD.git
$cd LibreCAD
$git checkout -b new_branch

2) Update your code in new branch
3) Create a patch:
Assuming your changes are in new branch and didn’t yet merge it to master branch.

$git format-patch master --stdout > my_patch.patch

This will create a new file my_patch.patch with all changes from new_branch
Now, you have a patch for the fix you wrote. Send it to the maintainer of the project …

It's recommended to use github's pull requests instead of patches: Using pull requests