pencil icon indicating copy to clipboard operation
pencil copied to clipboard

Official Roadmap [Issue Tracker]

Open Jose-Moreno opened this issue 7 years ago • 47 comments

Official Roadmap

Ok so I spoke with chchwy on the discord server that Spark01 setup for us. We agreed on moving the feature request list to a "tracker issue" to act as our official roadmap. And since this issue was already open I've just edited the main post, and will continue to do so until everything is take care of. If there is anything new to add please post it in the comments.

We have several categories that require our attention to bring Pencil2D to the next level:

LICENSING CHECK-UP

  • [ ] The Free Software Directory (FSD) asked to revise every license files for each library or script for Pencil2D to be added to their listing. https://github.com/pencil2d/pencil/issues/622

BITMAP ENGINE

  • [ ] Improve image treatment procedure of bitmap transforms (rotate, scale or translate) to avoid quality loss.
  • [ ] Implement MyPaint #268 The actual discussion has taken place in #486 since the implementation of the library would deeply affect the issue.
  • [ ] Replace the Bitmap Layers. #578 (This proposes the use of a full vector engine that "rasterizes" the strokes to simulate bitmap drawing)

VECTOR ENGINE

Vector engine upgrade proposal https://github.com/pencil2d/pencil/issues/616#issuecomment-298157378

  • [ ] Implement Path and Contour strokes (reference behaviour: Toonboom harmony / Adobe Animate pencil & brush tools)

  • [ ] Stabilizer feature for vector tools: #245

  • [ ] Improve Stroke Calculations to allow for more natural drawing.

  • [ ] Improved Vector Fill Tool: When closed shapes have complex strokes (curves, jagged lines, spiked lines etc) the bucket tool can't fill the empty space properly.

    • [ ] Improved Vector Fill Gap Closing: Currently using the tool really close it improves the calculation of the fill.
    • [ ] Add Fill Tool Options: Solid fill and Gradient (interpolated color) fill options
  • [ ] Add ability to modify vector points for Pencil / Pen / Brush tool: Add, Remove, Join, Split stroke. These should be usable on any kind of stroke, be it pencil, pen or brush. These functions would be placed in their own widget panel too.

  • [ ] Geometric Shapes Panel: We need primitive vector tools, square, circle, triangle and to fix the polyline tool.

  • [ ] Boolean Operations Panel: Addition, subtraction, intersection between strokes (see merge below) and geometric shapes.

  • [ ] Improve stroke path (control point) merging and implement stroke contour merge. This behavior should allow for better optimization of the vector elements on the canvas and to preserve memory.

    • [ ] Re-enable merge toggle box.
  • [ ] Multiple Control Point Selection: The marquee tool should have a control point selection mode for the vector engine.

  • [ ] Ability to change vector line width after stroke creation. It's suggested to have a width slider on either Selection or Move tool.

  • [ ] Variable Line Width Tool, to allow for variable line weight along the same path. (review toonboom harmony / adobe animate respective tools)

  • [ ] Implement Vector Motion Interpolation (Tweening)

  • [ ] Implement ability to view and manipulate control point tangents for splines: User should be able to adjust the spline tangents to create specific curvatures on the stroke.

  • [ ] Implement Stroke Sculpting: When clicking and dragging on a path the control points surrounding the moving portion of the stroke should move with a falloff area.

  • [ ] Improve automatic control point tangent behavior and implement a toggle: If you move a control point and the connected lines attached to become closer it will create a sharp angle. Sometimes you require to move the point but to maintain curvature as much as possible.

  • [ ] Implement bitmap to vector conversion based on applied strokes over canvas.

ANIMATION PREVIEW

  • [ ] Visualize Real-time Playback FPS while playing an animation http://www.pencil2d.org/forums/topic/fps-while-playing/
  • [x] Cache timeline drawings on ram, or on disk. http://www.pencil2d.org/forums/topic/save-as-much-as-possible-to-disk-keep-ram-free/
  • [ ] Implement disabled Preview Feature (View > Preview): https://github.com/pencil2d/pencil/issues/12
  • [x] Automatically disable onion skin on preview and playback toggle: https://github.com/pencil2d/pencil/issues/378

TIMELINE ENHANCEMENTS & FRAME EDITING

  • [X] Move animation controls to the middle of the timeline #38 fixed via #656

  • [x] Implement widget to change timeline frame size and frame amount directly on the timeline, instead of the preferences. Just making a slider to handle this will work.

  • [ ] Implement frame instances: #389

    • [ ] Implement Looping selected frames: https://github.com/pencil2d/pencil/issues/243
    • [ ] Implement Variable Frame Exposure using Frame Instances.
  • [x] Allow for frame insert or duplication between frames: For example, creating a keyframe between two previous keyframes would mean moving over the frames that come after the one that's being inserted.

  • [ ] Implement functionality to insert or delete frames on multiple layers to change timing.

  • [x] Implement automatic keyframe container creation when drawing over an empty frame.

  • [ ] Ability to Select and Move multiple keyframes between layers of the same type. (What happens if we move a raster drawing to a vector layer by accident? Should we allow seamless conversion? Can it be done?)

  • [x] Implement a “reverse keyframes” function which would reverse frame order

  • [x] Implement multiple selected frames duplicate and copy / paste operations

  • [ ] Implement MultiLayer Onion Skin feature (View > Onion Skin > MultiLayer Onion Skin)

  • [ ] Implement “multilayer onion skin”. This would allow to have onion skin affect multiple layers.

    • [ ] Implement selective toggle for individual layers to opt in or out of multilayer onion skin.
  • [ ] Frame Coloring System

    • [ ] Modify frame state color coding (This should be worked with the timeline rewrite + mockup) *Empty frame = Black Outline + White Color *Selected frame = Black Outline + Dark Grey *Frame with content = Black Outline + Layer Color
    • [ ] Ability to multiple individual frames with custom colours
  • [ ] Frame Label System: Timeline Marker + Layer Marker

    • Use Case 1: (REF: After Effects) Text Markers are normally visible on the timeline (above frame numbers) or on Layers. Can contain comments or annotations for other animators or production teammates that work in the same file (i.e colorists, clean-up artists, checkers, etc). Or reminders for independent artists to finish a task later.

    • Use Case 2: (REF TVPaint) Can be used for filtering display of frames types (key, bdwn, inbtwn) to visualize the animation during playback on different stages. Frame types would be constants K, B, I, so each time you wrote these letters on a marker, Pencil2D can acknoledge any layer frame marked with it belongs to the marked type (this is responsability of the user to properly mark the frame types)

      Filters:

      • Keyframe (key only)
      • Breakdown (key + bd OR bd only)
      • Inbetween (key + bd + inbetween OR inbtwn only [skip frame: 2's, 3's, 4's X's]
      • Custom user state: i.e “favor” / cushion frame)

