<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Benny De Bock</title>
    <description>The latest articles on Forem by Benny De Bock (@bennydb).</description>
    <link>https://forem.com/bennydb</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F886087%2F6eeb0fb4-7a9b-4295-a4dc-cb37c8871781.jpeg</url>
      <title>Forem: Benny De Bock</title>
      <link>https://forem.com/bennydb</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/bennydb"/>
    <language>en</language>
    <item>
      <title>Software Versioning: A brief introduction</title>
      <dc:creator>Benny De Bock</dc:creator>
      <pubDate>Fri, 19 Jan 2024 10:01:59 +0000</pubDate>
      <link>https://forem.com/bennydb/software-versioning-a-brief-introduction-54gf</link>
      <guid>https://forem.com/bennydb/software-versioning-a-brief-introduction-54gf</guid>
      <description>&lt;p&gt;Hello there!&lt;/p&gt;

&lt;p&gt;As part of my current job, I've had to adopt a versioning system. "Why?" you may inquire. A fantastic question! And to answer it, I'll provide a brief introduction to versioning and its benefits.&lt;/p&gt;

&lt;p&gt;We've probably all come in contact with versioning at some point; Be it libraries and frameworks you've used, products you've bought or even the games you've played. Every time something gets updated, a new version is created.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is versioning?
&lt;/h2&gt;

&lt;p&gt;If we take a look at Techopedia, Software Versioning is the process of numbering various releases of a software for internal usage and release marking. Simply put, it is a method of tracking and managing software changes. Each version reflects a unique state of the program at a certain moment in its release cycle.&lt;/p&gt;

&lt;h2&gt;
  
  
  How can we recognise when versioning is used?
&lt;/h2&gt;

&lt;p&gt;When software is coupled with versioning practices, they are usually combined with a version number. This number usually consists of numerical and/or alphanumeric components that convey information about the program's evolution as well as its compatibility with previous or future releases of the software.&lt;/p&gt;

&lt;p&gt;Some of the most common versioning schemes include:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Sematic Versioning (SemVer): The most popular method of versioning you'll find online. SemVer uses the &lt;code&gt;major.minor.patch&lt;/code&gt; syntax, with &lt;code&gt;major&lt;/code&gt; referring to software-breaking changes, &lt;code&gt;minor&lt;/code&gt; referring to backward-compatible additions, and &lt;code&gt;patch&lt;/code&gt; referring to backward-compatible bug fixes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Date-based Versioning: Another typical method of versioning where the version number is based on the release date. Typically seen in the format of &lt;code&gt;YYYY.MM.DD&lt;/code&gt; or &lt;code&gt;YYYY-MM-DD&lt;/code&gt;. It provides a clear chronological order of releases, but it does not specify the extent or nature of the modifications.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Build Number: Where previously mentioned schemes used a sequence of numbers, some software employ a build number. This is a unique identification assigned to each build of the software. Build numbers can be sequential or include information such as timestamps or revision numbers, although this is not a requirement.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Why should I use versioning?
&lt;/h2&gt;

&lt;p&gt;Now that we've covered some of the most prevalent versioning techniques, why would we employ them? There are several reasons why you should utilize versioning.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Tracking changes: Depending on the scheme you use, you may easily observe what has changed between software releases. This aids in the identification of new features, bug fixes, security upgrades, and other developments.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Compatability management: Perhaps most importantly, versioning allows developers and users to determine if a certain version is compatible with what they are working on. Consider a project that requires you to routinely update your dependencies. If the dependence has a good versioning scheme, you can estimate how much labor it will take to update it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Documentation and communication: Versioning is similar to preserving a record describing the history of the software. It explains how the codebase evolved and the decisions that led to the change. Usually, changes to the versioning number are accompanied by a full explanation of what happened and why. This communicates efficiently with all of its users.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Release management: Versioning is essential for controlling and coordinating software releases. It assists in the planning and prioritization of feature releases, bug fix updates, and patch releases. It also assists users with identifying and installing the correct version of the software.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Closing words
&lt;/h2&gt;

&lt;p&gt;For the aforementioned project, we chose to use the SemVer versioning method, which has resulted in improved documentation and change detection.&lt;/p&gt;

&lt;p&gt;Introducing versioning may be extremely beneficial not just for increasing team communication and documenting your code, but also for clients/users that utilize your products. It enables teams to retain a disciplined approach to change management while avoiding compatibility difficulties.&lt;/p&gt;

&lt;p&gt;For additional reading on the topic, I recommend checking out these articles!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://semver.org/"&gt;SemVer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/javarevisited/application-versioning-strategies-de353a84faaa"&gt;Application Versioning Strategies by Alexander Kozhenkov&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/pulse/best-practices-your-api-versioning-strategy-omar-ismail/"&gt;Best practices for your API versioning strategy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>beginners</category>
      <category>discuss</category>
    </item>
    <item>
      <title>How to contribute to open source as a junior developer - My experience</title>
      <dc:creator>Benny De Bock</dc:creator>
      <pubDate>Sat, 02 Jul 2022 18:40:20 +0000</pubDate>
      <link>https://forem.com/bennydb/how-to-contribute-to-open-source-as-a-junior-developer-my-experience-3opc</link>
      <guid>https://forem.com/bennydb/how-to-contribute-to-open-source-as-a-junior-developer-my-experience-3opc</guid>
      <description>&lt;p&gt;Hello there!&lt;/p&gt;

&lt;p&gt;Have you ever been in a position where you want to contribute to open source projects, but you don't know where to start? I sure have, but through my internship at &lt;a href="https://www.brokenhands.io/"&gt;Broken Hands&lt;/a&gt;, I was able to gain experience in open source, more specifically in the &lt;a href="https://github.com/vapor/vapor"&gt;Vapor&lt;/a&gt; ecosystem. As such I want to share these experiences and tips with you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finding an open source project
&lt;/h2&gt;

&lt;p&gt;Finding a project you want to contribute to can be daunting, as hundreds or thousands of developers can be actively contributing to these projects and there are so many of them. My advice for you is to look either for an open source project that you are using in any of your projects. Or alternatively, if you want to gain experience in a certain programming language, search for projects in that language.&lt;/p&gt;

&lt;p&gt;On GitHub you can do this by searching any keyword that might interest you (a good one is open source) and filter the results on the programming language you would like to work in. If you don't find the language of your choice in the list, go to the advanced search feature. In there, you can specify the exact language you're looking for. &lt;/p&gt;

&lt;p&gt;Another way to find project to contribute to is by exploring this &lt;a href="https://github.com/topics/good-first-issue"&gt;GitHub topic&lt;/a&gt; page with good first issues. The filtering of these issues is not as expansive as the advanced search, but for popular languages, this shouldn't be a problem.&lt;/p&gt;

&lt;p&gt;There are also some great sites that can help you in your search such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://goodfirstissue.dev/"&gt;goodfirstissue.dev&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://goodfirstissues.com/"&gt;goodfirstissues.com&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  I've found a project, what now?
&lt;/h2&gt;

&lt;p&gt;Now that you have found a project you would like to work on, it might be hard to know where to begin.&lt;/p&gt;

&lt;h3&gt;
  
  
  README
&lt;/h3&gt;

&lt;p&gt;A good start would be to read the README of the project. This can contain useful information about the project, as well as how you can contribute or the guidelines to contributing. They can also include other contributors and where you can find the community to ask questions or to chat (e.g. Discord, Slack, etc.).&lt;/p&gt;

&lt;h3&gt;
  
  
  Project Boards
&lt;/h3&gt;

&lt;p&gt;Although the chances of these are lower, some projects might have a project board available with beginner issues. These are a great way to get an introduction into the project and to start off your open source career. These can gain you some confidence.&lt;/p&gt;

&lt;p&gt;If there are no project boards with beginner issues, you can also go to the issues tab and search by these criteria: &lt;code&gt;is:open label:"good first issue"&lt;/code&gt;. This will show you issues that aren't resolved yet, and they're a great starting point to get familiarized with the project.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: In the best case scenario, the issue you pick should have instructions on how to recreate the bug, or the specific circumstances it happened under. If this is not the case, you can ask the creator of the issue if they are able to share how to recreate it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Create a fork
&lt;/h3&gt;

&lt;p&gt;In most projects, you won't be allowed to create a branch on the main project. Thus, you must create a fork of the project. You can do this by clicking on the fork button in the top right corner of the repository.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8CTVtvgd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3kzhowtsumaswu55u478.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8CTVtvgd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3kzhowtsumaswu55u478.png" alt="The header of a repository, which includes the fork button" width="880" height="85"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By doing this, you will copy the repository to your own personal GitHub or any other organization that you are the owner of.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3hFkMT-H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6saxrhvrkygckl6vvbpk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3hFkMT-H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6saxrhvrkygckl6vvbpk.png" alt="An example of creating a fork" width="786" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you have forked the repository, you can start working on a fix for the issue you have chosen.&lt;/p&gt;

&lt;h3&gt;
  
  
  Testing is important
&lt;/h3&gt;

&lt;p&gt;You can fix an issue, but how did you manage to replicate the issue? To avoid someone else having to replicate the issue, but also to make sure that the behavior that was faulty doesn't come back, you should write tests. Writing these tests will make your code more robust, as you can check for scenarios that pass and scenarios that fail. But you also create a guarantee towards the future that the unexpected issue from earlier cannot come back when it's being iterated upon, as it is an extra check now.&lt;/p&gt;

&lt;h3&gt;
  
  
  I have fixed the issue, now what?
&lt;/h3&gt;

&lt;p&gt;You have fixed the issue, great! But this fix is not yet available in the original repository. We do this by creating a pull request. Normally, when creating a pull request, this is done from a branch of the repo, to the main/master branch. However, since we created our own clone of the repository, this is not possible.  &lt;/p&gt;

&lt;p&gt;Though it can be hard to see, you have the option to compare across forks of the repository.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EGOOdYuz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hzhbh8tkfl3sdfwi6pwj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EGOOdYuz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hzhbh8tkfl3sdfwi6pwj.png" alt="An example of how you can't by default pick forks for creating pull requests" width="880" height="171"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By choosing this option, you have have to pick the repository that you forked, along with the branch you have worked on to be able to see the differences in code. If there aren't any merge conflicts, then feel free to hit that &lt;code&gt;Create pull request&lt;/code&gt; button.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zGd5Bhf3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5so7ex4bilqrhh60ypgw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zGd5Bhf3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5so7ex4bilqrhh60ypgw.png" alt="Example of creating a fork" width="880" height="193"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Writing a proper pull request
&lt;/h4&gt;

&lt;p&gt;To create a proper pull request, it is important to shortly describe in the title of the pull request what it tries to solve/add. You can go into more detail in the comment section of the pull request as to which files you have changed, the behavior you have adjusted, as well as which issue it relates to. The latter can be done by typing something similar to &lt;code&gt;Resolves #&amp;lt;number&amp;gt;&lt;/code&gt; where the &lt;code&gt;&amp;lt;number&amp;gt;&lt;/code&gt; is the ID of the issue you are referencing.&lt;/p&gt;

&lt;p&gt;An example:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--v0oBDjXU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vz3579zzyo5lb3tvuhvd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--v0oBDjXU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vz3579zzyo5lb3tvuhvd.png" alt="An example of a merged pr" width="880" height="313"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: It is also possible to create a draft pull request. This means that you can show others that you are working on the problem already, but you are not able to release it yet as working code. You can use this to get feedback beforehand from the main developers or the community.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  Getting a pull request accepted
&lt;/h4&gt;

&lt;p&gt;Once you have created a pull request successfully, some automated tests might be running. If they all pass, and there are no merge conflicts then you should see something like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2D2p9L_1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4hut3pj4xgmfjx7qijsf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2D2p9L_1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4hut3pj4xgmfjx7qijsf.png" alt="No Issues with merging" width="880" height="134"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This does not yet mean that your contribution has been accepted. In a lot of cases, the incoming pull requests need to be approved by the core team. They may request changes and you can go into discussions about why that is (or isn't) a good idea. Once you have gained the approvals, then your work is done.&lt;/p&gt;

&lt;h2&gt;
  
  
  Congratulations!
&lt;/h2&gt;

&lt;p&gt;You have successfully contributed your (possibly) first pull request to an open source project. This may be the first of many more to come. Just remember that you can do more than you think, if you set your mind to it. &lt;/p&gt;

&lt;p&gt;For me personally, the main takeaway I had from working in open source was that I shouldn't be afraid to interact with the community, ask questions and even make mistakes. We all start somewhere. Contributing to open source is a great way to get experience, getting better as a developer, as well as making connections with other developers.&lt;/p&gt;




&lt;p&gt;If you think I missed something, feel free to let me know in the comments. This is my first time writing a post so feedback is always appreciated.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>git</category>
    </item>
  </channel>
</rss>
