FOSS Cell at MEC aims at bringing out new coding talents and open source enthusiasts to come forward and contribute to the world of Open Source and to bring back the FOSS culture at MEC. The club is inspired by FOSSMeet held at MEC 7 years ago in 2010 at MEC. Also it aims in promoting FOSS culture at the college level so as to make the students aware of the changing trends in science and technology and to equip students to cope up with highly demanding jobs. One of the main motives of FOSS MEC is to introduce and train people in the field of open source and make students ready to face the growing challenges in the software world.
- To give exposure in the open source community
- To nurture your coding talents
- To incorporate the concepts of open source into other fields such as IoT
- To establish professional skills in the field of Computer Science for better job prospects.
Open-source software (OSS) is computer software with its source code made available with a license in which the copyright holder provides the rights to study, change, and distribute the software to anyone and for any purpose. Open-source software may be developed in a collaborative public manner. According to scientists who studied it, open-source software is a prominent example of open collaboration. You can take software and change it according to your own wish.
Colleges may teach you programming, but not developing software. Companies, however, are looking for developers. So how are people selected by big corporations?
...beginner, how would I be able to cope up with being a software developer? Isn't it too difficult? Can I handle something like that?"
This is the exact mindset you should get rid of! The thing is its not that difficult and FOSS is not all about programming. There are other things except programming to do in FOSS related projects. If you're a very good content writer then you could write manuals on how to use projects and other documentation related tasks. And the developing part, its not that difficult at all! There are a lots of people to help you if you get stuck.
This part is for people who are unfamiliar with LINUX commands, if you have basic knowledge of Linux and know how to get around the system, feel free to skip this part.
Basically there is no Open Source without linux, for becoming a developer the prime skills required for you is using the command line, that is the black box you type commands in. You can develop using windows too but it is most useful to have a Linux based system. Learn basic Linux Commands from here before proceeding.
Feel free to follow any of the course here.
Command Line Codeacademy - https://www.codecademy.com/learn/learn-the-command-line
Command Line Codeacademy - https://www.codecademy.com/en/courses/learn-the-command-line/lessons/navigation/exercises/your-first-command
Command Line - https://www.learnenough.com/command-line-tutorial
GitHub is where people build software. More than 21 million people use GitHub to discover, fork, and contribute to over 56 million projects. It is in short a social network for programmers!
Now lets get into something technical, the website you're reading this on is GitHub. You ask what is github? Official statement is that "GitHub is a web-based Git or version control repository and Internet hosting service. It offers all of the distributed version control and source code management (SCM) functionality of Git as well as adding its own features. It provides access control and several collaboration features such as bug tracking, feature requests, task management, and wikis for every project"
So now lets put into simple words, Github is a platform similar to Google Drive, but instead of photos and files you upload your Software projects here, if you're developing a Operating System or Website you upload the Source Code here, for safekeeping, file sharing and collaboration. You can build the same software from people all over the world with GitHub.
So your first step into becoming a software developer is to learn git and learning to use github.
Wisdom can be shared, we can only guide you on where to learn, it is your duty to make the effort to progress. We will provide you with a list of resources to learn to get into git. And I again say NEVER GIVE UP! It is your duty to learn it on your own, we are always here to help you in every step of the way.
Here is a list of to learn Git!
Learn Git Codeacademy - https://www.codecademy.com/learn/learn-git
Learn Git Video tutorials - https://www.youtube.com/watch?v=cEGIFZDyszA&list=PL6gx4Cwl9DGAKWClAD_iKpNC0bGHxGhcx
Learn Git challenges - https://try.github.io/levels/1/challenges/1
Alternative link - https://www.codeschool.com/learn/git
Actual projects can be classified into many, there are loads of Open Source Projects on all fields and all languages, but we are making a list of projects which are most prominent and has the most oppertunities.
Now you can decide what kind of project interests you by going through variety of projects given below. Before contributing to a project you have to learn to develop it by learning the languages used in developing the app.
Choose Wisely!
Task 1: Your first task is to select a suitable technology that you will learn and pursue, that you have interest in and interested in contributing to FOSS. You should select a suitable field from below and let us know in our slack general form.
You are always encouraged to search up on items you find confusing and do research and find out whether it is suitable for you to learn. This is the age of information after all. All your doubts are a click away
A scripting language is a programming language that employs a high-level construct to interpret and execute one command at a time. In general, scripting languages are easier to learn and faster to code in than more structured and compiled languages such as C and C++. It is always adviced to learn a scripting language because it has a large scope of use.
-
Python being one of the most popular scripting languages is used over a variety of platforms for a variety of purposes ranging from Web-development to Machine Learning and much more..
Resources
-
Learn the hard way - https://learnpythonthehardway.org/
-
Codecademy- https://www.codecademy.com/learn/python
-
-
A dynamic, open source programming language with a focus on simplicity and productivity. It has an elegant syntax that is natural to read and easy to write.It is the most used language as per Github.
Resources
-
Learn the hard way- https://learnrubythehardway.org/
-
Codecademy- https://www.codecademy.com/learn/ruby
-
-
Perl is a programming language designed especially for text processing.It possesses C like syntax.
Resources
-
Learn Perl- https://learn.perl.org/
-
Perl E-Book- https://www.perl.org/books/beginning-perl/
-
Shell scripts allow us to program commands in chains and have the system execute them as a scripted event, just like batch files.Scripting allows you to use programming functions – such as ‘for’ loops, if/then/else statements, and so forth – directly within your operating system’s interface.
-
Learn Shell- http://www.learnshell.org/
-
Bash Academy- http://www.bash.academy/
Web based projects can be anything to a website like Facebook, youtube, github. Or something like our college website, our attendance viewer are all web based projects but are not open source.
Web based projects has two parts Frontend and Backend, read more about it here, https://www.pluralsight.com/blog/film-games/whats-difference-front-end-back-end
Frontend is basically what you see, the colors, the animations, the wonderful pictures, people with creativity basically does this. It is the most easy of all the projects and the scope and amount of projects for frontend development is very high.
-
HTML is the standard markup language for creating Web pages. HTML stands for Hyper Text Markup Language. HTML describes the structure of Web pages using markup. Resources
-
Free Code Camp - https://freecodecamp.com/
-
Codecademy - https://www.codecademy.com/learn/web
-
W3school - https://www.w3schools.com/html/
-
-
CSS stands for Cascading Style Sheet . It is a style sheet language used for describing the presentation of a document written in a markup language. Basically CSS gives life and colour to the website.
-
Free Code Camp - https://freecodecamp.com/
-
Codecademy - https://www.codecademy.com/learn/web
-
W3school - https://www.w3schools.com/html/
-
JavaScript is a full-fledged dynamic programming language that, when applied to an HTML document, can provide dynamic interactivity on websites.
* Codecademy - https://www.codecademy.com/learn/javascript
* W3school - https://www.w3schools.com/js/default.asp
-
Bootstrap is a pre-defined CSS file. It contains commonly used Web-elements predefined as Classes.
-
Free Code Camp - https://freecodecamp.com/ (An Open Sourced Learning Website)
-
W3school - https://www.w3schools.com/bootstrap/
-
-
GIMP (GNU Image Manipulation Program ) is a freely distributed program for such tasks as photo retouching, image composition and image authoring.
- Official Tutorial- https://www.gimp.org/tutorials/
*Youtube
When you're building a website, you always need a similar set of components: a way to handle user authentication (signing up, signing in, signing out), a management panel for your website, forms, a way to upload files, etc.
Luckily for you, other people long ago noticed that web developers face similar problems when building a new site, so they teamed up and created frameworks that give you ready-made components to use.
Your website or dynamic web application is a sum of layers—structure, design and content, and functionality. The technology and programming that “power” a site—what your end user doesn’t see but what makes the site run—is called the back end. Consisting of the server, the database, and the server-side applications, it’s the behind-the-scenes functionality—the brain of a site. This is the ecosystem of the database manager and the back-end developer.
-
If you're already knowledgeble in Python and interested in Web Development, I suggest you start with learning Django or Flask, Django is a free and open source web application framework, written in Python Instagram, National Geographic, Mozilla, Pintrest are some websites which run on django. Flask is a lighter version of Django
-
DjangoGirls: https://tutorial.djangogirls.org/en/
-
Django-Video- Tutorials: https://www.youtube.com/watch?v=qgGIqRFvFFk
-
Official-Documentation-Django: https://docs.djangoproject.com/en/1.10/intro/tutorial01/
-
Flask-Documentation: https://www.tutorialspoint.com/flask/
-
Flask-Doc: https://hackr.io/tutorials/learn-flask
-
-
Rails like Django is also a free and open source web application but written in Ruby. Codecademy,twitter(old version),plated,github are some sites build over Rails.
Links
-
Official Rails Documentation -http://guides.rubyonrails.org/
-
Ruby on Rails Book by Micheal Hartl -https://www.railstutorial.org/book/frontmatter
-
Code School -http://railsforzombies.org
-
-
PHP is a widely used open source scripting language.It is mostly used for web development and can be embedded into HTML.
Links
-
Learn PHP -http://www.learn-php.org/
-
Tutorialspoint- https://www.tutorialspoint.com/php/
-
W3school -https://www.w3schools.com/php/
-
-
Node.js is an open source, cross-platform runtime environment for developing server-side and networking applications. Node.js also provides a rich library of various JavaScript modules which simplifies the development of web applications using Node.js to a great extent.
Links * www.freecodecamp.com/
* https://www.tutorialspoint.com/nodejs/index.htm
* Youtube Tutorials
- Rocket.rs is a framework build over RUST programming language.Being still in its infancy,Rocket is less popular and still under development.
Links
-
Structured Query Language (SQL) is a standard computer language for relational database management and data manipulation. SQL is used to query, insert, update and modify data. SQL is needed for all Backend related activities
Links
(Hey there, is it getting a bit too much to take it in? Have a cup of water, take a deep breath, and come back)
Although any programmer may find himself content to writing code at breakneck speeds using Python, Ruby and the more "modern" languages, his/her repertoire is never complete without the understanding and mastery of the C/C++ family of languages. When dealing with C/C++, you are very nearly at the bare-metal level; the operating system libraries and all the intricacies of the hardware lay open to you. Regardless of your area of interest, some familiarity with these languages will go a long way in improving you knowledge of computers as a whole.
Now you may have learnt and even be good at C/C++ then why wait, jump into OS development. You can start by familiarising GNU/Linux system (We may use Ubuntu or Mint and develop for Debian).Learn some basic commands like echo,ls,mv... Now the interesting part, try to code them in C, these simple programs they are called the core and officially named core-utils.So do it and you are ready for an OS to come.
Resources
- www.tutorialspoint.com/cprogramming
- en.m.wikibooks.org/wiki/C_Programming
- www.cprogramming.com
- www.cppreference.com (For reference of commands, header files, etc)
- http://codeforces.com/problemset?order=BY_SOLVED_DESC (For coding challenges after learning C/C++)
- https://github.com/coreutils/coreutils
Modern computers are becoming more and more intelligent as time passes. Most of this is/can be attributed to machine learning. The definition of machine learning is that it is "a method to achieve artificial intelligence (AI) that gives computers the ability to learn without being explicitly programmed."
Machine learning is an essential skill in most of IoT applications that are developed today. What more to say, it is built into most of the applications that we all use everyday! Learning how to teach your machine to learn will be an important asset in your programming career. There are thousands of machine learning projects.
Some references for Machine Learning is provided below:
Start from scratch: http://machinelearningmastery.com/start-here/ http://neuralnetworksanddeeplearning.com/
Learn Python below:
Java is a programming language and computing platform first released by Sun Microsystems in 1995. There are lots of applications and websites that will not work unless you have Java installed, and more are created every day. Java is fast, secure, and reliable.
Java is a platform Independent: – Platform independent means java can run on any computer irrespective to the hardware and software dependency. Means Java does not depend on hardware means what type of processor , RAM etc.
Java made easy : http://www.java-made-easy.com/java-for-beginners.html Udacity : https://www.udacity.com/learn/java
Building an Android app comes down to two major skills/languages: Java and Android. Java is the language used in Android, but the Android part encompasses learning XML for the design of the app, learning the concepts of Android, and using the concepts programmatically with Java.
Once you learn Java and XML (XML is really easy to get used to, and you should learn the language as you program your app rather than learning it beforehand like you would with Java), you need to learn how to connect these two using Android principles.
For a total beginner, I recommend learning Java. There are no shortcuts here, you just have to learn Java.
Now for a total beginner, I recommend YouTube tutorials to get the basic idea of how to install Eclipse (the Integrated Development Environment, or IDE, for Java) and the Java Development Kit (JDK). But after learning the very basics, don't continue on YouTube tutorials, 'cause they don't give you ideas on the important concepts.
Eclipse and android studio are the IDEs recommended for a beginner.
- You need to learn Java, there is no way around it
- Android part encompasses learning XML for the app design, understanding concepts of Android and using said concepts programmatically with Java
- Beginners should probably use an IDE (We prefer Android Studio over Eclipse)
- Building your first app is time-consuming: it won't happen overnight. This is not a project for those looking for a fast result
- When stuck on a problem (which will inevitably happen), turn to Stack Overflow. If no luck there, look to the Android Subreddit where there is a helpful community
For more details on android studio: https://developer.android.com/studio/index.html everything from setting up to using android studio is documented here.
So learn java and more java then android then app creation, it's a long way.Well actually not but if you think so , but have an excellent idea for an app then why wait for java you can use MIT app inventor ,CURIOUS.. Start here : http://appinventor.mit.edu/explore/ai2/beginner-videos.html
Google Code-in is a contest to introduce pre-university students (ages 13-17) to open source software development. Since 2010, over 3200 students from 99 countries have completed work in the contest.
Because Google Code-in is often the first experience many students have with open source, the contest is designed to make it easy for students to jump right in. Open source organizations chosen by Google provide a list of tasks for students to work on during the seven week contest period. A unique part of the contest is that each task has mentors from the organization assigned should students have questions or need help along the way.
Open source organizations that have participated in a previous Google Code-in or Google Summer of Code program are eligible to apply to be mentor organizations for Google Code-in. Mentor organizations create hundreds of tasks for students to work on during the contest period and are responsible for assigning mentors to help students with questions and to review students’ work on the tasks.
Some organisations mentoring in Google Code-In
Zulip - https://zulip.org
FOSSASIA - http://fossasia.org
Wikimedia - https://wikimediafoundation.org/
Metabrainz Foundation - https://metabrainz.org/
Drupal - https://www.drupal.org/ etc...
Google Summer of Code is a global program focused on introducing students to open source software development. Students work on a 3 month programming project with an open source organization during their break from university.
Since its inception in 2005, the program has brought together 12,000+ student participants and 11,000 mentors from over 127 countries worldwide. Google Summer of Code has produced 30,000,000+ lines of code for 568 open source organizations. As a part of Google Summer of Code, student participants are paired with a mentor from the participating organizations, gaining exposure to real-world software development and techniques. Students have the opportunity to spend the break between their school semesters earning a stipend while working in areas related to their interests and also pay $5500 for participating.
In turn, the participating organizations are able to identify and bring in new developers who implement new features and hopefully continue to contribute to open source even after the program is over. Most importantly, more code is created and released for the use and benefit of all.
There are a plethora of projects and programming languages to dive into that we may have not mentioned here. So if you are unhappy in not finding swift-Apple here, don't worry! Keep us updated. Therefore, to begin with, it would be highly recommended to choose among the stated options above. Once you feel confident enough to put on the coder's hat, feel free to explore all that FOSS has to offer you even more (The Hat is virtual though).
Hope you have cleared your elementary doubts. Congratulations for going through this tutorial, all the way till the bottom of the page. We look forward to code together, for a better FOSS community.
Thank You !