sK1 development restarted

sK1 development restarted

sK1 project has been a bit silent for the most of this year. This is basically because we started it all over again. Read on to find out more.

A year ago we decided to introduce major changes to both sK1, the vector graphics editor, and UniConvertor, the vector graphics conversion tool. After some analysis the decision was made to start everything from scratch.

Why we did it

Initially the plan was to do refactoring of both sK1 and UniConvertor. This decision didn't come out of blue, because the source code inherited the architecture from Sketch/Skencil which was fine for late 90s, but didn't really cut the mustard for 2010s. Given amount of code base to go through we decided to just redo everything from start.

That wasn't by any means an easy decision to make, but it wasn't the only way out, especially since supporting the old toolkit was starting to take too much time. Mere 2-3 years ago we still had some hopes for Tcl/Tk 8.5-8.6, but alas it was a defeat. So we also had to find a new toolkit, and the choice was between GTK+ and Qt. Architecture was another issue we had to deal with, since we used to support sK1 and UniConvertor as two separate projects using same code base. There was a great deal of other architectural issues.

New architecture

The architecture of sK1/Skencil was formally declared as MVC pattern, that is, Model-View-Controller:

MVC

Within this pattern View is UI of the application, Controller is that part of code that deals with user input, and Model is the tree-like document objects hierarchy that contains all information about what's on the canvas.

But that's only what it was supposed to be. The real thing looked much worse with all three components completely messed up. The model had bits of UI, and the model's objects were hardwired to Xlib structures, and so on. Skencil/Sketch was also initially designed as one document per instance application, hence loading of new documents used to result in memory leaks.

For the new architecture we decided to go for MVP pattern which stands for Model-View-Presenter:

MVP

This way documents model is isolated from UI, and that solves quite a few issues:

  • we could create a hybrid application that would use UniConvertor as its core (Model + Presenter), and the vector graphics editor would be just a front-end;
  • a better design would help us avoid memory leaks;
  • new applications could be written on top of UniConvertor;
  • model redesign would drop memory use dramatically.

The model redesign bit needs some elaboration. Typically when you create e.g. a thousand of equal rectangles, you get a thousand of copies of a method that is specific for the rectangle. So we decided to move as much of code to Presenter (which is just one per document) as possible, thus making objects of the model plain datasets. Testing revealed that this leads to a considerable drop of memory use, even better than in Corel DRAW and Adobe Illustrator. However this is specific for Python and doesn't make a lot of sense for e.g. C++.

New file format

SK1's file format was derived from the old Sketch/Skencil's one and lacked some useful features, such as:

  • embedding files like fonts, ICC profiles, color palettes etc.;
  • simple extraction of embedded images;
  • readable document structure.

So we designed a new file format that is modeled after OpenDocument and called it PDXF (PrintDesign XML Format). Just like OpenRaster or OpenDocument files it's a ZIP archive with content.xml that describes the structure and nested folders for each type of embedded data. The difference is that it doesn't use things like external CSS: each object is described inside its tag.

Choosing a new toolkit

As previously mentioned, we had to pick either GTK+ or Qt as a new toolkit. So we implemented test applications in both toolkits to compare and make a decision. Here is what we discovered:

  • Qt has considerably more features.
  • QPainter is much faster than Cairo and supports OpenGL natively;
  • However GTK+ is more lightweight and uses twice as little memory.
  • Unlike QPainter in Qt, Cairo isn't part of GTK+, so one could do a server build that doesn't require Xlib/WinAPI, which is important for UniConvertor.
  • GTK+ is 100% free, while Qt is tossed from company to company.

So we decided to go for GTK+, but redesigned UniConvertor in a way that makes it possible to create a Qt-based vector graphics editor.

PrintDesign

Since we started a whole new project, we decided to rename the actual editor. The new name is PrintDesign which is rather self-explanatory.

PrintDesign

We also redesigned the logo. It still represents CMYK primaries and looks good in all resolutions starting with 10×10px.

PrintDesign icon  PrintDesign icon  PrintDesign icon  PrintDesign icon

The new user interface uses tabs for MDI, and unlike in sK1 every document in PrintDesign has its own canvas and its own message loop. That isolates every document instance rather well.

PrintDesign

Testing of this initial implementation revealed that the application:

  • starts momentarily;
  • works reliably in a multidocument mode;
  • cleans up reserved memory well enough when you close a document;
  • renders complex documents very fast.

