Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Official Roadmap [Issue Tracker] #540

Open
Jose-Moreno opened this issue Oct 11, 2016 · 47 comments
Open

Official Roadmap [Issue Tracker] #540

Jose-Moreno opened this issue Oct 11, 2016 · 47 comments

Comments

@Jose-Moreno
Copy link
Member

Jose-Moreno commented Oct 11, 2016

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

BITMAP ENGINE

VECTOR ENGINE

Vector engine upgrade proposal #616 (comment)

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

  • Stabilizer feature for vector tools: [REQUEST] "mass" or "slow position tracking" value for the PEN tool #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

TIMELINE ENHANCEMENTS & FRAME EDITING

  • Move animation controls to the middle of the timeline Move AnimationControls to the middle of the timeline #38 fixed via a bit refactoring and fixed timeline UI spacing #656

  • 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: [feature request] instantiate frames #389

  • 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.

  • 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?)

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

  • 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: [Feature] Multi layer onion skinning #1874

    • 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: Layer merge #1206

  • Improve layer organization awareness

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

  • Timeline Layer Filter (REF Krita Layer track timeline panel visibility properties #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

WORKFLOW ENHANCEMENTS

UNDO + REDO PARADIGM

COLORING WORKFLOW ENHANCEMENTS
tool presets for colored linework: #25

  • (Bitmap) Implement a color replacement function

  • 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

  • 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 Hashing Brush  #344 (might be possible with mypaint)

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

SELECTION TOOLS

TRANSFORM TOOL ENHANCEMENT (SELECTION + MOVE TOOL)

  • Implement Free Transform Tool functionality: Free transform tool #9
    • Implement proportional resizing
    • 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

  • Implement camera motion “tweening”
  • Implement camera rotation
  • Implement camera panning / move camera frame border
  • 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

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 ...
  • Implement Image sequence spacing to import every X frames
  • Implement Standard bitmap (i.e. TGA) and vector (i.e. SVG) files import. REF Thread: Importing SVG (Inkscape) #287
  • Implement Standard bitmap (i.e. TGA) and vector (i.e. SVG) files export
  • Implement Transparency Toggle for Still Images on supported file formats: Image export options #163
  • Implement Video Import: Implement video import #1070
  • Implement Direct2Web export / upload function for youtube, vimeo, wistia (requries technical review of API’s): [request] WebM, or Upload to Youtube #288

ANIMATION PRODUCTION SPECIFIC REQUESTS

  • Implement an X-sheet Panel for professional / classical animators. http://www.pencil2d.org/forums/topic/classic-x-sheet-integration/ Xsheet feature #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

@scribblemaniac
Copy link
Member

scribblemaniac commented Oct 11, 2016

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 (9336dbc)!

@feeef
Copy link
Contributor

feeef commented Oct 11, 2016

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.

@Jose-Moreno
Copy link
Member Author

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

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

@J5lx
Copy link
Member

J5lx commented Oct 11, 2016

@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/.

@scribblemaniac
Copy link
Member

@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.

@gordielachance
Copy link

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.

@Jose-Moreno
Copy link
Member Author

@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 😝

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!).

@feeef
Copy link
Contributor

feeef commented Oct 13, 2016

@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!

@gordielachance
Copy link

@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 : #542

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

@Jose-Moreno
Copy link
Member Author

@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 [BUG] Cross-platform Memory Leak Crash-Wipe Issue #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 😄

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.

@feeef
Copy link
Contributor

feeef commented Oct 14, 2016

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.

@J5lx
Copy link
Member

J5lx commented Oct 14, 2016

@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
Copy link
Member

J5lx commented Oct 14, 2016

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.

@scribblemaniac
Copy link
Member

scribblemaniac commented Oct 15, 2016

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.

@J5lx
Copy link
Member

J5lx commented Oct 15, 2016

@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

@Jose-Moreno
Copy link
Member Author

@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

@scribblemaniac
Copy link
Member

@J5lx Thanks for pointing that out. In my 'programmer' mind that is all expected behavior 😄
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.

@Jose-Moreno
Copy link
Member Author

Jose-Moreno commented Oct 17, 2016

@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.

@scribblemaniac
Copy link
Member

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

@scribblemaniac
Copy link
Member

