New member who needs help/advise

14 replies [Last post]
zangisharp
Offline
Joined: 01/08/2019

Hello community,

I'm new here and just wanted to start a topic because I need some help/advise from you guys.

I recently joined the Free software movement and tried 2 100% free distros, PureOS and Trisquel I had some issues with PureOS and didn't want to work properly so I tested Trisquel and by far it is the most stable distro! I had some graphic display issues (1024x728 eurrk :p) but fixed them by upgrading to the latest Linux-libre kernel 4.20, so now I have a full HD display yaaayy!! :).

I started programming in C from 2008 to 2012 after that I switched to C# because in my country there was no jobs for C programmers.
so after switching to GNU/Linux I wanted to start contributing in some projects or starting new ones and all I found is C, Python, Vala...

Over the years I used some PHP, Java, JavaScript, Python but I think they are complex and not readable at all, I think people should stop making other languages its stupid lol... if I have to choose I'll go C or C# because by far they are the most powerful and readable programming language ( IMHO :) ).

I don't want to start a debate about programing languages..., so I'll come to the questions :p :

- Im looking for books to re-learn C Programming language.
- Im looking for GNU Libraries and GTK+ books.
- Im looking for GNU/Linux books (learning commands, file systems, bash scripting etc...).
- Im looking for some system administration books( for setting up / securing email servers, web servers etc.. ).
- What IDE do you guys use for programming in GNU/Linux? (I tried to install Gnome Builder but it is not working for Trisquel :( ).
- Is it worth it to re-learn C or stay with C#? (Microsoft released .NET Core under MIT so it is open source now...)
- Also I tried to write a GUI library for .NET Core in C# (you can find an example here https://github.com/younesbenmoussa/coreui) I use SkiaSharp and OpenTK... but its a huge project its like rewriting GTK+ from scratch... I don't know if it is worth it maybe by learning C/GTK+ I can help in other Gnome projects or others free software projects, what do you guys think?

I have many others questions maybe Ill ask them later.

Thanks guys!

aloniv

I am a translator!

Offline
Joined: 01/11/2011

Avoid C# due to Microsoft's patents. Vala might also be problematic as it is similar to C#.

Magic Banana

I am a member!

Offline
Joined: 07/24/2010

http://write.flossmanuals.net/command-line/introduction/ is a good introduction for the command line. Just be aware that the subsection entitled "STANDARD FILES" is definitely not "BASICS". It should be in "ADVANCED". If you prefer paper, you can buy the book from the FSF shop: https://shop.fsf.org/books-docs/introduction-command-line

For a comprehensive documentation about Bash scripting, there is http://tldp.org/LDP/abs/html/

I mostly program in C++ using the one true editor: Emacs. :-)

C# is indeed risky, although Microsoft is showing some good will these days: https://www.fsf.org/news/fsf-statement-on-microsoft-joining-the-open-invention-network

Java is very similar, more portable and somewhat less risky patent-wise.

zangisharp
Offline
Joined: 01/08/2019

I didn't know about Microsoft patents, thanks guys.

For Java I think Oracle made their SDKs and/or Java runtime paid... so I guess I'll go C and C++ for OOP (I remember having fun playing with C).

@MagicBanana, thanks for the links!!!

loldier
Offline
Joined: 02/17/2016

There's NetBeans with Apache license.

https://en.m.wikipedia.org/wiki/NetBeans

Magic Banana

I am a member!

Offline
Joined: 07/24/2010

OpenJDK is the official reference implementation of Java SE since version 7. Is is licensed under the terms of the GNU GPL. Version 9 is in Trisquel 8's repository: "openjdk-9-jdk".

aloniv

I am a translator!

Offline
Joined: 01/11/2011

My previous post referred to issues concerning patents.

From a practical standpoint, I noticed that GTK/Qt applications written in C/C++ and not depending on the latest libraries tend to work best (if you create an application, it's best to create both a GTK and a Qt version for optimal compatibility with GNOME/KDE desktops). Some applications do in fact provide both GTK and Qt versions - Wireshark is one such example.

Python applications might work fine (and they should look fine as well as you can use Qt/GTK bindings) as long as they don't require newer libraries than those packaged by the distributions (many applications assume the user will install Python packages from repositories not provided by the distro via software such as pip which is problematic as these repositories include non-free software and the newly installed packages might also conflict with the distro's packages). Other languages such as Perl also suffer from the same external repositories issue.

