Jump to content

How to contribute to the Cura Project


LordHokage

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
    • Our picks

      • Introducing Universal Cura Projects in the UltiMaker Cura 5.7 beta
        Strap in for the first Cura release of 2024! This 5.7 beta release brings new material profiles as well as cloud printing for Method series printers, and introduces a powerful new way of sharing print settings using printer-agnostic project files! Also, if you want to download the cute dinosaur card holder featured below, it was specially designed for this release and can be found on Thingiverse! 
          • Like
        • 10 replies
      • S-Line Firmware 8.3.0 was released Nov. 20th on the "Latest" firmware branch.
        (Sorry, was out of office when this released)

        This update is for...
        All UltiMaker S series  
        New features
         
        Temperature status. During print preparation, the temperatures of the print cores and build plate will be shown on the display. This gives a better indication of the progress and remaining wait time. Save log files in paused state. It is now possible to save the printer's log files to USB if the currently active print job is paused. Previously, the Dump logs to USB option was only enabled if the printer was in idle state. Confirm print removal via Digital Factory. If the printer is connected to the Digital Factory, it is now possible to confirm the removal of a previous print job via the Digital Factory interface. This is useful in situations where the build plate is clear, but the operator forgot to select Confirm removal on the printer’s display. Visit this page for more information about this feature.
          • Like
        • 0 replies
    ×
    ×
    • Create New...