Sage-Code Laboratory

Openn Source

Open-source engineering (OSE), is a software engineering movement that releases source code publicly. Independent developers or distributed teams can maintain public code. Contributing to open source can help you become a better software engineer by learning new skills.

There are planty of resource on YouTube to learn open source. Next we have one link but you can find more if you just search for the topic or watch next best videos listed by YouTube after you finish first video. Start here:

Tech Talk

Free software

Free software means software that respects user freedom to run, copy, distribute, study, change and improve the software. Thus, free software is a matter of liberty, and is not reffering to price. Free software is not necesarly gratis.

OSE Movement

Open source is a controversial topic. Companies are investing in open source. Monetizing open source is possible. IBM and Microsoft have invested heavily in open source. The purpose of these investments is now more clear. A very intelligent AI tool called Copilot was trained using open source code to disrupt the software production. Maybe the open source model is broken. It is definitely changing due to artificial intelligence.

OSE Process

There are many different open source development methodologies, but they all share some common characteristics. These include:

The specific process used in open source development will vary depending on the project and the people involved. However, there are some general steps that are common to many open source projects. These steps include:

  1. Inception
  2. Planning
  3. Implementation
  4. Maintenance
  5. Distribution

Inception: The first step is to come up with an idea for a project. This can be done by brainstorming, conducting research, or talking to potential users.

Planning: Once an idea has been developed, the next step is to create a plan for the project. This plan should include the project's goals, objectives, timeline, and budget.

Implementation: The next step is to implement the project. This involves writing the code, testing the code, and deploying the code.

Maintenance: Once the project is implemented, it needs to be maintained. This involves fixing bugs, adding new features, and keeping the code up-to-date.

Distribution: The final step is to distribute the project. This can be done by making the code available on a website, releasing it as a package, or hosting it on a server.

Overall, open source development is a complex process that requires a lot of collaboration and coordination. However, it can be a very rewarding process that can lead to the development of high-quality software.

Community Tools

There are many tools that can be used for project issue tracking, meetings and discussions in development communities. Some popular tools include:

GitHub Issues is a tool that allows developers to track and discuss issues in a project. Issues can be created for bugs, feature requests, or other problems. GitHub Issues also allows developers to assign issues to other developers, add comments, and vote on issues.

Trello is a tool that allows developers to manage projects using a kanban board. Kanban boards are a visual way to track the progress of a project. Trello boards can be used to track tasks, bugs, or other items.

Slack is a tool that allows developers to communicate with each other in real time. Slack can be used to send messages, share files, and have video calls.

Discord is a powerful tool that can be used to support open source projects. It can be used to communicate, share files, host meetings, and build community.

Google Hangouts is a tool that allows developers to have video calls and chat with each other. Google Hangouts can be used to discuss projects, give presentations, or just hang out.

Jira is a tool that allows developers to track and manage projects. Jira can be used to create tasks, assign tasks to developers, and track the progress of tasks.

Confluence is a tool that allows developers to create and share documentation. Confluence can be used to create wikis, knowledge bases, and other types of documentation.

Bitbucket is a tool that allows developers to host and manage code. Bitbucket can be used to create and manage repositories, track changes to code, and collaborate with other developers.

The best tool for a particular project will depend on the needs of the project and the developers involved. We preffer Discord and GitHub toolos for our open source projects

Benefits

Open source development has many benefits, including:

Open source development process is a powerful tool that can be used to develop high-quality, innovative software. It is often used to develop software that is complex or requires a lot of collaboration.

What is Discord

Discord is a voice, video, and text chat app that is used by millions of people around the world. It is popular among gamers, but it is also used by a variety of other communities, including open source projects.

Discord can be used for a variety of purposes in open source projects. It can be used to:

Sage-Code Discord server is used to share knowledge. We learn together computer programming. If you join you can ask questions, participate in the classroom on live streaming and chat. Our Discord automoderated and safe to use. We use standard boats and we kick out any spammers or trolls. Your identity is protecte.

Software licenses