LAYER MANAGEMENT

  • [ ] Implement a layer merge feature: #1206

  • [ ] Improve layer organization awareness

    • [ ] Fix layer hierarchy / organization in the timeline.
      • [ ] Technical Review + Implementation of ‘relative’ / dynamic layer 'id' indices.
      • [x] Reverse layer navigation when using up & down arrow keys
    • [ ] Make the "layer replacement" functionality optional.
    • [x] Implement visual aid to allow for easier stacking.
  • [ ] Implement Layer Groups to nest layers for organization purposes

  • [ ] Timeline Layer Filter (REF Krita https://github.com/pencil2d/pencil/issues/359) Note: Might work in sync with

  • [ ] Implement Custom layer colors: Allow to pick custom color or a predefined set of colors determined by the colour palette.

    • [ ] Implement tags to categorize layers
      • [ ] Implement color tags (color ID) to allow layer visibility filtering through color.
    • [ ] Implement layer & group layer visibility filters.
  • [ ] Implement a Z-Order Index + Override functionality for layers that can be animated. This would help to use different layers to be in front or behind any other layer with lower Z-depth. This is not true 3D Z-ordering but rather something similar to vector programs where you can re-arrange the objects overlap. This would be also important for using the camera with a z-depth toggle enabled in order to fake the parallax effect (the effect where elements that are farther move slower in comparison to those which are closer to the camera and move faster)

INTERFACE ENHANCEMENTS

  • [x] Implement panel locks http://www.pencil2d.org/forums/topic/is-there-a-way-to-lock-the-windows/

  • [X] On New File creation canvas state (rotation and zoom) should be reset (currently pan is reset). Fixed via pull #686

  • [X] Implement update / reset of open recent list: https://github.com/pencil2d/pencil/issues/165 implemented via #686

  • [x] Implement Alpha Channel Slider: https://github.com/pencil2d/pencil/issues/237

  • [ ] Slider Display Change Proposal: https://github.com/pencil2d/pencil/issues/15

  • [ ] Re-Implement Pop-Up palette for quick access to tool presets and colours: https://github.com/pencil2d/pencil/issues/157

  • [x] Technical review or Refactoring Proposal: extract adjusting tool and feather adjusting tool to their own tools: https://github.com/pencil2d/pencil/issues/124

WORKFLOW ENHANCEMENTS

  • [x] Implement Shortcut Re-binding: http://www.pencil2d.org/forums/topic/the-ability-to-rebind-anything-and-disable-some-feutures/

  • [ ] Technical Review of QT / Pencil2D Hardcoded Keyboard shortcuts. Original Thread - https://github.com/pencil2d/pencil/issues/61

  • [x] Implement GUI for Pencil2D configuration settings: https://github.com/pencil2d/pencil/issues/177

    • [ ] Replace registry configuration with .ini or similar file.
  • [ ] Implement ROOM or WORKSPACE Paradigm https://github.com/pencil2d/pencil/issues/28

  • [ ] Implement Shortcut to change between last used tools: https://github.com/pencil2d/pencil/issues/158

  • [ ] Implement Shortcut to change between last used colors

  • [ ] Implement shortcut to create straight lines with any drawing tool. Ref Thread: https://github.com/pencil2d/pencil/issues/44

  • [x] Fix Flip selection content tool

    • [ ] Implement shortcut for selection Mirror / Flipping
  • [ ] Implement SHIFT & TRACE feature: This will allow you to offset onion skinned frames to trace over previous portions of your drawing in order to speed up construction and allow for traceback techniques.

  • [x] Implement a flipping & rolling function. Flipping & Rolling are two techniques that allow the animator to quickly preview playback based on the actual drawing / frame container. This proposal was separated and issued here #978

    REF: TVPaint's "Flip" function panel: https://www.tvpaint.com/doc/tvp11/index.php?id=lesson-tradigital-animation-advanced-flip-presentation

  • [ ] Implement a Library Panel for vector objects, bitmap reference images & sound resources http://www.pencil2d.org/forums/topic/some-ideas-more-modify-the-cursor/

UNDO + REDO PARADIGM

  • [ ] Implement UNDO / REDO operations to affect keyframe + layer operations Note: When undoing frames we should also undo frame container creation. REF Thread: Redo for deleted frames: https://github.com/pencil2d/pencil/issues/36 REF Thread: Redo + layer rotation: https://github.com/pencil2d/pencil/issues/187

  • [ ] Implement UNDO / REDO Configurable steps.

    • [ ] Implement an UNDO stack / history: #562 Note: should we think of a nodal solution, is it even possible?

COLORING WORKFLOW ENHANCEMENTS tool presets for colored linework: https://github.com/pencil2d/pencil/issues/25

  • [x] (Bitmap) Implement a color replacement function

    • [ ] Implement colored linework to be changed into desired color (like TVPaint): https://github.com/pencil2d/pencil/issues/32
  • [ ] Refine Tool Functionalities for separate drawing and coloring tasks. Note: Pencil2D already has a primitive system of lineart /paint color separation.

    • Pencil tool > Rough /Sketch
    • Pen tool > Lineart
    • Brush tool > Hand-drawn coloring.
    • Fill Tool > Area Coloring
  • [ ] Improve Color Palette Selection for Bitmap Layers

DRAWING TOOLS ENHANCEMENTS

  • [ ] Implement or Adapt current tools to create pixel-perfect artwork (no antialias)

  • [ ] Implement Pixel snapping to grid

  • [x] Improve custom Grid to allow for grid cells with asymmetric proportions.

  • [ ] Improve Brush Tool Feathering visualization. Note: Brush area circle that represents the brush should have another inner circle that shrinks towards the center when the Feathering value is higher. The area difference between the outer and inner circle represents the feathering of the brushstroke.

  • [ ] Implement Brush Presets

  • [ ] Implement Textured Tip Brushes: REF Thread: Hashing Brush https://github.com/pencil2d/pencil/issues/344 (might be possible with mypaint)

  • [ ] Implement a Global Pressure Sensitivity editor to alter WinTab (and others) input signals.

SELECTION TOOLS

  • [ ] Implement a Lasso / Freehand + Polygonal Selection tool: https://github.com/pencil2d/pencil/issues/118 , https://github.com/pencil2d/pencil/issues/18

  • [X] Implement Selection Marquee tool to follow canvas rotation: https://github.com/pencil2d/pencil/issues/379

  • [ ] Implement a Toggle to ignore canvas rotation: When utilizing Lasso selection it can be used to cut a shape manually without following the canvas rotation.

TRANSFORM TOOL ENHANCEMENT (SELECTION + MOVE TOOL)

  • [ ] Implement Free Transform Tool functionality: https://github.com/pencil2d/pencil/issues/9
    • [X] Implement proportional resizing
    • [x] Implement discrete rotation (15°) with shortcut modifier.
    • [ ] Implement visualizzation of origin point for transform tool
    • [ ] Implement origin / anchor point modification
      • [ ] Implement transformations to be effected based on origin position

CAMERA HANDLING

  • [x] Implement camera motion “tweening”
    • [ ] Implement individual property keyframing: https://github.com/pencil2d/pencil/issues/269
  • [x] Implement camera rotation
  • [x] Implement camera panning / move camera frame border
  • [x] Implement camera zoom
  • [ ] Implement camera z-depth system toggle that allows the camera to affect layers or objects with z-depth / z-order to fake parallax as seen in multiplane setups (for this to happen layers would have to be treated as if they were individual overlayed cels with z-depth and according to the z-index the relative speeds to the "closest" layer for either pans, zooms or tilts would be increased or decreased) http://www.pencil2d.org/forums/topic/camera-panning-zoom-or-z-depth-and-rotation/

DIALOGUE & LIP-SYNC

  • [ ] Implement Dialogue & sound analysis Interface through papagayo (implementation / plugin) (could work with laayer markers by putting the final phoneme breakdown on the layer via markers)

AUDIO ENHANCEMENTS

  • [ ] Technical Review Jack Audio Support: https://github.com/pencil2d/pencil/issues/339
  • [X] Implement playing sounds from anywhere in the track > implemented via #600
    • [ ] Enhance soundtrack playback from any frame
  • [x] Implement Sound scrubbing
  • [ ] Implement waveform visualization on sound layers.
  • [ ] Implement frame exposure to affect sound layers (this should become possible with the implementation of the timeline re-write) http://www.pencil2d.org/forums/topic/questions-about-length-of-animation/

PLUGIN SUPPORT

  • [ ] PLUGIN WRAPPER / MANAGER Note: A modular apparoach to plugins could help bridge integration with software like Natron, Synfig, Open Toonz, Blender, Godot, and other major open source software geared for film and games.
    • [ ] Technical Review. Possible programming patterns, algorithms or methodologies.
    • [ ] Technical Review. Case Studies: Blender Add-Ons (python api), Natron Node Plug-Ins (python or c++ api), Pending suggestions.

EX-CHANGE FORMATS & IMPORT-EXPORT

  • [ ] Technical Review for an open source file to import and export Pencil2D data into other apps.
    • [ ] Review .ORA (openraster format)
    • [ ] Review .SVG
    • [ ] ... Pending File Format Suggestions ...
  • [ ] Technical Review for file formats to import into and export data between Pencil2D and commercial applications
    • [ ] Review .PSD
    • [ ] ... Pending File Format Suggestions ...
  • [X] Implement Image sequence spacing to import every X frames
  • [ ] Implement Standard bitmap (i.e. TGA) and vector (i.e. SVG) files import. REF Thread: https://github.com/pencil2d/pencil/issues/287
  • [ ] Implement Standard bitmap (i.e. TGA) and vector (i.e. SVG) files export
  • [x] Implement Transparency Toggle for Still Images on supported file formats: https://github.com/pencil2d/pencil/issues/163
  • [x] Implement Video Import: #1070
  • [ ] Implement Direct2Web export / upload function for youtube, vimeo, wistia (requries technical review of API’s): https://github.com/pencil2d/pencil/issues/288

ANIMATION PRODUCTION SPECIFIC REQUESTS

  • [ ] Implement an X-sheet Panel for professional / classical animators. http://www.pencil2d.org/forums/topic/classic-x-sheet-integration/ #1119

    • [ ] Implement X-Sheet data import / export from .ODS, .XLS, .CSV tables
  • [ ] Implement Layer-space transforms (Position, Rotation, Scale)

    • [ ] Layer transforms keyframe interpolation. e.g If you animate a cycle in place. Transforming the layer will allow you to “move” the character from point A to B. This is how it works in Toonboom.
    • [ ] Implement transform channels (location [x,y, (z)], rotation [r°], scale [width, height])
    • [ ] Implement Layer transform pivot point.
    • [ ] motion path visual aid
  • [ ] Allow modification of visual path to adjust trajectory of layer objects in real-time

Jose-Moreno avatar Oct 11 '16 03:10 Jose-Moreno

Very nice write up! Here are a few of my personal thoughts on the matter.

  1. We do have Github milestones, which is essentially a short-term road map for the next couple of versions, although there probably are better ways to do this. Roadmaps are important for guiding a project, so this is something worth exploring.

  2. Again a good idea. I may be able to help with the installation instructions for Mac/Linux because that's what I work on. I would wait a while before starting the Mac instructions though since there are some issues with Homebrew and Qt at the moment. Also here are a few things I think should be added to your list:

  • Coding style guidelines
  • Issue priorities. Maybe add a priority level label to github issues so developers have an idea of what's most important to work on.
  • (optional) A IM chat room like IRC or Gitter. I personally wouldn't find this too useful, and the devs here are obviously very busy, but it may make it easier for some people to get involved.
  • Translation guidelines
  • Pencil example files. I mean I have some very basic animations for testing, but that probably misses a lot of cases that are found in more real-world/complicated projects.

If you are looking to have the project documented down to the class or method level, I would recommend generated documentation like Doxygen.

  1. Thanks, committed (9336dbc73cb859781f1385d743437ee8f764a82c)!

scribblemaniac avatar Oct 11 '16 05:10 scribblemaniac

What about doing a monthly meeting on IRC? We may even talk through Jitsi Meet or Appear.in ? I have plans for Pencil2D roadmap and even financing that I would like to share with you.

feeef avatar Oct 11 '16 10:10 feeef

@scribblemaniac Thanks a lot for your suggestions! They are great. And thank you for the fastest commit merge in Pencil2D's history :stuck_out_tongue_closed_eyes:

Indeed we have milestones, but I was thinking of a long-term wide scope kind of roadmap, something to give us a direction for the future. And regarding the dev guide I'll add your suggestions to the main comment. I'll have some free time at the end of the month, so hopefully I can setup a proper page for the dev guide in the github static site so we can begin filling in along those lines.

@feeef That's something I've always thought about, trying to bring together the few devs there are. However since I've never been too sure about everyone's spare time I never suggested it. I was thinking of using a public Google hangouts address through the pencil2D google account, so we would avoid trolls to bother us. IRC sounds great, but I don't know how to setup one, maybe @gordielachance can help us out? And ideally I'd like a place to have screen sharing or image sharing functions because most of the things we'll talk first need to be shown or have graphical content.

We all are animators, so If you have plans for Pencil2D future let's share, I'll make a roadmap static page as well within the github site so you guys can fork and edit.

I firmly believe we shouldn't strive to become the next TVPaint. That software is great, but it has many features that aren't necessary for animation. Just convenient. I think one of the strengths of Pencil2D is it's ease of use and simple design. Like I still have issues to start drawing with programs like OpenToonz, Synfig, Blender, etc where I have to configure the shit out of them just to draw a stroke, and even when drawing, it just doesn't feel "natural".

However Both Pencil2D and Mypaint share the same trait of Simplicity. Just boot up the software, pick a tool and start drawing / animating, no questions asked. This is imperative, I know I can get even some pro animators to use the software if we do this right. but first of all we need to stabilize the program.

The crashing problems and the image memory issues (someone fixed image import memory issues here #536 ) but mainly we need to take out the restriction of having to use a certain amount of frames before it crashed as I've noted here #520

Regarding the financing, recently I've come across a page called https://www.bountysource.com/ It seems you can place a "bounty" attached to specific bugs and whatnot, to motivate random developers to undertake the task. Any person can claim the bounty as long as the bug is proven to be fixed.

Since we're not a "foundation" dedicated to the preservation of Pencil2D, unlike Blender or Krita, I think the money can be used like this through a neutral third party in such a way that we can focus efforts on fixing several bugs, and directing donations while throwing money to specific tasks we need fixed. I still have to investigate more about it, but I saw Synfig devs were using it so it must be legit.

We also could setup a patron / gumroad for Pencil2D, and make "development packages" so, if someone pays, we can assign someone who has free time to fix a particular function. Of course the money involved would depend on the function being added, or the bug being fixed.

Ideally we need sort of a pool of money to draw from. That's why I thought the bountysource was a great Idea, unlike patron which requires commitment and gumroad is sort of a mixed bag since we'd have to grow extra work in providing proof and reassurance to those who "bought" the "development packages".

Jose-Moreno avatar Oct 11 '16 16:10 Jose-Moreno

@Jose-Moreno When it comes to setting up IRC, freenode might be a good option. It’s immensely popular with open source projects, after all. See https://freenode.net/.

J5lx avatar Oct 11 '16 16:10 J5lx

@Jose-Moreno When it comes to setting up IRC, freenode might be a good option. It’s immensely popular with open source projects, after all. See https://freenode.net/.

The OFTC has a pretty good IRC as well for OS projects.

scribblemaniac avatar Oct 11 '16 17:10 scribblemaniac

Hi guys, there already is an IRC channel on freenode (##pencil2D), but the link wasn't displayed on the homepage anymore.
I restored the links widget and it is now accessible. I think that it is chchwy who created it at the time.

About the documentation, it is possible to create/edit pages the website's pages from the Wordpress Dashboard. I could eventually give editor's capabilities for who needs it.

If this isn't enough, maybe I could try to setup a documentation generator. I saw some Github pages running Sphinx (example : SimplePlugin); this is quite nice; but I don't know if it is available by default on Github. Elsewhere there is also daux.io which seems quite nice, but I don't know if i'm able to run it on our host.

gordielachance avatar Oct 12 '16 13:10 gordielachance

@gordielachance Hey! nice so we do have IRC, cool. Regarding the documentation I personally believe we should keep everything related to development here on Github and that includes documentation, because it is a role that developers (and advanced users) must fill out in order to secure up to date information regarding Pencil2D functionalities. Let's leave the docs to be hosted here as well. No need to risk angering the host gods with unnecessary bandwidth use :stuck_out_tongue_closed_eyes:

This way it would be more open for everyone to contribute and we wouldn't need to bother you with an email to open them an editorial position in the page every time another person wanted to contribute.

On a side note which still pertains to Pencil, I think it's time we begin to discuss how to change the website layout. I really think the website should be a one pit-stop for Pencil2D USERS, but developers should have their hub elsewhere (Github) since it gets really hard to keep the discussion alive and professional without getting burrowed by a million of questions about how to use Pencil2D on android (...)

Considering a large percentage of our audience is comprised of kids below the age of 15 (in case anyone didn't know), we need to make double sure that we have a simple setup so they (and us) won't get confused. Even older users (for example) never take a look at the nested links, it's not obvious from the design that there are links inside the landing page header buttons, that's why I had to change it form the about page to the "look-at-me-you-download-pencil-here" kind of page.

Sphinx is what Godot and Blender use for their docs, but if it's too much of a hassle let's do something more simple. Right now we need to start, the fancy things can come later when there's more time.

Also, I said this before but I want to know where exactly can we donate for the page and hosting to be maintained, please post a link here, so maybe we can advertise that in due time and that way you'll also feel a bit of love for the work you do (which is great! thanks!).

Jose-Moreno avatar Oct 12 '16 15:10 Jose-Moreno

@Jose-Moreno I agree with you. I too think that Pencil2D has to be focused on simplicity, ease of use as MyPaint is for painting. OpenToonz is already a FOSS alternative to TVPaint so I guess that Pencil2D should differ in the way that while having less professional features, it makes you create straight away.

I am currently working at Purism as director of creative and will hopefully get a Librem 11 at some point. It is a tablet PC with 2048 pressure levels stylus support, so I would like to optimize pencil to work on that kind of device. With this setup, you would draw and animate anywhere just like with a simple flipbook.

In that regard I think that completing the MyPaint integration is essential. After that, I would focus on UI improvements like a more modern interface with choice between bright and dark theme, with touch support and finally, an easy way to share your creations (social networks, email...).

In my opinion, Pencil2D 1.0 should look like this.

Next to that, I am founding a non profit organization (http://ethiccinema.org) that is a sort of prod for libre motion art. Ethic Cinema is also a concept to help promoting an alternative economy in cinematography. This economy wishes to be ethical so that everyone can benefit from it. In that regard, every film creation based on this concept will have to help the development of a libre technology. As I am already helping Pencil2D and as I love this software, I wish to financially help the development of Pencil2D through EthicCinema. Ethic cinema would become a partner of Pencil2D and the 2 projects would promote each other. In this economy it is how it works. Anyone can freely benefit from each other's work and in return give them credits to help them build their audience (which is the essence of their financial income)

For this to happen, we must first all agree with the roadmap to version 1 (we need @chchwy approval), we write it down, and Ethic Cinema would organize a crowd-funding campaign with this development as a target plus a short animated film or clip to go with it.

Ethic Cinema is non profit so with this money, we would pay every developer and artists individually for their work.

This is of course open to discussion so I am waiting for your comments! :)

Cheers!

feeef avatar Oct 13 '16 09:10 feeef

@gordielachance Hey! nice so we do have IRC, cool. Regarding the documentation I personally believe we should keep everything related to development here on Github

I agree. Let's host development stuff on Github and let's host the "community" stuff on Pencil2D.

I think it's time we begin to discuss how to change the website layout

I created a dedicated topic here : https://github.com/pencil2d/pencil/issues/542

@feeef : i'll read your post with more attention after work, seems there is a lot of ideas in there !

gordielachance avatar Oct 13 '16 09:10 gordielachance

@feeef Francois, that is exactly what we need! It's great that you're thinking so far ahead, and things like this were the reason why I wanted us to discuss the roadmap for a long-term development in the first place. I completely agree on the cross-promotion and partnering concept. The economical arrangements we need to discuss properly in order to further Pencil2D development.

However going for a crowdfunding campaign can be a daunting task right now.

After handling the social networks for almost 1 year ever since my idea of reactivating the community part where people would become interested in Pencil2D yet again, I've noticed a trend of mistrust towards the program own development, particularly since there's been so little real progress in the eyes of regular (non-technical) users. I even recall one dude a few years ago saying he wouldn't be willing to donate because he thought Pencil2D was a rip-off due to poor development...

I've tried to let people know that we are few but passionate about this, however without real "proof" of progress, we won't make it. If we want to really make this right we need to somehow get a REAL stable version, with the basic features working as intended.

For a real stable release to be true we need to fix the following in order of priority:

  1. Fix the memory leak issue(s). I've already reported the main issue here #520 and it's something that needs to be addressed as soon as possible
  2. Fully integrate MyPaint. My hope is that this will take care of the current bitmap engine problems and the several fixes it requires. (The fill tool for bitmap should be improved by this I hope?)
  3. Fix the vector engine and it's tools (I was thinking we could take a look at the vector drawing tools for Inkscape[GNU GPL] and OpenToonz[BSD] for this)
  4. Polyline (add proper bezier functionalities as a switch or similar to flash going from straight vectors to bezier curves)
  5. Finger Tool: Allow for vector selection of multiple points, display and allow vector control points transformation.
  6. Fill Tool (filling algorithm)
  7. Fix cross-platform stability. scribblemaniac said that there seems to be an issue with Qt tools for MAC platforms and also @chchwy is already tackling this for the MAC OS, and I assume it would help too for UNIX systems.
  8. Refactor timeline frame range display. @scribblemaniac fixed a few important issues with the timeline, however I have a report regarding other issues that I think are connected to what he has addressed initially.
  9. Polish the sound feature. I've already found some minor bugs with the sound feature. They are not crash-inducing, but need to be addressed.
  10. Polish miscellaneous bugs: For example I found yesterday a funny problem when opening a blank file. It's not app-breaking but it's something that can get really confusing. I have to report it over the weekend.
  11. I haven't tested the movie export function, but if there are bugs with need to also prioritize this and polish them.
  12. Improve selection tools. We need handles for the transform and rotation operations. And if possible a lasso / freehand selection tool.

Most of this should be targeting version 0.7 or 0.8, but at least the first issue needs to be addressed by version 0.7 :smile:

p.s: I don't see any image if you posted one, but although I understand the "dark theme" need I really like the "lighter" theme that Pencil2D has hahaha.

Jose-Moreno avatar Oct 13 '16 17:10 Jose-Moreno

I agree with all that @Jose-Moreno. Of course we have a lot of work before this to happen but I guess that if we all keep focused in the same goal, there is no reason why we couldn't make it happen.

About the dark theme, I imagine the user being able to switch between clear and dark. MyPaint 1.2 has a very good looking dark theme : https://i.ytimg.com/vi/5m_rCA7luFI/maxresdefault.jpg

I have had so much work and so much projects in mind lately that I didn't really take the time to work on Pencil2D. I am very happy I manage to set up the MyPaint preview version but now I need to find some time to complete it.

feeef avatar Oct 14 '16 09:10 feeef

@feeef Actually that dark theme in the picture you linked looks pretty much like the dark variant of Adwaita (the default theme of GTK) to me. On my system, I have set a dark theme (Adapta-Nokto) globally and MyPaint and Pencil look pretty much the same (except Pencil has more components that don't adapt properly).

MyPaint: MyPaint with dark theme

Pencil: Pencil with dark theme

J5lx avatar Oct 14 '16 15:10 J5lx

Addendum: In case of Pencil you'd probably need to dig up some dark style for Qt that works on all platforms. Krita does it that way AFAIK, they include several Qt styles and let the user choose one; so it might be worth to have a look at their codebase.

J5lx avatar Oct 14 '16 15:10 J5lx

Theming is pretty simple actually. As @J5lx demonstrated, Qt will automatically detect the system theme and style elements accordingly. Based on those screenshots, the timeline is the only one that is not being styled correctly, which will be fixed when we rewrite it to use native Qt elements (#533). The theme can be changed in the code fairly easily as well.

I have started work on the build instructions for Mac, and I think I can finish it sometime this week. Ideally before then we would decide on a location for development documentation. Here's the different places I can think of off the top of my head:

  • https://pencil2d.github.io (HTML)
  • https://pencil2d.org (Wordpress)
  • Files in this repository, maybe a /docs folder
  • The Wiki for this repository (Markdown)
  • A Github Pages branch of this repository (HTML)
  • Included with generated documentation: sphinx, daux.io, etc.
  • Create an entirely new place

I like the idea of crowd-funding if there is a plan in place on what to use the money for, but I think morr hit the nail on the head. It would probably be much more successful if we released a substantial update that shows the average user that work is actually being done on this project and that there are developers that are capable of using that money to get us to 1.0.

scribblemaniac avatar Oct 15 '16 02:10 scribblemaniac

@scribblemaniac Actually the menu isn't styled correctly either and I can see some smaller inconsistencies as well:

  • The icons of the move tool, the playback controls and the "Duplicate Frame" button are obviously made for white/light backgrounds
  • The "Display" pane apparently uses some kind of custom-made buttons, and as a consequence they aren't styled as well
  • The "restore" and "close" button icons on the panes don't contrast well with the dark background. Most other programs (including MyPaint) tackle this by showing dark icons on light backgrounds and light icons on dark backgrounds, though I don't know how exactly it is implemented

J5lx avatar Oct 15 '16 10:10 J5lx

@scribblemaniac As you may have read in some of the previous comments I strongly believe we should leave the development side of things in github and it's pages leaving the website for everything else user related (also because of the hacking attempts we've suffered)

My main idea was to use pencil2d.github.io which it is a github page related to the main project that we created due to the problem with the main site shutdown due to spammers. https://github.com/pencil2d/pencil2d.github.io

I feel it's easier to write the docs in your favorite text editor with markdown then upload the changes. I was working directly, but I think it's better to fork it since there's more people involved now. However we need to separate the USER documentation, from the DEVELOPER documentation and class reference.

Maybe the user manual can be hosted in the static website mirrored in the official website (pencil2d.org) and the developer guide can be in the static page only? We might need to decide, but we also need to begin writing, for now let's work with what we've got and make it as simple as possible so it doesn't become a chore for anyone who wants to contribute.

So I propose, forking pencil2d.github.io to contribute and see if we can begin working on this. I don't know anything about sphinx, daux.io etc other than they exist and how they look so i'll have to read how to implement it on the docs page, however if anyone knows how to do it, please give us a hand lol.

What do you think about this? @feeef @chchwy @gordielachance @J5lx

Jose-Moreno avatar Oct 16 '16 00:10 Jose-Moreno

@J5lx Thanks for pointing that out. In my 'programmer' mind that is all expected behavior :smile: We will need someone to design a set of dark theme icons to fix the first one. The other two points are coding issues. Maybe you should file a separate issue for theming support so we can track it better (and not clutter up this one)

@Jose-Moreno I like the idea of using pencil2d.github.io for developer documentation and definitely agree it should be in a separate area from the user documentation.

I don't know anything about sphinx, daux.io etc other than they exist and how they look so i'll have to read how to implement it on the docs page, however if anyone knows how to do it, please give us a hand lol.

I have worked with Sphinx before, and you should be able to generate html documentation and just move it straight into the doc folder. If you want the online documentation updated after every commit, it would probably be easiest to use Read the Docs which open source and has webhooks to automatically rebuild the documentation, the main drawback being that you wouldn't be able to connect that to pencil2d.github.io. If you can modify the DNS records for pencil2d.org, you could have it at something like docs.pencil2d.org thought.

scribblemaniac avatar Oct 16 '16 04:10 scribblemaniac

@scribblemaniac Hey so I managed to install sphinx on my pencil2d fork. https://github.com/Jose-Moreno/pencil

Edit: I created a "docs" branch after noticing several mistakes I made.

Edit#2: I also created a gh-pages branch so host a "work" clone of the github page. There's a "docs" folder with the sphinx installation. I've seen articles saying this can work such as this one http://executableopinions.readthedocs.io/en/latest/labs/gh-pages/gh-pages.html But I hope someone can help me further.

But now I'm reading that Sphinx is mostly suited for Python docs, not C++. They seem to have this thing called "domains" so I'm allowed to change it from python to c++, but i think this is as far as I can get without help lol. Also I think the conf.py file might be missing some values

For now I have just Sphinx installed. I do recall now that I did use Sphinx to try and contribute to Blender docs, but they had a lot of stuff automated so you basically commited the .rst files and lead a happy life.

I have to also read this article about Sphinx and CMake which seems like a possible solution?. In the end meanwhile we find a suitable way of handling this we might have to manually enter all the info, which is less than ideal, I know.

https://eb2.co/blog/2012/03/sphinx-and-cmake-beautiful-documentation-for-c-projects/

I'm afraid though that this week also I begin a new job and I'm going to be super busy, so I don't know how much time I can dedicate to investigating the documentation process, but I'll try to be around to help for sure!

p.s. I didn't properly investigate "Read The Docs". I'll give it a look soon.

Jose-Moreno avatar Oct 17 '16 01:10 Jose-Moreno

@Jose-Moreno Great stuff, I'll go over it as soon as I get a chance! 😁

scribblemaniac avatar Oct 17 '16 03:10 scribblemaniac

@Jose-Moreno Haha, it's 1 AM right now, and after browsing around your docs folder and the sphinx documentation in a slightly confused manner for about half an hour, it finally dawns on me why this doesn't look right, I was totally thinking of the wrong documentation program 😐 I was saying sphinx, but I was thinking about the features of doxygen! (I really need more sleep) Sorry for this confusion, you are right that Sphinx is not really meant for C++.

I went ahead and set up doxygen documentation, and went through all of the configuration options. You can find the work on the add-doxygen branch of my fork. You can find the generated result at: https://scribblemaniac.github.io/pencil/docs/

There's not much to it right now, but the docs are generated from inline documentation, so as we add comments to the code, the HTML docs will update to incorporate these changes. Generation is fairly simple. Install doxygen, cd your root git directory in terminal, run doxygen Doxygen. That will generate the files in docs/html, and you can just copy that over to pencil2d.github.io/docs.

scribblemaniac avatar Oct 20 '16 08:10 scribblemaniac

@scribblemaniac Lol. I kept reading about Breather+doxygen+readthedocs combos, but since we had agreed on sphinx I went there. Oh well. I just need to delete the sphinx branch I setup (with a lot of suffering lmao) I'll take a look at your setup this weekend and clone it if I can. What I like about what you said is the comment system. To be honest I once looked at the code and is in heavy need of comments, so this seems like a perfect excuse to begin documenting each class, function and whatnot. Thank you for looking into this!

Jose-Moreno avatar Oct 20 '16 15:10 Jose-Moreno

The documentation for compiling on mac is done: https://github.com/scribblemaniac/pencil/wiki/Building-Pencil2D-on-macOS

scribblemaniac avatar Oct 28 '16 07:10 scribblemaniac

This issue is getting a bit cluttered now to say the least, so here is a summary of everything as far as I can tell.

What's been proposed here and finished

  • Issue templates. Written by @Jose-Moreno.
  • Establish IRC channel. We already have one (##pencil2d on IRC) and the link has been added back to the website.
  • Instructions for building Pencil2D on a Mac (here).
  • Doxygen documentation generator setup (here)

Things mostly agreed upon (?)

  • Code documentation should be hosted on pencil2d.github.io
  • The website layout needs improvement (moved to #542)
  • Tweaks need to be made to support native theming (moved to #550)
  • We should use a documentation generator. I'm going to say that we agree on doxygen for the moment since that is the only fully operational option we have.

Things still up for discussion

  • Should we get an official IRC channel? #pencil2d is registered already which makes it way more difficult for us to get it unfortunately.
  • IRC meetings. This depends on the availability of developers and whether there is value to them or not.
  • Raising money. Suggested options include: Bountysource, Patreon, Gumroad, and Ethic Cinema.
  • Confirm priorities for the next release. One set of changes is proposed in this comment
  • A developer guide. I think we can agree that we want this, and pencil2d.github.io seems to be the place we'll host it, but we need to actually collect existing documentation there and figure out what still needs to be written (and obviously write anything that's missing).
  • Roadmap. Last but definitely not least, we need to work out a roadmap to establish exactly what we want Pencil2d to be and how to get there. We also need to find a place to put this.

scribblemaniac avatar Oct 28 '16 08:10 scribblemaniac

Personally I think we should try and have an IRC meeting to discuss some of these issues (the roadmap in particular). That's not normally my cup of tea, but we can discuss this a lot faster 'in person'. Plus we need to hear more from @chchwy 😉

scribblemaniac avatar Oct 28 '16 08:10 scribblemaniac

@scribblemaniac

Should we get an official IRC channel? #pencil2d is registered already which makes it way more difficult for us to get it unfortunately.

I think freenode's staff is happy to help in freeing unused registration to give official project access to such channels.

this is the public info I get from querying for #pencil2d@freenode:

> /cs info #pencil2d
[01:26:59 PM] -ChanServ- Information on #pencil2d:
[01:26:59 PM] -ChanServ- Founder    : Spark[Nick]
[01:26:59 PM] -ChanServ- Registered : Oct 06 18:17:58 2015 (1y 3w 1d ago)
[01:26:59 PM] -ChanServ- Last used  : Mar 25 17:21:52 2016 (30w 6d 20h ago)
[01:26:59 PM] -ChanServ- Mode lock  : +ntc-slk
[01:26:59 PM] -ChanServ- *** End of Info ***
> /cs access #pencil2d list
[01:27:13 PM] -ChanServ- Entry Nickname/Host          Flags
[01:27:13 PM] -ChanServ- ----- ---------------------- -----
[01:27:13 PM] -ChanServ- 1     Spark[Nick]            +AFRefiorstv [modified 1y 3w 1d ago]
[01:27:13 PM] -ChanServ- ----- ---------------------- -----
[01:27:13 PM] -ChanServ- End of #pencil2d FLAGS listing.
/ns info #Spark[Nick]
[01:27:23 PM] -NickServ- Information on Spark[Nick] (account Spark[Nick]):
[01:27:23 PM] -NickServ- Registered : Aug 13 06:00:25 2015 (1y 11w 0d ago)
[01:27:23 PM] -NickServ- Last addr  : ~Nick@2602:306:3717:8c60:3805:a579:4df4:35bf
[01:27:23 PM] -NickServ- Last seen  : Jul 07 20:15:51 2016 (16w 0d 17h ago)
[01:27:23 PM] -NickServ- Flags      : HideMail
[01:27:23 PM] -NickServ- *** End of Info ***

If you want I can try to engage with freenode's staff and see if they are willing to unregister the channel so we can take it over.

mapreri avatar Oct 28 '16 13:10 mapreri

If you want I can try to engage with freenode's staff and see if they are willing to unregister the channel so we can take it over.

I think that sounds great! Thanks for the extra information.

scribblemaniac avatar Oct 28 '16 17:10 scribblemaniac

@mapreri @scribblemaniac Actually that Nick was a contributor for Pencil2D! @Spark01 Nick do you think you could help us out to get a hold of the Pencil2D IRC channel? We would like to make things more official from now on :)

Also, sorry i've been away, really hectic things happening and my workplace. It's been madness. I'll try to read and organize what scribblemaniac has summarized already and see if anything was missing, but sof ar I can tell that's exactly what we've progressed so far. Thanks everyone!

Jose-Moreno avatar Oct 29 '16 15:10 Jose-Moreno

@mapreri @scribblemaniac Actually that Nick was a contributor for Pencil2D! @Spark01 Nick do you think you could help us out to get a hold of the Pencil2D IRC channel? We would like to make things more official from now on :)

Oh! Well, I yet had to connect to irc today, so... let's just try to wait on him :) BTW, IMHO that IRC bot Github-chchwy that from time to time appears in ##pencil2d should probably move to #pencil2d then.

mapreri avatar Oct 29 '16 17:10 mapreri

Hi everyone, Just finished a busy month so I can keep working on Pencil2D again.

In short:

  • I have created a docs folder in repository and put Building guide for Mac inside (thanks @scribblemaniac!). A self-contained documentation would be good for developers, everyone can contribute to it just like contribute to source. I will put a link on Github page later.
  • About official roadmap, I created a public Kanban board, it's a new feature of Github, I think it is simple enough for a small team like us. But I am not sure how to set the permission at the moment. What do you think about it?

chchwy avatar Nov 02 '16 03:11 chchwy

@chchwy Thanks! I already downloaded the Zenhub extension as well. Regarding the docs I think it's great to make it self-contained so devs can contribute to it. Scribblemaniac was testing doxygen out, but what I understood is that it reads the comments out of the code, so put simply, there should be more comments for that to work. :smile:

Jose-Moreno avatar Nov 02 '16 03:11 Jose-Moreno