@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.

@Jose-Moreno
Copy link
Member Author

@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!

@scribblemaniac
Copy link
Member

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

@scribblemaniac
Copy link
Member

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 Change the website layout #542)
  • Tweaks need to be made to support native theming (moved to Improve support for dark themes #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
Copy link
Member

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 😉

@mapreri
Copy link
Contributor

mapreri commented Oct 28, 2016

@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.

@scribblemaniac
Copy link
Member

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.

@Jose-Moreno
Copy link
Member Author

@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!

@mapreri
Copy link
Contributor

mapreri commented Oct 29, 2016

@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.

@chchwy chchwy added the Question label Nov 1, 2016
@Jose-Moreno
Copy link
Member Author

@chchwy @scribblemaniac @feeef @candyface @J5lx @mapreri @gordielachance So, I wanted to let you know that the Pencil Live document I was maintaining ever since last year was updated yesterday.

After a long year of testing out Pencil2D and patiently listening to the cries of some users, I've rounded about 80+ feature requests from my own experience and from pro animators I've come across that have used the app.

https://docs.google.com/document/d/1NmbAh1TQYDwoEgyrIy215fl_iCvBK651PIJno9KAijo/edit

My question for you is, should I attempt to transfer all these requests to the issue tracker? or do we have any better way to get this? With this we certainly have the basis for a "future functionality" roadmap, however I want to know what are your thoughts on how to better organize it so we can add or modify new requests from a technical and a "regular" user standpoint.

I'm still tidying up the list eliminating duplicates, but there shouldn't be many more. So let me know through the comments here or on the drive document. Thanks a lot for all of your hard work!!! 😃 :

@MrStevns
Copy link
Member

MrStevns commented Apr 14, 2017

Preferably we should have all issues in the issue tracker yes.

As for accessing the doc, you could link to it via the "Task list" button on the wiki page, then it would be easily available from the dev environment.

https://github.com/pencil2d/pencil/wiki

Good work :)

@mapreri
Copy link
Contributor

mapreri commented Apr 14, 2017 via email

@J5lx
Copy link
Member

J5lx commented Apr 14, 2017

I also agree about the bug tracker. Potentially one could also assign a milestone to those issues, that way we’d get a nice progress bar :)

@feeef
Copy link
Contributor

feeef commented Apr 14, 2017

I agree with the tracker too! It will be easier to define ant track milestones for each features. It will also be easier for the new contributors joining.

@Jose-Moreno
Copy link
Member Author

Alright everyone!, thanks for answering I'll gladly migrate them over, it might take some time before I finish cleaning up the duplicate, but once I do I'll categorize the requests before adding them.

I don't have the ability to tag the issues though, so I guess I'll leave a tag suggestion on the issue as well, because I think it's important to prioritize certain features over others, of course this will be up for discussion as well.

Slowly but surely we will see this software to flourish! Thanks a lot! 🎉

@Jose-Moreno
Copy link
Member Author

Ok, I managed to organize the bug requests into sections to give an idea of plausible milestones so now it resembles an actual roadmap 😄 . I'll begin submitting proposals as soon as I've finished reading and testing out each one to make it as clear as possible. Also I'll leave tag and milestone suggestions to be implemented along the issue.

https://docs.google.com/document/d/1NmbAh1TQYDwoEgyrIy215fl_iCvBK651PIJno9KAijo/edit

@chchwy I would like to ask if you could allow me to permissions to modify the Github wiki and to beign posting the roadmap there as well. Also is it possible that I can be allowed to put tags on the issues to better help with the organization of these new feature requests and bugs? Thanks!

@Jose-Moreno
Copy link
Member Author

@chchwy @J5lx @candyface @feeef @gordielachance @scribblemaniac Good evening everyone. It pleases me to announce that we've finally been given authority over the Pencil2D Bountysource page.

First I'd like to add those mentioned as members of the core Pencil2D team on BountySource so we can come together to consider rewarding specific development tasks that need our immediate attention. This would also allow us to setup a developer / team mailing list so we can get in touch for sensitive issues that arise.

For this I'd like to ask you to send an e-mail to our address pencil2danimation(at)gmail.com so you can be invited. Along your email address, please send a list of nominated features that you consider are worth highlighting to the community so we can improve the software upon those highlights in a more focused manner.

