Jump to content

GSoC/2017/Ideas: Difference between revisions

From KDE Community Wiki
Valoriez (talk | contribs)
copy/pasted 2016 ideas page, update links, etc. and removed last year's ideas
 
Halla (talk | contribs)
No edit summary
Line 53: Line 53:


'''Mentor:''' Try to see who in KDE is interested in what you want to work on and approach them. If you are unsure you can always ask in #kde-soc on Freenode IRC.
'''Mentor:''' Try to see who in KDE is interested in what you want to work on and approach them. If you are unsure you can always ask in #kde-soc on Freenode IRC.
=== Krita ===
[http://www.krita.org Krita]: digital painting for artists. It support creating images from scratch from begin to end. Krita is a complex application and developers need to have a fair amount of experience in order to be able to do something.
Krita is a widely used digital painting application for professional artists. Last year, Krita gained the ability to create hand-drawn 2D animations, among other new features. For this year, projects that the Krita team would be interested in include:
==== Project: Integrate with share.krita.org ====
'''Brief explanation''': Share.krita.org is a place where users can share krita scripts, images, brush packs and more. Krita used to use GHNS (Get Hot New Stuff) to integrate with the predecessor of share.krita.org, but that support has disappeared. This project has two parts: integrate with the new ghns KF5 library and create a gui for sharing. The second part is improving the support for creating and editing bundles. Bundles can contain brushes, patterns, gradients and so on. Krita has basic support for creating and editing bundles, but it doesn't work very well in practice. For this part the student must work together with our UX design team to create a better gui design, then implement it.
'''Expected results''': by the end of the summer, a user should be able to create a bundle from resources registered with Krita, upload it to share.krita.org and install bundles that have been uploaded to share.krita.org.
'''Knowledge Prerequisite''': C++, Qt
'''Mentor''': Boudewijn Rempt (IRC: boud), Scott Petrovic (IRC: scottyp)
==== Project: Extending Animation Support for curves ====
'''Brief Explanation''': Last year, we added curves that could be applied to some properties of a layer, like opactity. We want the animation support extended by allowing users to place masks (filter masks, transformation masks, transparency masks) on the timeline and animate their properties using curves. Every property of a layer or mask placed on the timeline should be animatable.
'''Expected results''':
* Implementation of a gui for applying the curve settings to one or more properties of a mask or layer
* Implementation of the actual rendering of the properties in the frames
* Saving of these settings
'''Knowledge Prerequisite''':
* C++ and Qt
'''Mentor''': Boudewijn Rempt (IRC: boud) or Dmitry Kazakov (IRC: dmitryk_log)
==== Project: Taking the Shape Brush to the next level ====
'''Brief Explanation''': Krita has a number of interesting brush engines. One of them is the Shape Brush engine. Inspired by Alchemy, the shape brush "throws" shapes on the canvas. The current implementation is limited to geometric shapes. We want the brush engine to be extended to make it possible to load vector shapes defined as PDF or SVG and use those to draw on the canvas as well. Other improvements are the addition of Feathering, an outline mode, edge sharpening and background textures.
'''Expected Results''': A revampted and exciting shapes brush
'''Knowledge Prerequisite''':
* C++, Qt, Krita
'''Mentor''': Boudewijn Rempt (IRC: boud) or Lukas Tvrdy (IRC: LukasT)
==== Project: Implementation of experimental OpenCL support for layer composition, filtering and painting ====
'''Brief Explanation''': Krita in the current state relies purely on CPU power for vast majority of operations. Many of them can be offloaded onto GPU. This will improve performance due to high throughput of parallel operations and potentially will enable power-efficient port of Krita for mobile devices.
'''Expected Results''': Architecture for OpenCL module which allows to interact with existing code seamlessly and preliminary support for GPU acceleration. Ideally, there should be a separate tool that paints directly on a OpenCL/OpenGL buffer stored in GPU memory. This buffer should be painted over the existing Krita canvas.
'''Knowledge Prerequisite''':
* C++, OpenCL
'''Mentor''': Boudewijn Rempt (IRC: boud) or Dmitry Kazakov (IRC: dmitryk|log)
==== Project: Implementation of experimental OpenGL-enabled brush ====
'''Brief Explanation''': Krita in the current state relies purely on CPU power for vast majority of operations. Many of them can be offloaded onto GPU. This will improve performance due to high throughput of parallel operations and potentially will enable power-efficient port of Krita for mobile devices.
'''Expected Results''': this is another experimental GPU-related project that allows the user to paint over the canvas purely on GPU. But this project relies on a different technology: openGL. There should be a special kind of layer that is stored in GPU memory and a special tool that is capable of painting over this layer. The tool should be able to use basic Krita brush presets (for the Pixel Brush engine) to paint over the canvas with the speed of lighting. To make this project easier, we put a limitation: this special layer should be on the top of the layers stack and therefore, just painted over the Krita openGL canvas.
'''Knowledge Prerequisite''':
* C++, OpenGL
'''Mentor''': Boudewijn Rempt (IRC: boud) or Dmitry Kazakov (IRC: dmitryk|log)
==== Project: Add 3D Painting Assistants ====
'''Brief explanation''': One of the more innovative features in Krita are the painting assistants. These are shapes overlaid on the canvas that the artist can use to help him achieve perspective, straight lines and other shapes freehand. For complex drawings it would be useful to be able to place 3D models on the canvas, position and scale them and use those as guides for drawing.
'''Expected results''': by the end of the summer, 3D models should be shown on canvas as canvas decorations, using OpenGL in hidden-line wireframe mode. The models should be manipulated using on-canvas controls like other assistants. Magnetic snapping is an optional extra.
'''Knowledge Prerequisite''': C++, Qt, OpenGL, Assimp
'''Mentor''': Boudewijn Rempt (IRC: boud)

Revision as of 07:16, 18 January 2017

GSoC 2016 logo

See also: GSoc Instructions, Last year ideas

Guidelines

Information for Students

These ideas were contributed by our developers and users. They are sometimes vague or incomplete. If you wish to submit a proposal based on these ideas, you may wish to contact the developers and find out more about the particular suggestion you're looking at.

Being accepted as a Google Summer of Code student is quite competitive. Accepted students typically have thoroughly researched the technologies of their proposed project and have been in frequent contact with potential mentors. Simply copying and pasting an idea here will not work. On the other hand, creating a completely new idea without first consulting potential mentors is unlikely to work out.

When writing your proposal or asking for help from the general KDE community don't assume people are familiar with the ideas here. KDE is really big!

If there is no specific contact given you can ask questions on the general KDE development list [email protected]. See the KDE mailing lists page for information on available mailing lists and how to subscribe.

Adding a Proposal

Note

Follow the template of other proposals!


Project:

Brief explanation:

Expected results:

Knowledge Prerequisite:

Mentor:

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

  • if the application is not widely known, a description of what it does and where its code lives
  • a brief explanation
  • the expected results
  • pre-requisites for working on your project
  • if applicable, links to more information or discussions
  • mailing list or IRC channel for your application/library/module
  • your name and email address for contact (if you're willing to be a mentor)

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

Ideas

Your Own Idea

Project: Something that you're totally excited about

Brief explanation: Do you have an awesome idea you want to work on with KDE but that is not among the ideas below? That's cool. We love that! But please do us a favor: Get in touch with a mentor early on and make sure your project is realistic and within the scope of KDE. That will spare you and us a lot of frustration.

Expected results: Something you and KDE loves

Knowledge Prerequisite: Probably C++ and Qt but depends on your project

Mentor: Try to see who in KDE is interested in what you want to work on and approach them. If you are unsure you can always ask in #kde-soc on Freenode IRC.

Krita

Krita: digital painting for artists. It support creating images from scratch from begin to end. Krita is a complex application and developers need to have a fair amount of experience in order to be able to do something.

Krita is a widely used digital painting application for professional artists. Last year, Krita gained the ability to create hand-drawn 2D animations, among other new features. For this year, projects that the Krita team would be interested in include:


Project: Integrate with share.krita.org

Brief explanation: Share.krita.org is a place where users can share krita scripts, images, brush packs and more. Krita used to use GHNS (Get Hot New Stuff) to integrate with the predecessor of share.krita.org, but that support has disappeared. This project has two parts: integrate with the new ghns KF5 library and create a gui for sharing. The second part is improving the support for creating and editing bundles. Bundles can contain brushes, patterns, gradients and so on. Krita has basic support for creating and editing bundles, but it doesn't work very well in practice. For this part the student must work together with our UX design team to create a better gui design, then implement it.

Expected results: by the end of the summer, a user should be able to create a bundle from resources registered with Krita, upload it to share.krita.org and install bundles that have been uploaded to share.krita.org.

Knowledge Prerequisite: C++, Qt

Mentor: Boudewijn Rempt (IRC: boud), Scott Petrovic (IRC: scottyp)


Project: Extending Animation Support for curves

Brief Explanation: Last year, we added curves that could be applied to some properties of a layer, like opactity. We want the animation support extended by allowing users to place masks (filter masks, transformation masks, transparency masks) on the timeline and animate their properties using curves. Every property of a layer or mask placed on the timeline should be animatable.

Expected results:

  • Implementation of a gui for applying the curve settings to one or more properties of a mask or layer
  • Implementation of the actual rendering of the properties in the frames
  • Saving of these settings

Knowledge Prerequisite:

  • C++ and Qt

Mentor: Boudewijn Rempt (IRC: boud) or Dmitry Kazakov (IRC: dmitryk_log)

Project: Taking the Shape Brush to the next level

Brief Explanation: Krita has a number of interesting brush engines. One of them is the Shape Brush engine. Inspired by Alchemy, the shape brush "throws" shapes on the canvas. The current implementation is limited to geometric shapes. We want the brush engine to be extended to make it possible to load vector shapes defined as PDF or SVG and use those to draw on the canvas as well. Other improvements are the addition of Feathering, an outline mode, edge sharpening and background textures.

Expected Results: A revampted and exciting shapes brush

Knowledge Prerequisite:

  • C++, Qt, Krita

Mentor: Boudewijn Rempt (IRC: boud) or Lukas Tvrdy (IRC: LukasT)

Project: Implementation of experimental OpenCL support for layer composition, filtering and painting

Brief Explanation: Krita in the current state relies purely on CPU power for vast majority of operations. Many of them can be offloaded onto GPU. This will improve performance due to high throughput of parallel operations and potentially will enable power-efficient port of Krita for mobile devices.

Expected Results: Architecture for OpenCL module which allows to interact with existing code seamlessly and preliminary support for GPU acceleration. Ideally, there should be a separate tool that paints directly on a OpenCL/OpenGL buffer stored in GPU memory. This buffer should be painted over the existing Krita canvas.

Knowledge Prerequisite:

  • C++, OpenCL

Mentor: Boudewijn Rempt (IRC: boud) or Dmitry Kazakov (IRC: dmitryk|log)

Project: Implementation of experimental OpenGL-enabled brush

Brief Explanation: Krita in the current state relies purely on CPU power for vast majority of operations. Many of them can be offloaded onto GPU. This will improve performance due to high throughput of parallel operations and potentially will enable power-efficient port of Krita for mobile devices.

Expected Results: this is another experimental GPU-related project that allows the user to paint over the canvas purely on GPU. But this project relies on a different technology: openGL. There should be a special kind of layer that is stored in GPU memory and a special tool that is capable of painting over this layer. The tool should be able to use basic Krita brush presets (for the Pixel Brush engine) to paint over the canvas with the speed of lighting. To make this project easier, we put a limitation: this special layer should be on the top of the layers stack and therefore, just painted over the Krita openGL canvas.

Knowledge Prerequisite:

  • C++, OpenGL

Mentor: Boudewijn Rempt (IRC: boud) or Dmitry Kazakov (IRC: dmitryk|log)

Project: Add 3D Painting Assistants

Brief explanation: One of the more innovative features in Krita are the painting assistants. These are shapes overlaid on the canvas that the artist can use to help him achieve perspective, straight lines and other shapes freehand. For complex drawings it would be useful to be able to place 3D models on the canvas, position and scale them and use those as guides for drawing.

Expected results: by the end of the summer, 3D models should be shown on canvas as canvas decorations, using OpenGL in hidden-line wireframe mode. The models should be manipulated using on-canvas controls like other assistants. Magnetic snapping is an optional extra.

Knowledge Prerequisite: C++, Qt, OpenGL, Assimp

Mentor: Boudewijn Rempt (IRC: boud)