Jump to content
UltiMaker Community of 3D Printing Experts

How to contribute to the Cura Project


LordHokage
 Share

Recommended Posts

Posted · How to contribute to the Cura Project

Hi everyone!

I have been working on python and my fair share of C++. I would like to contribute to the Cura project and slicer. I have more experience with Python but I am not too sure on where to begin and start. I have done some open source work but wouldn't consider it important.

 

Any response is appreciated ;)

  • Like 3
Link to post
Share on other sites

Posted · How to contribute to the Cura Project

What sort of things would you like to contribute? Do you have certain features of fixes in mind?

 

Ultimaker Cura consists of two main parts: The frontend ("Cura") and the backend ("CuraEngine"). The frontend is written in Python/QML, and the backend in C++. Both are hosted on github (https://github.com/ultimaker/cura resp. https://github.com/ultimaker/curaengine), and both projects accept "pull requests" for contributed fixes and features.

 

Either way, you are probably going to want to start with setting up a development environment, so you can run Cura "from source". What OS will you be developing on?

  • Like 1
  • Thanks 1
Link to post
Share on other sites

Posted · How to contribute to the Cura Project

I use Windows 10 (not 11 just yet ;)). Like previously mentioned, my Python is wayyyy sharper than my C++. I don't have anything in mind but would like to help out the Cura team and donate my time to this project. I think that it is quite exciting. Just thinking out loud: could someone hook me up with the Cura team to help them out?

  • Link to post
    Share on other sites

    Posted · How to contribute to the Cura Project
    2 minutes ago, LordHokage said:

    Just thinking out loud: could someone hook me up with the Cura team to help them out?

    Sure, and done 🙂

    First thing i would recommend is making sure that you can run Cura from source. I expect that will take you some time to setup. If you run into any issues, feel free to ask help. We've tried to keep our running from source guides up to date as much as possible, but it's always a bit of a moving target.

  • Link to post
    Share on other sites

    Posted (edited) · How to contribute to the Cura Project

    So I'm in? That's cool. Thanks! Like I said, I am predominant on Python but I'll try C++ if you need me to. I will start building Cura from source, is it hard and possible on Windows?

    Edited by LordHokage
  • Link to post
    Share on other sites

    Posted (edited) · How to contribute to the Cura Project

    Whoops. Re-reading them, I already see some inconsistencies with the running from source guide.

    It should be possible to get it running with them, but we are now using a higher python version as described in the guide

     

    Edited by nallath
  • Link to post
    Share on other sites

    Posted (edited) · How to contribute to the Cura Project

    Okie. I'l follow the guid and post anything here. When do I get my first "assignent"? I don't really have any ideas hence I asked the previous question. Can I first get some work on the Cura frontend first (since its in Python)? If so, how would I set that up?

    Edited by LordHokage
  • Link to post
    Share on other sites

    Posted · How to contribute to the Cura Project

    There are no assignments. There is a LONG list of "defered" issues which are basically very valid bugs or features, but Ultimaker devs will not be spending time of them because there is too much work to do that is deemed more important for Ultimaker. But many people will thank you for having a go at them.

     

    https://github.com/Ultimaker/Cura/issues?q=is%3Aopen+is%3Aissue+label%3A"Status%3A+Deferred"

  • Link to post
    Share on other sites

    Posted · How to contribute to the Cura Project
    1 minute ago, ahoeben said:

    There are no assignments. There is a LONG list of "defered" issues which are basically very valid bugs or features, but Ultimaker devs will not be spending time of them because there is too much work to do that is deemed more important for Ultimaker. But many people will thank you for having a go at them.

     

    https://github.com/Ultimaker/Cura/issues?q=is%3Aopen+is%3Aissue+label%3A"Status%3A+Deferred"

    Ok. Thanks. I will do that. How do I set up my computer to work on the Cura frontend - that's what I'm interested in (I keep saying this) because I predominantly use Python.

  • Link to post
    Share on other sites

    Posted · How to contribute to the Cura Project

    You could set up a full "from source" installation as outlined in the article linked to by @nallath. But personally I prefer skipping getting CuraEngine to compile, and just set up a python virtual environment with the required modules and bits from a released version of Cura.

     

    * Check out the Cura and Uranium and libCharon repositories in separate folders

    * Alongside those two folders create a bin folder containing the following files extracted from an offical Cura release:

    Arcus.pyd
    CuraEngine.exe
    libgcc_s_seh-1.dll
    libgomp-1.dll
    libifcoremd.dll
    libimalloc.dll
    libiomp5md.dll
    libmmd.dll
    libstdc++-6.dll
    libwinpthread-1.dll
    nlopt.dll
    pynest2d.pyd
    Savitar.pyd

    * Create a Python 3.8 64 bit virtual environment, and add the bin folder, the Uranium folder and the libCharon folder to the PYTHONPATH

    * Install the following modules:

    appdirs==1.4.3
    atomicwrites==1.4.0
    attrs==20.3.0
    Automat==20.2.0
    certifi==2019.11.28
    cffi==1.13.1
    chardet==3.0.4
    colorama==0.4.4
    colorlog==4.8.0
    comtypes==1.1.7
    constantly==15.1.0
    cryptography==2.8
    decorator==4.4.0
    hyperlink==21.0.0
    idna==2.8
    ifaddr==0.1.7
    importlib-metadata==3.10.0
    incremental==21.3.0
    iniconfig==1.1.1
    keyring==23.0.1
    mypy==0.740
    mypy-extensions==0.4.3
    netifaces==0.10.9
    networkx==2.3
    numpy==1.19.5+mkl
    numpy-stl==2.10.1
    packaging==18.0
    pip==21.0.1
    pluggy==0.13.1
    py==1.10.0
    pycollada==0.6
    pycparser==2.19
    PyHamcrest==2.0.2
    pyparsing==2.4.2
    PyQt5==5.15.0
    PyQt5-sip==12.8.1
    pyserial==3.4
    pytest==6.2.3
    python-dateutil==2.8.0
    python-utils==2.3.0
    pywin32==300
    pywin32-ctypes==0.2.0
    PyYAML==5.1.2
    requests==2.22.0
    scipy==1.5.4
    sentry-sdk==0.13.5
    setuptools==49.2.1
    Shapely==1.7.1
    sip==4.19.24
    six==1.12.0
    toml==0.10.2
    trimesh==3.2.33
    Twisted==19.10.0
    typed-ast==1.4.2
    typing==3.7.4
    typing-extensions==3.7.4.3
    urllib3==1.25.6
    zeroconf==0.24.1
    zipp==3.4.1
    zope.interface==5.3.0

    For some of these modules, it is going to be easier to use a wheel from https://www.lfd.uci.edu/~gohlke/pythonlibs/ instead of pip.

     

    Unless I forgot something (which is entirely possible), you should then be able to run Cura from source by going into the Cura folder and running python cura_app.py

    • Like 1
    Link to post
    Share on other sites

    Posted · How to contribute to the Cura Project
    2 minutes ago, ahoeben said:

    You could set up a full "from source" installation as outlined in the article linked to by @nallath. But personally I prefer skipping getting CuraEngine to compile, and just set up a python virtual environment with the required modules and bits from a released version of Cura.

     

    * Check out the Cura and Uranium and libCharon repositories in separate folders

    * Alongside those two folders create a bin folder containing the following files extracted from an offical Cura release:

    Arcus.pyd
    CuraEngine.exe
    libgcc_s_seh-1.dll
    libgomp-1.dll
    libifcoremd.dll
    libimalloc.dll
    libiomp5md.dll
    libmmd.dll
    libstdc++-6.dll
    libwinpthread-1.dll
    nlopt.dll
    pynest2d.pyd
    Savitar.pyd

    * Create a Python 3.8 64 bit virtual environment, and add the bin folder, the Uranium folder and the libCharon folder to the PYTHONPATH

    * Install the following modules:

    appdirs==1.4.3
    atomicwrites==1.4.0
    attrs==20.3.0
    Automat==20.2.0
    certifi==2019.11.28
    cffi==1.13.1
    chardet==3.0.4
    colorama==0.4.4
    colorlog==4.8.0
    comtypes==1.1.7
    constantly==15.1.0
    cryptography==2.8
    decorator==4.4.0
    hyperlink==21.0.0
    idna==2.8
    ifaddr==0.1.7
    importlib-metadata==3.10.0
    incremental==21.3.0
    iniconfig==1.1.1
    keyring==23.0.1
    mypy==0.740
    mypy-extensions==0.4.3
    netifaces==0.10.9
    networkx==2.3
    numpy==1.19.5+mkl
    numpy-stl==2.10.1
    packaging==18.0
    pip==21.0.1
    pluggy==0.13.1
    py==1.10.0
    pycollada==0.6
    pycparser==2.19
    PyHamcrest==2.0.2
    pyparsing==2.4.2
    PyQt5==5.15.0
    PyQt5-sip==12.8.1
    pyserial==3.4
    pytest==6.2.3
    python-dateutil==2.8.0
    python-utils==2.3.0
    pywin32==300
    pywin32-ctypes==0.2.0
    PyYAML==5.1.2
    requests==2.22.0
    scipy==1.5.4
    sentry-sdk==0.13.5
    setuptools==49.2.1
    Shapely==1.7.1
    sip==4.19.24
    six==1.12.0
    toml==0.10.2
    trimesh==3.2.33
    Twisted==19.10.0
    typed-ast==1.4.2
    typing==3.7.4
    typing-extensions==3.7.4.3
    urllib3==1.25.6
    zeroconf==0.24.1
    zipp==3.4.1
    zope.interface==5.3.0

    For some of these modules, it is going to be easier to use a wheel from https://www.lfd.uci.edu/~gohlke/pythonlibs/ instead of pip.

     

    Unless I forgot something (which is entirely possible), you should then be able to run Cura from source by going into the Cura folder and running python cura_app.py

    Thanks! That seems the way to go for me. I'll update here when I get the time to do everything and get it working. 

    • Like 2
    Link to post
    Share on other sites

    Posted (edited) · How to contribute to the Cura Project
    17 hours ago, ahoeben said:

    Check out the Cura and Uranium and libCharon repositories in separate folders

    Could you please clarify what you mean by Check out? Does that mean download, unzip and put in those folder or something else. I am a little new so I am slightly confused to such jargon. Additionally, what do you mean by PYTHONPATH? For the record, I use Miniconda. I have created a VEnv thus far and have installed all those libraries (phew!). Finally, how would I make changes. Would I download the front end Python scripts and make the edits, then submit a pull request. I am pretty excited and can't wait to start some dev work!

    Edited by LordHokage
    Don't @ me.
  • Link to post
    Share on other sites

    Posted · How to contribute to the Cura Project

    If you want to contribute to Cura, you are going to have to get to know "git", a version management system. There are many tutorials on youtube about how to use git. There is a nice integration into Windows Explorer called "TortoiseGIT", though some developers frown on some of the simplifications and limitations it implies. Many IDEs have git functionality integrated. I use a combination of tortoisegit and the command line git.

     

    The workflow is that you "fork" the repository on github into your own account, then "git clone" that onto your local machine. Now you can make changes, though it is best to make those changes into a new "branch". One branch per feature/fix. Once you have confirmed the fix/feature to work for you locally, you "commit" the changes locally, and then "push" them to your forked repository on github. From there, you can make a "pull request", which is a request to the Ultimaker devs to have a look at the changes you made to your repository and "merge" (or "pull") them into the main repository. Once you looked at one or two youtube videos about git workflows, the terms in quotes will start to look familiar.

     

    The PYTHONPATH is an environment variable like PATH, which points to (additional) folders where Python looks for modules.

    • Like 1
    Link to post
    Share on other sites

    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now
     Share

    • Our picks

      • Here it is. The new UltiMaker S7
        The UltiMaker S7 is built on the success of the UltiMaker S5 and its design decisions were heavily based on feedback from customers.
         
         
        So what’s new?
        The obvious change is the S7’s height. It now includes an integrated Air Manager. This filters the exhaust air of every print and also improves build temperature stability. To further enclose the build chamber the S7 only has one magnetically latched door.
         
        The build stack has also been completely redesigned. A PEI-coated flexible steel build plate makes a big difference to productivity. Not only do you not need tools to pop a printed part off. But we also don’t recommend using or adhesion structures for UltiMaker materials (except PC, because...it’s PC). Along with that, 4 pins and 25 magnets make it easy to replace the flex plate perfectly – even with one hand.
         
        The re-engineered print head has an inductive sensor which reduces noise when probing the build plate. This effectively makes it much harder to not achieve a perfect first layer, improving overall print success. We also reversed the front fan direction (fewer plastic hairs, less maintenance), made the print core door magnets stronger, and add a sensor that helps avoid flooding.
         

         
        The UltiMaker S7 also includes quality of life improvements:
        Reliable bed tilt compensation (no more thumbscrews) 2.4 and 5 GHz Wi-Fi A 1080p camera (mounted higher for a better view) Compatibility with 280+ Marketplace materials Compatibility with S5 project files (no reslicing needed) And a whole lot more  
        Curious to see the S7 in action?
        We’re hosting a free tech demo on February 7.
        It will be live and you can ask any questions to our CTO, Miguel Calvo.
        Register here for the Webinar
          • Like
        • 10 replies
      • UltiMaker Cura 5.3.0-Alpha 🎄 Tree Support Spotlight 🎄
        Are you a fan of tree support, but dislike the removal process and the amount of filament it uses? Then we would like to invite you to try this special release of UltiMaker Cura. Brought to you by our special community contributor @thomasrahm
         
        We generated a special version of Cura 5.2 called 5.3.0 Alpha + Xmas. The only changes we introduced compared to UltiMaker Cura 5.2.1 are those which are needed for the new supports. So keep in mind, this is not a sneak peek for Cura 5.3 (there are some really cool new features coming up) but a spotlight release highlighting this new version of tree supports.  
          • Like
        • 16 replies
      • New here? Get ahead with a free onboarding course
        Hi,
         
        Often getting started is the most difficult part of any process. A good start sets you up for success and saves you time and energy that could be spent elsewhere. That is why we have a onboarding course ready for
        Ultimaker S5 Pro Bundle, Ultimaker S5, Ultimaker S3 Ultimaker 2+ Connect.   
        They're ready for you on the Ultimaker Academy platform. All you need to do to gain access is to register your product to gain free access. 
        Ready? Register your product here in just 60 seconds.
          • Like
        • 14 replies
    ×
    ×
    • Create New...