We already used Cairo since 2007, but it was built on top of an existing renderer which used Xlib (and it looks like Inkscape developers have been trying to do the same lately). We are using Cairo differently now. Even though PrintDesign is still in its infancy, we have basic canvas functionality in place, that is, selection and transformations, and we have new selection markers instead of the old XOR-based from sK1.

New selection cue in PrintDesign

All the testing was done with just one implemented shape — rectangles. The next thing we are going to do is implement support for more shapes, text and bitmaps.

UniConvertor 2.0

The old architecture, inherited from Skencil, was quite limiting in a way that all file formats were read as a stream of data. It's OK for some simplistic file formats such as PLT. But when it comes to CDR or SVG, where definitions can be stored separately from an object, things suddenly start looking really bad. You end up with spaghetti of procedures, where parsing, analysis and creating of model's objects are intertwined.

To fix it we decided to use a different approach and create format specific models for each supported file format. What it means is that when you start importing a document, UC will create a file format model, then convert data of this model to PrintDesign model's objects, then (optionally) merge the resulted document into an existing one (if you import a file into an existing illustration). It also helps dealing with nested file formats (e.g. bits of CMX and TTF in CDR files).

We also created a new application called Format Explorer for visualization and analysis of reverse-engineered file formats. Since it uses UniConvertor directly, the newly created conversion code automatically becomes available for both UniConvertor and PrintDesign. Format Explorer is an in-house project that uses Qt for user interface.

Availability

It's way too early for any releases, but it's free software, so you can track the progress if you want to:

UniConvertor 2.0: http://uniconvertor.googlecode.com/svn/trunk/
PrintDesign 1.0: http://print-design.googlecode.com/svn/trunk/
FormatExplorer: http://formats-explorer.googlecode.com/svn/trunk/

As you can see, we have also moved from SourceForge to Google Code for better reliability.

Conclusion

Our plans are rather ambitious, but please don't expect immediately useful software. Even big software companies cannot magic a whole new application from scratch in few months, it takes years to get there. Our primary objective is to release UniConvertor 2.0 with new features: improved support for Corel DRAW files, including importing files from X5 and exporting CDR files. This version will be released in few months. the first fully working prototype of PrintDesign will be presented at Libre Graphics Meeting 2012 in Vienna.

Was it useful? There's more:

41 Comments