In order for a program to be free, its copyright holders must explicitly grant users the four essential freedoms. The document with which they do so is called a free software license. This is what free software licenses are for.

Software with no lcense is not free software and it can't be modified, distributed or reused without explicit permission of the author. Therefore when you create a project that is open source you must select a license for it.

Popular Licenses

Is a special category of licenses that enable users to modify and use the software without restrictions. We have study these licenses and we have selected for our projects: {MIT, Apache, GPL}. You should study chareful your license terms before selecting one for your project.

Non GPL licenses

Non GPL license enable some freedoms but not all 4 basic freedoms. There are licenses that hide source code but let you use the software freely. Other licenses protect the software against any modification or commercial use. In any of these cases the software is not open source but proprietary.

Open Source Rules

There are 10 established rules that define open source projects. I have found these rules under opensource.org website and copy them here so you can find them more easly. You can study the original and the original with the annotations:

Note: Next text is an abbreviated version of the open source re-distribution rules. These are our notes, and is not the official version. Anyhow not all licenses respect these rules.

1. Free redistribution

The license shall not restrict selling or giving away the software as a component of an larger project containing programs from several different open source prohects. The license shall not require a royalty or other fee for such sale.

2. Available source code

The program must include the primary source code, and must allow re-distribution of source code as well as compiled form. Deliberately obfuscated source code is not allowed. Intermediate forms such as the output of a preprocessor or translator are not allowed.

3. Derived works

The license must allow modifications and derived works, and must allow them to be distributed under the same terms as the license of the original software.

4. Integrity of The Author's Source Code

The license may restrict source-code from being distributed in modified form. The license must explicitly permit distribution of software built from modified source code. The license may require derived works to carry a different name or version number from the original software.

5. No discrimination Against Persons or Groups

The license must not discriminate against any person or group of persons.

6. No discrimination Against Fields of Endeavor

The license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research.

7. Distribution of License

The rights attached to the program must apply to all to whom the program is redistributed without the need for execution of an additional license by those parties.

8. License Must Not Be Specific to a Product

The rights attached to the program must not depend on the program's being part of a particular software distribution. If the program is extracted from that distribution and used or distributed within the terms of the program's license, all parties to whom the program is redistributed should have the same rights as those that are granted in conjunction with the original software distribution.

9. License Must Not Restrict Other Software

The license must not place restrictions on other software that is distributed along with the licensed software. For example, the license must not insist that all other programs distributed on the same medium must be open-source software.

10. License Must Be Technology-Neutral

No provision of the license may be predicated on any individual technology or style of interface.

Volunteering opportunity

Sage-Code laboratory has a wide range of open source projects, covering a variety of technologies. This means that there is something for everyone, no matter what your skills or interests are. Working on an open source project can help you to develop your technical skills, learn new things, and improve your problem-solving abilities. You can also learn about different programming languages and frameworks, and how to work with other developers.

Reputation

Contributing to an open source project can help you to build your reputation as a developer. This can be helpful if you are looking for a job in the tech industry, or if you want to start your own business. When you contribute to an open source project, you are essentially putting your name and work out there for the world to see. This can help you to build a network of contacts and get noticed by potential employers or clients.

Networking

Working on an open source project can give you the opportunity to network with other developers. This can be helpful if you are looking for a job, or if you want to collaborate on other projects. When you contribute to an open source project, you are essentially joining a community of developers who are working towards a common goal. This can be a great way to meet new people, learn new things, and get involved in the tech community.

Community

Contributing to an open source project can give you a sense of community and belonging. You can connect with other developers who share your interests, and you can feel good about helping to make the world a better place. When you contribute to an open source project, you are not just working on a project for yourself. You are working on a project that has the potential to benefit millions of people around the world. This can be a very rewarding experience, and it can give you a sense of purpose and satisfaction.

Conclusion

Overall, there are many benefits to working as a volunteer for an open source project at Sage-Code laboratory. If you are looking for a way to develop your skills, build your reputation, and connect with other developers, then an open source project may be a great fit for you.


Read next: Software Testing