Results 1 to 8 of 8
Enjoy an ad free experience by logging in. Not a member yet? Register.
- 07-26-2013 #1
- Join Date
- Jul 2013
I want to contribute to Linux development ; don't know where to startI
I've been using linux for some years now and I would really like to be part of the community that develops linux. I have a little background on programming (some PHP and very little C++). At the moment I'm trying to learn Bash Scripting. Can anybody here be my mentor or at least point me to the things that I need to learn to contribute to the development community? I am primarily interested in developing applications.
One more thing. I am not that type of person that reads tons of books just to understand a concept. I'm more into practical approach to learning. I prefer to code as soon as possible then understand how things work as a progress.
Any help would be greatly appreciated.
I also have github account.
- 07-27-2013 #2
- Join Date
- Dec 2011
- Turtle Island West
Perhaps the answer is in the ancient hackers adage:
Scratch your own itch.
What peeves you off the *most* about something on your system? Go after that. Get the code. Compile it. Dig through it. Find where you can fix it. Find the mailing list/forum/etc for it and join it. Talk to other people just like you and figure out how to best improve things.
And hey, you joined Linux Forums, so that's a damn good start.
Peace and Cheer.
- 07-27-2013 #3
- Join Date
- Nov 2008
- Tokyo, Japan
Once you figure out what you want to do, the absolute MOST important thing is to compile the code for yourself and get it running on your system. Once you do that, you can start making changes, re-compiling, and seeing if you accomplished what you wanted to do.
Also keep in mind, if you want to contribute to something very large, and something that is depended upon by millions of people, (like the Linux kernel, or Gnome), the maintainers won't let you contribute anything unless you've had a long discussion and convinced them that your ideas are good, which you might not be able to do. It's hard not to be offended, but that's what usually happens.
As much as you can, try to make your work a plugin or optional add-on, rather than a fork or a patch.
- 07-27-2013 #4
RE: 'try to make your work a plugin or optional add-on, rather than a fork or a patch'
This advice is nothing unless stated why? The guy may not even know what is the meaning of these concepts.
plug-in - Df.: adding specific feature to existing software app
add-on - Df.: enhancing a perviously developed software (in different ways, not necesserily the functionality - it may be performance, it may be reliability, it may be flawless operation on the net, etc.)
fork - Df.: taking source code from one software and using it to develop new software
patch - Df.: adding libraries and other subsidiaries to fix a problem, bugs, etc.
Honestly speaking I don't see why should I not use patches (to the kernel) if I am missing a driver and the OEM provides the opportunity to patch the kernel and fix the problem. Why should I develop plug-ins and add-ons to replace the driver (while not knowing whether there is any feasibility to do so).
Why should I enhance the movie player source code instead of 'patching the app' with the codec concerned.
It depends on what you are doing. Every single approach of the above said is determined by the Task and the Assignment, not by the personal preferences and advises (from people with different knowledge and skills, which automatically invalidates the advise). Anyway.
A question: why no starting with structuring the software knowledge and skills and unifying the concepts of the various authors. The arrangement of the definitions may save a lot of time and efforts subsequently, and may avoid some cross-cultural misunderstanding during the development.
There is a famous linguistic joke:
- By the way the language of Brazil is Portuguese
- Then why I am learning Spanish?
- 07-28-2013 #5
- Join Date
- Jul 2013
thanks for all your inputs about improving existing applications / kernel. Those were great inputs. But should I go and dive right into learning a certain programming language (let's say Python) or should I study something else first such as Bash or system structures?
- 07-28-2013 #6
I see no reason to dance around an issue getting yourself ready for it. Read a C primer (there's about 15 million of them with a simple google search) - that'll probably take you a couple hours - at most. Download source, read it, modify, compile, try again. If you have questions, ask here, ask somewhere else, ask around. If you can't figure a particular nuance out about a particular language, chances are the question exists somewhere, such as stackoverflow.com.
Read -> Understand -> Modify (rinse and repeat)
There's no use in one person (probably who will have a decently particular realm of interest) being a mentor, find what you want to modify and do it, if you have questions, there's always people around who will help you.
So with that said, step 1: Figure out what you want to do. A particular program, toolset, library, application, etc. A generic developer isn't going to specialize in all things, people usually have something they specialize in, so find out what you want that to be. If there's nothing in specific, pick something out. Pick a program where you'd like to add functionality or a feature to. If you have no particular interest one place is as good as another, but you still need to pick one. Though you're being too vague at the moment.
- 07-28-2013 #7
- Join Date
- Jul 2013
I see. . . Since I would like to create business applications, the best route that I could probably go is to look for a particular application using a language I'm familiar with then practice by modifying that application then eventually create my own. What do you think guys?
- 07-28-2013 #8
RE: Since I would like to create business applications, the best route that I could probably go ...
... is to learn one of the following languages: DL/B DX, Databus, PL/B, Cobol, Java, Visual Basic
... & the following database management systems (DBMSs): SQL, MySQL, Oracle
Obviously there is nothing that you can do in Cobol for example that you cannot do in C++, but the clients will neither have the C++ compiler, nor the knowledge and skills of how to 'place' your developments on their systems.
Python is not a bad idea ... if you are going on a casting for Indiana Jones IV.
For PL/B see this: J15
For C++ see this: http://www.open-std.org/jtc1/sc22/wg...2005/n1905.pdf
The efforts to learn Python equals one PL/B plus one C++ plus ... the assemblers of i7 and Phenom.
IMV one PL/B and one C++ and one DBMS is more than enough, but this decision is personal.
Last edited by user-f11; 07-28-2013 at 03:25 PM. Reason: syntax