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 2012"

From LibreCAD wiki
Jump to: navigation, search
(2D 'kernel')
Line 179: Line 179:
 
=== 2D 'kernel'  ===
 
=== 2D 'kernel'  ===
 
'''Brief explanation:'''
 
'''Brief explanation:'''
An API based 2D kernel with pluggable storage engine and operations module. This style 2D kernel would allows us to store 2D entities not only in memory but also in shared database. THis would allow more then one user to work on the same drawing simulatniously.
+
An API based 2D kernel with pluggable storage engine and operations module. This style 2D kernel would allows us to store 2D entities not only in memory but also in shared database. This would allow more then one user to work on the same drawing simultaneously.
  
 
'''Expected results:'''
 
'''Expected results:'''
Line 185: Line 185:
  
 
'''Knowledge Prerequisite:'''
 
'''Knowledge Prerequisite:'''
c++, c++ architect
+
c++, c++ architect (guru level)
  
 
'''Mentor:'''
 
'''Mentor:'''
 
dli, Ries
 
dli, Ries

Revision as of 02:18, 28 February 2012

GSoC2012.jpg

Introduction

LibreCAD plans on participating in GSoC 2012 (if accepted). This page will bring together ideas from developers to give Google and perspective students lists of contacts and potential projects.

What is an Ideas list?

From: http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2012/faqs#ideas_list

An Ideas list should be a list of suggested student projects. This list is meant to introduce contributors to your project's needs and to provide inspiration to would-be student applicants. It is useful to classify each idea as specifically as possible, e.g. "must know Python" or "easier project; good for a student with more limited experience with C++." If your organization plans to provide an application template, it would be good to include it on your Ideas list. Keep in mind that your Ideas list should be a starting point for student applications; we've heard from past mentoring organization participants that some of their best student projects are those that greatly expanded on a proposed idea or were blue-sky proposals not mentioned on the Ideas list at all. A link to a bug tracker for your open source organization is NOT an ideas list.

Other interesting/useful links:

http://google-opensource.blogspot.com/2012/02/google-summer-of-code-2012-is-on.html

http://code.google.com/p/google-summer-of-code/wiki/ProgramPresentations

http://code.google.com/p/google-summer-of-code/wiki/GsocLogos

http://code.google.com/p/google-summer-of-code/wiki/GsocFlyers


LibreCAD Idea List Template

from http://community.kde.org/GSoC/2011/Ideas CC-BY-SA-3.0

Title of Project

Brief explanation:

Expected results:

Knowledge Prerequisite:

Mentor:

When adding an idea to this section, please try to include the following data:

  • a brief explanation
  • the expected results
  • pre-requisites for working on your project
  • if applicable, links to more information or discussions
  • your name and email address for contact (if you're willing to be a mentor)
  • backup mentor name and email address for contact

If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first.

For students:

See the potential projects below. It is a VERY good idea to contact potential mentors prior to applying to help in your application. It also would be helpful to subscribe to our mailing list (http://forum.librecad.org/LibreCAD-dev-f4361976.html) to introduce yourself and visit our IRC channel (#librecad on irc.freenode.net). Also explore our feature request tracker on SourceForge (http://sourceforge.net/tracker/?group_id=342582) for additional ideas if you'd like to propose something else.

Potential projects (to be categorized later):

Plugin Interface

Brief explanation: LibreCAD's plugin interface needs to be extended in the following ways:

  • so that a plugin can operate on entities available within LibreCAD including creation, deletion, selection as well as general CAD operations like scaling, rotation, copying, attribute changes.
  • so that a plugin can operate on LibreCAD's menu system so it is capable of creating new drawings, create blocks, layers and more.

Expected results: LibreCAD will be able to be controlled by pure scripting rather then user interaction.

Knowledge Prerequisite: c++, Qt

Mentor: Ries


DWG Support

Brief explanation: Allow to load and save files in the DWG format. The student doesn't have to write it's own DWG parser because it can use LibreDWG. However, some knowledge of the DWG or DXF formats, as they are somewhat similar, format is desirable. Loading and saving of the formats will go through LibreCAD's plugin interface.

Expected results: LibreCAD will be able to load and save files in the DWG format using file->open to open a file or file->save to save a file.

Knowledge Prerequisite: c++, Qt, file filters

Mentor: Ries


Scripting

Brief explanation: Provide a script based command line interface for CAD. This will allow LibreCAD to be scripted through a external file. From within LibreCAD or from Command line a user can supply LibreCAD with a script that can get executed. This project is in relation with LibreCAD's plugin interface.

Expected results: LibreCAD provides a unified command line interface for actions, and can be run in both an interactive cli mode and a non-interactive batch processing mode.

Knowledge Prerequisite: C++, Python, Qt, QtScript

Mentor: Ries, dli


CAD Engine Features

Brief explanation: LibreCAD needs more features for its CAD engine.

Some examples could be:

A new spline library to support features like, spline fitting, trimming, hatching, etc.;

Support for more CAD entity types and more drawing methods for entity types;

Improve support for projection mode, in addition to isometric projection within LibreCAD. Need to handle 3D distance properly in all projection modes;

Support for geo-referenced data: support for georeferenced image;

Support for Voronoi Diagram. While Voronoi diagram itself is an interesting feature to support, the requested Offset feature can be implemented by Voronoi analysis.

improve hatch algorithm hatching by flood fill. The current hatch creation requires user to supply a closed contour. An automatic contour detection algorithm which supports all possible entity types is desired.

Expected results: More CAD features supported by LibreCAD. Significant addition of CAD features is expected on the chosen part of the LibreCAD CAD engine.

Knowledge Prerequisite: computational geometry, C++

Mentor: awallin, dli


General GUI improvement

Brief explanation: Some detailed ideas have been proposed here: ideas on GUI improvement.

Support user defined keyboard shortcuts.

Use the Qt graphic view framework to improve painter speed for displaying of drawing.

Expected results: Improved GUI for better user experience.

Knowledge Prerequisite: Qt, C++

Mentor: Ries, dli


Multi-threading Support

Brief explanation: LibreCAD does not support multi-threading yet, while overall performance and GUI responsive time can benefit from a multi-threading design.

Parallel processing is also expected for CAD engine related operations.

Expected results: Multi-threading support and better user experience.

Knowledge Prerequisite: Qt, C++

Mentor: Ries, dli


Theme based UI

Brief explanation: LibreCAD's design is somewhat hard coded into the the core, and although it's possible to change the icons, this cannot be done after compilation of LibreCAD. We would like to have a UI where the icons can be replaced with a other set of icons, even after the program has been compiled.

Expected results: A dialog or method in LibreCAD to set the icons to be loaded.

Knowledge Prerequisite: Qt

Mentor: Ries, dli


2D 'kernel'

Brief explanation: An API based 2D kernel with pluggable storage engine and operations module. This style 2D kernel would allows us to store 2D entities not only in memory but also in shared database. This would allow more then one user to work on the same drawing simultaneously.

Expected results: A new 2D kernel in LibreCAD in which operation can be performed. Only one backend (memory) needs to be provided so LibreCAD can operate the same way using the new kernel. This can later be extended to support multiple storage engines.

Knowledge Prerequisite: c++, c++ architect (guru level)

Mentor: dli, Ries