It's probably also best to make sure the package works with different Python branches (e.g. 2.7 and 3.6) for best compatibility.

Java I would personally avoid as it's interface does not look native on GNU/Linux, it is resource intensive as well (due to using a virtual machine) compared to C/C++ Qt/GTK apps and Java applications take a long time to load.

Java doesn't seem particular popular on GNU/Linux either (very few apps require it - Jitsi uses it but there are GTK/Qt alternatives to it and it is only an optional dependency of some LibreOffice and LaTeX packages).

zangisharp
Offline
Joined: 01/08/2019

@aloniv thanks for your post!

I find most of GNU/Linux apps, libraries,tools etc... are written in C/GTK C++/QT, I think it make sense to work with them for GUI / CLI programs.

How about the server side? What do you recommend for making restful apis or web development in general and databases? I was mainly using ASP.NET Framework and recently ASP.NET Core and Microsoft SQL Server for databases, but as said in the previous posts there is issues concerning patents and I don't use that system anymore.

I recently bought a new desktop with some decent hardware config ( AMD Ryzen 8Cores/16 Threads, 24Go of RAM ) and I'm planing to host my own mail and web server and don't use anything that is not free software.

I find some good alternatives like :

Web Development: PHP/Laravel, Python/Django, Ruby on rails
Databases : PostgreSQL, MySQL, MariaDB.

I never worked with those frameworks, if someone can give me an advise or feedback about them?

Thank you.

aloniv

I am a translator!

Offline
Joined: 01/11/2011

I don't know about the server side, sorry.

zangisharp
Offline
Joined: 01/08/2019

Thanks, you guys helped me to get my hands on.

zangisharp
Offline
Joined: 01/08/2019

Hi guys,

A little update about using C# and .NET Core in GNU/Linux.

I found this article "About Microsoft’s patent licence for .NET core" link here -> http://endsoftpatents.org/2014/11/ms-net/
Also "Microsoft Patent Promise for .NET Libraries and Runtime Components" link here -> the https://raw.githubusercontent.com/dotnet/corefx/master/PATENTS.TXT
.Net Core license -> https://raw.githubusercontent.com/dotnet/core/master/LICENSE.TXT

So if I understand as a developer/user I can use C# .Net Core without any patents issues.

Magic Banana

I am a member!

Offline
Joined: 07/24/2010

The conclusion behind your first link (including the emphasis on "users") is:
This patent licence looks fine for users of the code published by Microsoft, but its protections disappear very quickly for those who wish to modify or re-use the code.

Here is also FSF's analysis of the Microsoft's "Community Promise" (the one you are referring to): https://www.fsf.org/news/2009-07-mscp-mono

The title sums it up: "Microsoft's Empty Promise".

zangisharp
Offline
Joined: 01/08/2019

@Magic Banana : Thanks for the link.

So I have a question what is the point of making a programming language/frameworks/runtimes free software like MIT/X11 if there is patents issues?

I mean how can I be sure that a programming language X or Y is safe for me?

Take this example of Python 3 -> https://docs.python.org/3/license.html (How can I be sure this is safe?)

Also PHP is the most used programming language how can I be sure there is no patents issues : https://secure.php.net/license/index.php

Also what is the difference between those programming languages and .NET Core wich is also licensed under MIT?

What other alternatives for programming languages to use?

Magic Banana

I am a member!

Offline
Joined: 07/24/2010

In a legislation that is stupid enough to accept software patents, the risk for developers is everywhere. Software patents are written to be as broad as possible and nobody really knows their boundaries until a court decides. See http://patentabsurdity.com/watch.html if you have not already. That said:

  • it is advisable to be extra-cautious with patents in the hands of companies that are hostile to free software;
  • there is little risk for users (beyond never having a next version), who may want to run free software applications written by (incautious) developers, using tools/libraries that can put them into a patent litigation.

Now, you make a confusion between copyright (that deals with what is actually written) and patents (that, in the case of software, grant a monopoly on ideas that do not even need to be implemented). Those two have almost nothing in common. Free software actually uses the copyright law. .NET Core is free software... but also patent-encumbered.

zangisharp
Offline
Joined: 01/08/2019

Now I understand the difference between copyright and patents. Thanks again :)