I'm wondering if I'd be able to contribute on the development side. I'm self-taught in programming and have used VB6, C, C++ and Python. I've written small GUI and console programs, though my largest was a small company timesheet system with VB6. My C++ experience is with C++98 and mainly Dev C++. I have no Qt experience. I have never been part of an organised development team or used Github etc. I work daily with CAD so have a good idea of what is useful in tools/functions.
I'm wondering how likely it is that I could quickly master what is necessary to contribute to LibreCad or would exeperienced devs think I may need to play about with C++11 and Qt for a quite a while before plunging in?
On getting the tools, the LibreCad GitHub page says
"LibreCAD is written in C++11 and now requires at least Qt 5.2.1."
The QT download page seems to have changed since the above was written and i couldn't find at "view all downloads" link but did find my way to some offline installers. However, only 5.12 installers or 5.15 & 6.24+ sources are listed. Even in the archive, there is no 5.2.1+ package. Can anyone advise?
Lastly, would I be correct in thinking that I need a Mingw installation(windows user), QT files and Qt Creator? Thanks for any advice.
what you have found in the build instructions, Qt 5.2.1 is just the minimum required at the time the article was written/updated.
As I haven't installed Qt on Windows for a while, it needed some investigation whats going on with Qt.
It seems they radically changed their open source politics back in 2020.
Another reason to finish with LibreCAD 2 and move on to LibreCAD 3.
In past there were multiple offline installers, supporting various tool chains like MinGW and different Microsoft Visual C++ versions.
We always used MinGW tool chain because it fits better with open source than Microsoft products.
My guess for the latest Windows Qt offline installer which should already contain MinGW is there:
https://download.qt.io/archive/qt/5.12/5.12.12/ Possibly you have to create a Qt account to download, but at least to install I think.
It is a 3.7G package which should contain all you need, Qt-Creator, QMake and MinGW. No need to download the Qt source code.
All you need extra is Boost, the wiki says 1.60, but there are also newer versions available.
I wouldn't use the latest one, let experienced developers test if our code builds with it.
To my knowledge 1.70 should work (https://boostorg.jfrog.io/artifactory/main/release/1.70.0/source/boost_1_70_0.zip)
You just have to unzip to your preferred location and apply paths in custom.pri.
There is not so much C++11 contained in LibreCAD code, most code is mature and therefore C++98.
Just when you see something strange, e.g. with variable initialization or for() loops, have a look at a C++11 reference about the new features.
Hard to say how fast you can become a master in LibreCAD Fu. You must not understand the whole code base to start. But you must understand the specific concepts related to a modification and estimate possible side effects.
Browsing open and closed pull requests may help to find code locations of interest and show changes concerned to specific topics. See https://github.com/LibreCAD/LibreCAD/pulls?q=is%3Apr
What you need first is a GitHub account and fork LibreCAD. Then you have your personal playground to explore, test and share your work in case you need help. When you have any contributions they can be merged from your fork into the main repository easily. Important is to work on git branches and not on master branch to avoid conflicts.
See https://docs.github.com/en/get-started/quickstart for the recommended GitHub workflow.
To work with git you need at least Git for Windows (https://gitforwindows.org/).
I also recommend a GUI for Git. There is GitHub Desktop (https://desktop.github.com/) which possibly also helps with GitHub. I can't say, because I never used it, I have TortoiseGit (https://tortoisegit.org/) on Windows.
As mentioned above we are about to finalize LibreCAD 2 code base and concentrate forces on LibreCAD 3.
The concepts are totally different and LibreCAD 3 is no longer dependent on Qt. We use it currently, but because of its modularization concept we can use many components with other GUI frameworks too.
So I can't say yet how long we'll accept contributions to LibreCAD 2 code.
On the other side LibreCAD 3 is still in a state where it is not so easy for inexperienced contributors compared to LibreCAD 2 code. See https://github.com/LibreCAD/LibreCAD_3/wiki/Building
investing less than half an hour into Search function can save hours or days of waiting for a solution
Many thanks LoB, that is a very comprehensive reply with much food for thought. If LibreCad 2 & 3 are radically different, is it better to wait a while and try to pick up v3 concepts, for example.
I can see that there's much I'm ignorant on. Thanks for the GitHub introduction link - I'm not familiar with terms like forking and pulling :-)
Thank you again for the reply and links - it's plenty enough to consider for now. If I don't feel up to contributing to the base code, perhaps I could be more useful on the scripting side when v3 is released.
7/ finally create you account on github, create a sandbox repositiory, manage changes on 1 or several text files. consider making contributions (future role for LibreCAD) and manage this contributions as Armin for LibreCAD.
The good thing is: even if your modification breaks LibreCAD code, the previous working version is available for ever. So there will not be any modification that cannot be undone.
I also always think of Coding. Right now I'm trying to get my first build of LibreCAD 3. Have you gotten through that process recently? If so perhaps you could share your experience. I work mostly on Ubuntu-Debian but have an alternate Boot into Windows.
This weekend I attempted the process without a build ever taken place. Using cmake-gui I did get good feedback screen which I could share if you are interested.
I have a build of LibreCAD 2 but I plan to code in Lua with LibreCAD 3
Hello Joe, deep apologies for replying so late. I'm afraid that I haven't had a go at building LibreCad or get into developing. I don't have much time out of the day these days after working and commuting, but I admire those like yourself that grapple with compilation. I'm afraid I have nothing useful to tell you on that score but by the sounds of it, you're doing fine.
Myself, I've got a bit stuck on Lua tables - I'm familiar with arrays but tables are just...wierd.