Please consider any issue posted on the github repository as well as feature requests consigned on this document: https://docs.google.com/document/d/1NmbAh1TQYDwoEgyrIy215fl_iCvBK651PIJno9KAijo/edit

Ideally I would like to announce this new approach to the public along the release of version 0.6, not only to bring confidence to our users that Pencil2D will continue to be improved, but to have time to flesh out a proper plan to fund and develop future features and enhancements for the software that would simply not be possible without financial support in the long run.

After this we should allow the community to vote and choose which of the highlighted features they want put a bounty on. Lastly the bounty would be initialized by one of the admins with the minimum allowed bounty ($5) in order to permit the community to "donate" to the specific development task to reward the efforts particularly on challenging tasks.

Please take your time and consider not only the features you'd like to include, but also how much money you estimate it would cost for you to make it happen as a single developer. It may be obvious to say this, but sadly it may not be possible to get payed full rate for any of these development tasks, it would be ideal if we could find a willing corporate investor or use a crowdfunding strategy to achieve this, but for now let's keep it realistic as we're just starting out.

With that said, I want to thank everyone who has dedicated themselves to contribute to this project over the past years. I'm quite sure time will prove these efforts fruitful as we continue to pursue an open source software for those potential creative talents that other projects don't cater to.

Have a great week, I'll be pending for your response,

p.s. If any other past developer that have worked with Pencil2D would like me to add them to the BountySource Pencil2D team, please let me know. As long as you want to help this project to evolve, we will continue to look forward working with you, cheers 😄

@Jose-Moreno Jose-Moreno changed the title Official Roadmap, Developer Guide and Bugtracker Template [Help wanted] Official Roadmap [Issue Tracker] Sep 5, 2017
@Jose-Moreno
Copy link
Member Author

@chchwy @candyface @scribblemaniac @J5lx Hey, so in the past most of you sent me a few suggestions on which features we should prioritize past 0.6 So I created a temporary spreadsheet to visualize these suggestions which overlapped in many cases.

I'm only missing CandyFace's suggestions but anyone else can comment freely so if you have anything else you feel like it should be prioritized please feel free to comment on the spreadsheet.

https://docs.google.com/spreadsheets/d/1c2GOMLolfCu6qpwxZ-ZLcb_VIZUeeJd0P-PU8WzJZc4/edit?usp=sharing

@J5lx
Copy link
Member

J5lx commented Nov 15, 2017

A while back there was some discussion on making #pencil2d (without the second #) on freenode our official IRC channel again (see #540 (comment)). If that is still a thing it’d probably be a good idea for some of the people actually using IRC actively (i.e. me, @candyface or maybe @scribblemaniac who made that discord-irc-bot just recently) to have some sort of control over that channel. Any thoughts about that topic? (I’ll also direct that Nick from Discord here in case he’s the same Nick who registered the freenode channel)

@Jose-Moreno
Copy link
Member Author

@J5lx Actually now that you mention it, I think it is the same person! I totally forgot to ask him about that since it had been discussed before, but I never got to contact him until he contacted us back while setting up the discord server. I think it's worth a shot so you guys have more control over that node as well.

@J5lx
Copy link
Member

J5lx commented Nov 15, 2017

For the record, Nick has now changed the founder of #pencil2d to @candyface

@scribblemaniac
Copy link
Member

I have added the discord-irc bot to #pencil2d as well, so both channels are now connected to discord.

@J5lx
Copy link
Member

J5lx commented Nov 15, 2017

Nice. BTW, let me know if you want to have the bot hosted on an actual server (since it seems to come from some sort of ISP backbone right now)

@Brunobasta
Copy link

hi all, where to find the IRC chanel for pencil2d?
I tried with https://www.oftc.net
/join pencil2d
but noone there?

@Jose-Moreno
Copy link
Member Author

@Brunobasta Hi Bruno, well IRC is usually deserted but as far as I recall there is a bot that will relay your messages to our discord server.

I believe that a liberachat channel was opened here https://web.libera.chat/#pencil2d due to the freenode debacle (where the channel was hosted before but now it's difficult to reach afaik)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: No status
Development

No branches or pull requests

9 participants