Leave a comment
  1. Hi. It’s very impressive that you’re so serious about PrintDesign that you’re actually rewriting the whole thing from scratch. I really like the tabbed documents approach, I really like the new name and I really like your approach.

    Consider this, though: Instead of a narrow strip along the bottom for selecting colors from the color palette, a palette grid of say 20x30 colors is far superior in my opinion.

    The strip along the bottom is inferior for at least a couple of reasons: 1. Not all colors can be shown at once.
    User has to scroll horizontally to see the rest of the colors and can never directly eyeball and compare more than a fraction of the available colors at any one point. (In Inkscape, this is a real problem as only 20% of the colors are visible at any one time and the built in “swatches”-panel only shows colors in 3 columns by design.)
    2. User can only move horizontally between colors and thus is likely to have to move mouse far to find the desired color.

    With a color grid approach, you can more easily show the panel in many sizes, vertical scroll, if necessary and finally, you can even present the palette as a “popup grid palette” upon clicking the color-selector. (similar to how it’s done in Blender, but with a proper grid palette instead of sliders.)

    Just a suggestion from my professional experience with various FLOSS software.

  2. Alexandre Prokoudine 12 October 2011 at 8:54 pm

    @Jimmy Volatile

    Personally, I think that work with color palettes could be improved in both Inkscape and sK1/PrintDesign. I quite like what AI got in CS4.

  3. @Alexandre

    I forgot to say, the actual palette in GIMP is pretty decent in terms of grid presentation: Lots of colors in a handy panel.

    I havn’t tried AI’s lately but I think Adobe Fireworks also has a really palette selector.

  4. Very well. I was afraid that sK1 development was abandoned. For me (as I develop with Qt) choose of GTK+ is major cons, but pros is open architecture and possibility to make different UI based on other toolkit. Maybe some day I will get your code and will start building my own CorelDRAW port ;-)

  5. I would like to contribute. Please contact me!

  6. Jose, I think you need contacting project team on official website http://sk1project.org

  7. Inkscape is a great program.
    But it still lacks some basic functions and performance.
    Freestyle was very powerful with a very very intuitive pen but now it is buried.
    Have there been any thought of PrintDesign team and the Inkscape team could share some muscle and help each other out? Collaboration in a common cause :)
    The pen tool of Inkscape is already so much better than the Illustrator equivalent. Its not only about powerful tools but how the tools work.

    Best of luck to you!

  8. Have there been any thought of PrintDesign team and the Inkscape team could share some muscle and help each other out?

    share -> join

     

  9. How are boolean operations in PrintDesign? I noticed they are unusable in Inkscape :)
    I hope to see a test build in the near future.

  10. Best wishes.

    Just wanted to note my subjective option about new logo, that time of shiny icons is long gone and seems for good, thanks god.

    Design form is not that bad, but again using 4 base colors in some monolithic unity is overkill seen too many times.

    I can’t wait to see working version of your new application, and hope my comment is considered constructive :)


    Cheers

  11. It’s great to see that sk1 is alive again!

    Please consider to implement CorelDraw text support in UniConvertor 2.0, even from the beginning. A lot of CorelDraw projects contains text objects, and if we are loosing them after conversion ... well, in some cases it can be harder to retype the whole text, then recreate the graphics itself. This was one of the primary reason we couldn’t use the previous versions.

    Best of luck to you!

  12. Please, hurry in getting a working program fast. I’m using ubuntu 11.10 as I’ve longed wanting to do away with windows or mac,but was afraid because the graphics softwares were not up to par with adobes. I’m a graphic artist & i’m longing 4 freedom from these corporation with there over priced softwares.
    i’m one who believes that we can have better alternatives free of cost.

  13. It is not so much about no cost. Open source may cost no money (apart from the projects you like to support economically) but to keep a OS project alive, you pay in contributions to the projects, friendship and ideas. In many other fields ideas are more worth than money but results in turn in a closed secretive environment where creativity does not thrive as well. Especially not from developers to the community.
    I think the PrintDesign / uniConverter team should not hurry more than necessary. In my eyes the key is not to get a copy of other nice vector editing programs ie. inkscape, but to evolve the graphics design platform to become something even better and help gather the combined vector editing design community in the Open world.
    Early updates / early code release might of course help others contribute :)

  14. Hello!

    Is there anyway a non coder and technical people could assist and help make the stable release reach the daylight faster? it is an amazing project which deserves to be boosted and get a better recognition.

    It is a bit pity you moved to GTK+ since GTK always feels so limited and not flexible, but as long as it works it is fine :) But please consider moving back the color palette to the right sidebar or maybe some research on color palette placing could be useful. it is fine to sit on the bottom, but it really isn;t convenient. except for the cases like in corel when you can simply place the used in document color pallet on the bottom while the main pallet sits on the right side. But I guess this is jsut a personal preference. Anyway, what would be really amazing is if you would do a research on what features are the most used in applications like Corel Draw, AI, Xara, Inkscape and create one tool that fills the gap. Nowadays tools gets bloated with various features but most of them are not used or being used cross application way ( using multiple tools to achieve the result). I know this is a free tool, but for it to get the recognition and funds it is advisable to scout the market needs. I wish you would also pay big attention to advancing the text tools,

    I am very grateful for making this tool and hopefully the day when we can forget about windows will come soon. At the moment Corel didn;t have had a true replacement, hopefully Print designer will be the one :)

    Best regards,

  15. I’m super excited for this to come out.  Inkscape not supporting CMYK has really made my work a lot harder than it probably should be!  I was just wondering: what OS will the final program be compatable with?

  16. Alexandre Prokoudine 08 February 2012 at 5:03 am

    Primary would be Linux, with Mac and Windows following it.

  17. Hello!

    Any news with Printdesign?

  18. Alexandre Prokoudine 16 April 2012 at 6:16 pm

    From what I know, some announcement is supposed to be made at Libre Graphics Meeting in two weeks.

  19. This looks promising and a huge endeavor! Good luck. Hopefully the GTK for mac will be more stable and usable, so that the program can run without X11.

  20. Good luck with this new version.  I have been trying to use inkscape for various things that range from icons to vector art to maps (similar to your example screenshots). Unfortunately the performance of Inkscape is so abysmal that its almost impossible to use for anything real - GUI response, rendering - the entire user experience is degraded to the point where it does not matter what it could do.    My point is this - keep the performance requirement foremost in your mind - do not add features and nice to haves if the performance is a problem.

  21. Chaudhary Paresh 02 May 2012 at 6:45 am

    Best of luck Team,

    When you release new uniConverter source code.

    Give all dxf and dwg and cdr support for any version of coreldraw and autocad

  22. QT is free under LGPL, that shouldn’t be a con. I mean, the QT ‘owners’ could hijack the project, but forking would be trivial thanks to LGPL.

    QT adoption is great, though, so it would be the owner’s loss, anyway.

  23. Hello!

    So any news regarding the progress of this project?
    Or is the hope of printdesign fading away?
    The silence about this project is killing.

    Hope all is well there and Printdesign will see its launch day. :) 

  24. Alexandre Prokoudine 22 May 2012 at 4:35 pm

    The last thing I heard is that Igor promised at LGM a release around July-August this year.

  25. I have read Corel & GNU/Linux story recently… Looked for sp. drawing tools.

    Good luck and best wishes to the sK1/UniConvertor/PrintDesign Team!

  26. Any news on this? I hope it’s not abandoned. If anyone have something new, please share with us. It would be useful to have a webpage for this project, where we can stay in touch with the developers and each other. Good luck and best wishes.

  27. I, too, would be curious to know whatever happened to this project. The SK1 site says PrintDesign has superseded SK1, but I can’t find an actual project site for PrintDesign.

    Inkscape is a GREAT product, but having something that also does CMYK would be wonderful. Both apps would be great resources to have.

  28. Looks like this is not going to happen as they are not responding, what a shame!

  29. What shame?
    Do they have to respond?
    This is like a venture, but not for money profit.
    For this purpose I respect each good try!

    I would say end of the year always take a lot of time and efforts.
    So - best wishes to the Team and hope to hear good news on January!

  30. Alexandre Prokoudine 28 November 2012 at 10:26 pm

    As a matter of fact, development of PrintDesign and UC2 is a commercial enterprise. Igor just hasn’t revealed the sponsor yet.

  31. When will the first alfa(beta) test be released?

    I am waiting very patiently :)

  32. Come on people! He is working on it. I receive a message from him that confirms he’s working on the new release. I’m also crazy to start using this software but I think is better if we patiantly wait for a good and polished program instead of getting in a hurry for a buggy one.

    Alexandre Prokoudine, what do you mean with commercial? Is not like I’m worried about it, if they make this software commercial I will buy it for sure.

    Great day to you all :)

  33. If it will be a commercial product with Open Source the only thing that can be payed for is the support service. And that is a good thing, because it supports the development of the product. Even so based on what SK1 could do at the stage it was in was a god damn good application, to bad It did not reach a stage where I could work on it under Windows. And this is because I can not switch totally to Linux based system. In my field of work I need multiple packages to be able to complete my work. If only GIMP would focus in making the application more compatible and easy to use like well know rival of his. And also I need a good support for AAMA Dxf format in PrintDesign or a 3rd party app that can transform the DXF into PDF or SVG so you can import the file directly.

    It would be amazing if the PrintDesign application could have Python scripting capabilities to be able to create plugins and automation’s.

  34. Alexandre Prokoudine 04 December 2012 at 8:49 am

    @David Beczuk At this point there’s no knowing of that.
    @Roberto Delgado I mean he’s paid to work on it.

  35. @Alexandre Prokoudine Thanks for the response.

  36. Any news on the project?

  37. Alexandre Prokoudine 10 February 2013 at 5:18 am

    None whatsoever, I’m afraid.

  38. This is painfull, I’m feeling like a kid whom haven’t been able to buy the last collectible toy to complete his collection.

    BTW @ Alexandre Prokoudine Have you heard something about the Xarino project? Is or was an attempt to resurrect the seemingly dead xaralx project.

  39. Alexandre Prokoudine 10 February 2013 at 5:53 am

    The one that was last updated in 2009?

  40. Ha,ha,ha! Exactly. I’m wondering about why that project never happened. It was something related to the Xara acquisition by Magix?

    I don’t now, is always sad to see good projects vanishing with no new good alternatives to replace them.

  41. hi guys,

    i have an Imac,mid 2009,i have switched from Leopard to Snow and i can’t open ..Inkscape,no way!
    i downloaded the right version from the site,but..really disappointed,can you help me?

    thanks.Luigi

Tell us what you think

Submit the word you see below: