{"id":1897,"date":"2018-01-07T14:07:53","date_gmt":"2018-01-07T14:07:53","guid":{"rendered":"http:\/\/blog.filipesaraiva.info\/?p=1897"},"modified":"2018-01-07T14:07:53","modified_gmt":"2018-01-07T14:07:53","slug":"discussing-the-future-of-cantor","status":"publish","type":"post","link":"https:\/\/filipe.saraiva.tec.br\/blog\/?p=1897","title":{"rendered":"Discussing the future of Cantor"},"content":{"rendered":"<p style=\"text-align: justify;\">Hello devs! Happy new year!<\/p>\n<p style=\"text-align: justify;\">It is common to use the new year date to start new projects or give new directions for old ones. The last one is the case for <a href=\"https:\/\/edu.kde.org\/cantor\/\" target=\"_blank\" rel=\"noopener\">Cantor<\/a>.<\/p>\n<p style=\"text-align: justify;\">Since when I got the <a href=\"https:\/\/arieder.wordpress.com\/2015\/11\/15\/handing-over-the-reins\/\" target=\"_blank\" rel=\"noopener\">maintainer status<\/a> for Cantor, I was working to improve the community around the software. Because the great plugins systems of Qt, it is easy to write new backends for Cantor, and in fact in last years Cantor reached the number of 11 backends.<\/p>\n<p style=\"text-align: justify;\">If in a hand it is a nice thing because Cantor can run different mathematical engines, in other hand it is very common developers create backends, release them with Cantor upstream, and forget this piece of software after some months. The consequence of this is a lot of unsolved bugs in Bugzilla, unexpected behaviours of some backends, and more.<\/p>\n<p style=\"text-align: justify;\">For instance, R backend is broken from some years right now (thanks Rishabh <a href=\"https:\/\/rish9511.wordpress.com\/2017\/08\/27\/gsoc-port-of-r-to-qprocess\/\" target=\"_blank\" rel=\"noopener\">it was fixed<\/a> during his GSoC\/KDE Edu Sprint 2017 but not released yet). Sage backend breaks for each new release of Sage.<\/p>\n<p style=\"text-align: justify;\">Different backends use different technologies. Scilab and Octave backends use QProcess + Standard Streams; Python 2 uses Python\/C API; Python 3, R, and Julia use D-Bus.<\/p>\n<p style=\"text-align: justify;\">In addition to these, remember each programming language used as mathematical engine for Cantor has their respective release schedule and it is very common new versions break the way as backends are implemented.<\/p>\n<p style=\"text-align: justify;\">So, yes, the mainternhip of Cantor is a hell.<\/p>\n<p style=\"text-align: justify;\">In order to remedy it I invited developers to be <a href=\"http:\/\/blog.filipesaraiva.info\/?p=1802\" target=\"_blank\" rel=\"noopener\">co-maintainer<\/a> of these respective backends, but it does not have the effect I was suposed to. I implemented a way to <a href=\"https:\/\/edu.kde.org\/cantor\/news.php#itemCantorinKDEApplications1708\" target=\"_blank\" rel=\"noopener\">present the versions<\/a> of programming languages supported in the backend but it does not work well too.<\/p>\n<p style=\"text-align: justify;\">So, my main work in Cantor during these years was try to solve bugs of backends I don&#8217;t use and, sometimes, I don&#8217;t know how they work, while new features were impossible to be planned and implemented.<\/p>\n<p style=\"text-align: justify;\">If we give a look to <a href=\"https:\/\/jupyter.org\/\" target=\"_blank\" rel=\"noopener\">Jupyter<\/a>, the main software for notebook-based mathematical computation, it is possible to see this software <a href=\"https:\/\/github.com\/jupyter\/jupyter\/wiki\/Jupyter-kernels\" target=\"_blank\" rel=\"noopener\">supports several programming languages<\/a>. But, in fact, this support is provide by the community &#8211; Jupyter focus effort in Python support only (named the <a href=\"https:\/\/ipython.org\/\" target=\"_blank\" rel=\"noopener\">ipython<\/a> kernel) and in new features for Jupyter itself.<\/p>\n<p style=\"text-align: justify;\">So, I would like to hear the KDE and Cantor community about the future of Cantor. My proposal is split the code of the others backends and put them as third-party plugins, maintained by their respective community. Only the Python 3 backend would be &#8220;officially&#8221; maintaned and delivered in KDE Applications bundle.<\/p>\n<p style=\"text-align: justify;\">This way I could focus in provide new features and I could to say &#8220;well, this bug with X backend must be reported to the X backend community because they are accountable for this piece of software&#8221;.<\/p>\n<p style=\"text-align: justify;\">So, what do you think about?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hello devs! Happy new year! It is common to use the new year date to start new projects or give new directions for old ones. The last one is the case for Cantor. Since when I got the maintainer status for Cantor, I was working to improve the community around the software. Because the great&hellip;&nbsp;<a href=\"https:\/\/filipe.saraiva.tec.br\/blog\/?p=1897\" class=\"\" rel=\"bookmark\">Continue a ler &raquo;<span class=\"screen-reader-text\">Discussing the future of Cantor<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[9],"tags":[58,25,48,11,26,51,109,104,41,52,108],"class_list":["post-1897","post","type-post","status-publish","format-standard","hentry","category-software-livre","tag-cantor","tag-ciencia-da-computacao","tag-comunidade","tag-desenvolvimento","tag-kde","tag-planet-mageia-english","tag-planet-python","tag-planet-scipy","tag-planeta-psl-pi","tag-planetkde-english","tag-python"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p1p2Jh-uB","jetpack_sharing_enabled":true,"jetpack_likes_enabled":false,"_links":{"self":[{"href":"https:\/\/filipe.saraiva.tec.br\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1897","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/filipe.saraiva.tec.br\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/filipe.saraiva.tec.br\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/filipe.saraiva.tec.br\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/filipe.saraiva.tec.br\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1897"}],"version-history":[{"count":1,"href":"https:\/\/filipe.saraiva.tec.br\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1897\/revisions"}],"predecessor-version":[{"id":1898,"href":"https:\/\/filipe.saraiva.tec.br\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1897\/revisions\/1898"}],"wp:attachment":[{"href":"https:\/\/filipe.saraiva.tec.br\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1897"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/filipe.saraiva.tec.br\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1897"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/filipe.saraiva.tec.br\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1897"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}