Planet CDOT

February 16, 2019


Adel El Masery

The Road To My First Pull Request

The Project

Open Roller Coaster Tycoon 2

For my first pull request I decided to work on OpenRCT2, an open-source remake of the widely popular Roller Coaster Tycoon 2 game. Although I sound decisive talking about my planned pull request, getting to this point was a challenge in itself.

Something I’ve always struggled with was making decisions, so it came as no surprise when I was torn between which open-source project I wanted to contribute to. I had a few projects in mind that I talked about in my previous blog post, but nothing was certain. What really helped tip the scale in OpenRCT2’s favor was the abundance of good first issues and the language (C/C++) the project was coded in. I felt like these were both key factors in the success of my first open-source contribution and OpenRCT2 easily satisfied the requirements.

Finding An Issue

Since deciding on my first project, I’ve been looking through the posted issues and setting up the game to run on my machine in order to test future bugs. Although I haven’t chosen a specific issue yet, I learned a valuable trick in my open-source development class today to help me sort through difficult issues.

Introducing: The “good first issue” Label

filtering through issues in OpenRCT2 using “good first issue” tag

GitHub offers a wide range of labels for issues in order to provide a brief overview on the scope of the problem and give contributors a way to filter for a desired issue. This has been a great boon for me, an amateur open-source developer seeking a simple first issue. Using the “good first issue” label I can browse a list of posted issues intended for contributors just starting to enter the world of open-source development. With this feature I hope to be able to submit my first pull-request within the next couple of days and begin my contributions to OpenRCT2.

by Adel El Masery at February 16, 2019 01:14 AM

Searching For an Open Source Project

My hunt for a suitable open-source project to work on began last week. It has been a rocky road leading up to this moment but I think I’ve finally narrowed my search down to a few candidates.

OBS Studio

Open Broadcaster Software

The first project that caught my eye was OBS, a software used by countless streamers every day. Not only does the software line up with my personal interests and hobbies, it’s coded in C/C++ and Go. This is hugely advantageous to me due to my experience in C/C++ and my desire to learn Go, therefore putting OBS at the top of my list for open-source projects I hope to contribute to.

Open Roller Coaster Tycoon 2

OpenRCT2 (open-source remake of Roller Coaster Tycoon 2)

This project caught my eye due to my professor’s blog post on possible open-source projects. Although a fairly large project to work with, it is coded in C/C++ and has an active community with a wide range of posted issues. I loved playing Roller Coaster Tycoon when I was a child and believe working on this project would be a great experience filled with nostalgia. Not only would it be enjoyable to work on, but OpenRCT2 would provide valuable experience working on a real C/C++ project and let me further develop my skills in those languages.

GitHub Desktop

GitHub Desktop

The final project I was considering contributing to was GitHub Desktop. I currently use this software to collaborate on a Unity2D RPG so I have become familiar with its features and even some of its shortcomings. I feel it would be interesting to contribute to an application that I use in my day to day life as a developer. The community appears to be very helpful and supportive of new contributors and it would be a great learning environment for someone just getting into open-source development.

With these three projects to look into, there should be no shortage of possible contributions I can make.

by Adel El Masery at February 16, 2019 12:56 AM

February 15, 2019


Vladimir Rozin

"Good-first-issue" for a "good-first-experience". Part 1/4.

Status: In active search

    What I have recently found out is the cornerstone of an open source development is not only to be able to contribute to a project, it is also to know what project one should contribute to.
   I've been searching mostly on Codetribute, which is a Mozilla's owned web portal to manage open source contributions.



    After a couple of hours of searching for the bug, the only and the best, I noticed that the list of the current issues in there is sorted by dates of recent updates only, which makes it harder to find a newly created bug to contribute to, since updated old ones (and sometimes very old ones) get pushed to the top of the list as well. I find it a little challenging for myself (at least for now) to be trying to go over dozens of comments for a specific issue and trying to fix it, when other people have been working on it for a while already.



    But let's move the technicalities aside. The job that lays ahead is to find a project to contribute. As per Jatin's recommendation (you can find Jatin's blog here), there is an interesting project that can get under my radar of interest - Teammates. The project focuses on online web evaluation for peer students; it uses Java, JS, and Angular. I personally think that a project of this size is a great opportunity for contributing, so I will definitely try my luck with it.




by Vladimir Rozin (noreply@blogger.com) at February 15, 2019 10:21 PM


Al Vincent Valdez

Release 0.2 First PR

For this week I worked on the JARVIS messenger project.  The contribution I contributed to this project was a small one. It was just a simple addition of adding two new facts to their fact module of this bot. Hopefully in the future I can contribute my own module to this bot.

The new technologies I had to work with were python which is something I am completely unfamiliar with, so I had to learn a bit of python to have a understanding of how each module works and how the main bot works. Also I had to make a facebook account just to see how the actual bot works.

Next week I will either contribute to a new project or fix an actual bug in JARVIS or start to work on creating a new module.

by Alvin Valdez at February 15, 2019 10:09 PM


Volodymyr Klymenko

iOS UI Testing in Firefox Focus

I continue contributing to the open source projects, and I got back to Firefox Focus this week. The issue I worked on was listed in July 2018, and nobody had taken it for some reason 🤔 It caught my attention because it asked to add a UI test for one of the pages of the browser, and I haven’t done any testing for iOS apps before. I thought that it would be a good opportunity to learn how to do it.

Issue

They added a page for no internet connection error, which is triggered when a user tries to go to a webpage without having the internet.

Fix

Firstly, I started my research on how to do UI testing. I found the following story on Medium, which is a nice introduction to iOS testing:

Automated UI-Testing for iOS Apps

Firefox Focus uses XCUITest library for the UI tests.

A few years ago Apple discontinued their JavaScript Automation Framework and replaced it with XCUITest. This is an Apple supported native library meaning you can write your UI tests in Objective-C or Swift. (Automated UI-Testing for iOS Apps by Jan Olbrich)

After analyzing existing tests in the project, I started writing my own. My first steps were to write a basic test that would just start the app and exit it (because I hadn’t written any other tests). Once I created this basic template for my test, I had to write an actual test function for the No Connection page.

I started with just a basic loading of mozilla.com website. Worked fine 👍 Next, I had to turn off WiFi on the iOS simulator in order to trigger the No Connection page. However, I faced a problem at this step. It turned out that it’s impossible to turn off WiFi just on your iOS simulator neither using XCode nor programmatically 🤭 Instead, you need to disconnect WiFi on the computer, where you compile and build the app. Obviously, that’s not a good option because other tests need the internet connection, and they would fail in this case.

I had to find a solution to this problem. I decided to add a condition, which would check whether there is network or not. If there is no network, the test will run. I found how to implement it in the following blog post:

Check internet availability in Swift - Mobikul

Then, I added a few lines of code that checks whether the error page was displayed:

loadWebPage("mozilla.com")
let noInternetConnection = app.staticTexts["The Internet connection appears to be offline."]
XCTAssertEqual("The Internet connection appears to be offline.", noInternetConnection.label)

Let’s walk through these lines of code:

  1. Tries to load Mozilla website
  2. Get a label from the No Internet Connection page with the error message
  3. Assert that this label exists and the value is equalled to “The Internet connection appears to be offline.”

That’s it! You can find the full code in my Pull Request 🙌

by Volodymyr Klymenko at February 15, 2019 09:05 PM


Yuansheng Lu

Lab 4: Release 0.2 update

In this week, I started to work on the project best_resume_ever. This project is a resume generator using Vue.js. I try to fix the following issue: https://github.com/salomonelli/best-resume-ever/issues/324

This issue is filed by myself, because I saw lots of contributors have created their own template based on the existing templates. I picked one existing template and tried to change the layout.

In order to fix this issue, I need to use Vue.js. However, I have no experience on that. I started to read the code inside and google the code I didn’t understand.

By the end of today, I have finished reading the documentation for this project and I found the instruction of adding new template. And then I tried to followed all the steps to add a hard-coded template to see whether it works. My hard-coded template has been created successfully. And the next step is to write my new template. I copied an existing template named “cool” to my template and changed the layout of that template.

I am going to run the tester to verify nothing is broken because of my new template next week. And then I will commit and push the changes and create pull request.

by luysh0420 at February 15, 2019 07:56 PM


Julia McGeoghan

Debugging a Node dependency in VS Code

There’s an open source project called Chalk that I find to be really interesting. What it does is fairly simple; it stylizes and adds color to terminal output.

What I like about it is how it’s structured. The way it builds its API is something I haven’t seen before and I want to learn from it. Also if I learn how it works I could maybe contribute to the project in the future.

I wasn’t sure how to go about it at first though. My first reaction was to simply read through the code on github, but this wasn’t great since I didn’t understand some of what I was reading. Then I considered using console.log statements everywhere, but I knew that wouldn’t be very effective.

What I needed was to find a way to actually step through lines of code with a debugger. However debugging Chalk wasn’t as simple as opening the project and immediately debugging it; it needed to be used as a dependency in another project, then run from there.

Turns out the process was fairly simple, for it I:

1. Cloned Chalk onto my local machine

git clone https://github.com/chalk/chalk.git

2. Used npm link to create a symbolic link to Chalk

cd chalk
npm link

After the linking was successful I saw:

/usr/local/lib/node_modules/chalk -> /home/anneandy/Projects/OpenSource/chalk

3. Created a new, simple project

mkdir simpleScript
cd simpleScript
npm init

From here I opened the new simpleScript directory in VS Code, and created a file called index.js.

4. Used npm link to establish a connection to chalk

If you wanted I could have made changes to my local installation of Chalk, then copied it into the node_modules folder for simpleScript. But I found that using npm link was a far easier approach.

npm link chalk

After linking the terminal outputted:

/home/anneandy/Projects/OpenSource/simpleScript/node_modules/chalk -> /usr/local/lib/node_modules/chalk -> /home/anneandy/Projects/OpenSource/chalk

From here when I make changes to my local Chalk version simpleScript will have access to this newer version without me having to copy over files.

5. Wrote code that executed/made use of Chalk in some way

In simpleScript/index.js, all I needed to write was:

const chalk = require("chalk");
console.log(chalk.red("Hello World!"));

6. Added both projects to my workspace in VS Code’s explorer

Having each project accessible in the same workspace made it a lot easier to switch between them during this debugging process.

6. Added a breakpoint to the beginning of Chalk’s `index.js` file

Chalk doesn’t have a main function that it starts from. From what I could tell the code I was interested in started executing at the beginning of the project’s index.js file, so that’s where I left the breakpoint.

7. Clicked inside/focus on my `simpleScript/index.js` file

If this wasn’t done and I’d just made changes to Chalk, VS Code would try to build from Chalk and would give an error.

8. Ran Dubug > Start Debugging (or hit F5)

And that’s that! This is the first part of my two part series about Chalk, thanks for reading. In part two I’ll actually cover how the package works and new things/techniques I learned while studying it.

by Julia McGeoghan at February 15, 2019 07:53 PM


Jacob Adach

LAB 4

OPEN SOURCE CONTRIBUTION

https://github.com/node-muneem/anumargak

What is the Project

Anumargak is a self professed “fastest http router” on NODEjs.  It is built off another http router program called numeen.

The issue https://github.com/node-muneem/anumargak/issues/12

The member opened an issue basically asking for 2 printed lists.  One of just a normal printed list of all static and dynamic routes, and another printed list of all static and dynamic routes in a tree like structure.

Problems I ran into

The issue seemed easy at first, but lack of documentation and guidance has turned this into quite the ordeal.  Where to start…

The lack of documentation for newcomers is the biggest drawback, second biggest is the member whom I am communicating with clearly is not a native English speaker which makes asking for what he really wants my produce difficult and his responses are quite ambiguous I feel.  It isn’t really only after a few hours of digging into the project and then going back to look what he wrote that I can make a connection and say “ahh, I understand what you meant”.

The biggest problem I keep coming into is understanding how this project works. Especially the objects which house the dynamic and static routes lets call them staticRoutes and dynamicRoutes.

If I perform a console.log(this.staticRoutes) we get a long list returned of objects within objects

***** return below *****

{ ACL: {},

  BIND: {},

  CHECKOUT: {},

  CONNECT: {},

  COPY: {},

  DELETE: {},

  GET:

   { ‘/’: { data: [Object], verMap: undefined, params: undefined },

     ‘/a’: { data: [Object], verMap: undefined, params: undefined },

     ‘/login/as/admin’: { data: [Object], verMap: undefined, params: [Object] },

     ‘/login/as/user’: { data: [Object], verMap: undefined, params: [Object] },

     ‘/login/as/staff’: { data: [Object], verMap: undefined, params: [Object] },

     ‘/some/route’:

      { data: undefined, verMap: [SemVerStore], params: undefined } },

  HEAD: {},

  LINK: {},

  LOCK: {},

  ‘M-SEARCH’: {},

  MERGE: {},

  MKACTIVITY: {},

  MKCALENDAR: {},

  MKCOL: {},

  MOVE: {},

  NOTIFY: {},

  OPTIONS: {},

  PATCH: {},

  POST:

   { ‘/’: { data: [Object], verMap: undefined, params: undefined },

     ‘/this/is/static’: { data: [Object], verMap: undefined, params: undefined } },

  PROPFIND: {},

  PROPPATCH: {},

  PURGE: {},

  PUT:

   { ‘/this/is/static’: { data: [Object], verMap: undefined, params: undefined } },

  REBIND: {},

  REPORT: {},

  SEARCH: {},

  SOURCE: {},

  SUBSCRIBE: {},

  TRACE: {},

  UNBIND: {},

  UNLINK: {},

  UNLOCK: {},

  UNSUBSCRIBE: {} }

**************************

So, at first I was quite overwhelmed with the amount of information inside of these two objects because I needed to get the METHOD , URL and VERSION to print and it seems like this will be a lot of parsing to get that information.

Another big headache was dealing with versions inside these objects, to create a versioned route one would execute this command using Anumargak:

router.on(‘GET’, ‘/some/route’, { version: ‘1.2.0’ }, (req, res, params) => {

//       

})

And then the above object will be displayed like this from a console.log

‘/some/route’: { data: undefined, verMap: [SemVerStore], params: undefined } }

The version is inside the verMap but it is the most confusing thing as I will outline below.

If You just try to execute this

                console.dir(this.staticRoutes.GET[‘/some/route’].verMap.tree);

**** It prints below

 Node {

  prefix: 0,

  children:

   { ‘1’:

      Node {

        prefix: 1,

        children: [Object],

        childrenPrefixes: [Array],

        store: null } },

  childrenPrefixes: [ 1 ],

  store: null }

********

The above output isn’t enough information and was causing me a ton stress.  Trying to append any of the other objects to that console output so I can see the other objects produced nothing nut “undefined” objects :

console.dir(this.staticRoutes.GET[‘/some/route’].verMap.prefix);

console.dir(this.staticRoutes.GET[‘/some/route’].verMap.children);

console.dir(this.staticRoutes.GET[‘/some/route’].verMap.tree.childrenPrefix);

Well it seems like the issue was I needed to reference a string inside the object, which let me to my next headache displayed with 3 different calls.

 console.dir(this.staticRoutes.GET[‘/some/route’].verMap.tree.children);

 console.dir(this.staticRoutes.GET[‘/some/route’].verMap.tree.children[‘1’].children);

 console.dir(this.staticRoutes.GET[‘/some/route’].verMap.tree.children[‘1’].children[‘2’].children);

* I created 2 VERSION routes, both for the same route above, version 1.2.3 and version 1.2.0.  This is what is printed out after the above is called

                { ‘1’:

                   Node {

                                 prefix: 1,

                                 children: { ‘2’: [Node] },

                                 childrenPrefixes: [ 2 ],

                                 store: null } }

                { ‘2’:

                   Node {

                                 prefix: 2,

                                 children: { ‘0’: [Node], ‘3’: [Node] },

                                 childrenPrefixes: [ 0, 3 ],

                                 store: null } }

                { ‘0’:

                   Node {

                                 prefix: 0,

                                 children: null,

                                 childrenPrefixes: [],

                                 store: { handler: [Function], store: undefined } },

                  ‘3’:

                   Node {

                                 prefix: 3,

                                 children: null,

                                 childrenPrefixes: [],

                                 store: { handler: [Function], store: undefined } } }

So I managed to find the version, but as you can see it is not user friendly at all. Basically my versions 1.2.0 and 1.2.3 both share the 1.2 which is highlighted above by only having one object of both 1 and 2, and because the last digits of the version were different it created two separate objects for them 0 and 3.

You can see how the above is confusing and would be difficult to parse.

SAVING GRACE

I managed to find the function which saves all the parameters into the objects which will save me lot of time. I only wish I was pointed to this function by the member to begin with rather than finding it myself as it could have saved me a lot of time. This is what I was referring to as bad documentation for newcomers, because it would be beneficial for anyone new to understand that there is a function which is called first once the program executes which saves every route in your app.

What I learned

There is a .prototype infront of the function names which I learned was just a more efficient way of managing objects in JS. Basically it separates the methods from the properties in an object which will save space in memory.

article can be found here -> https://hackernoon.com/prototypes-in-javascript-5bba2990e04b

In order to better understand the project I needed to learn how to view all the properties inside of objects which helps understand the structure of the project.

You can find some helpful articles here:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

https://flaviocopes.com/how-to-inspect-javascript-object/


by jacobadach at February 15, 2019 07:49 PM


Andrew Koung

Release 0.1 Lab 4 – second PR

The project that worked on this time for the second pull request was called TeacherFund. The goal of the project was to create a patreon type website for great teachers that go above and beyond to buy supplies that aren’t funded by the school, but through their own wallets.

This is a link to their github:
https://github.com/teacherfund/TeacherFund_next/pull/34

Dev Platform

The project is still relatively new so it was somewhat friendly for newcomers trying to get into open source. In order to understand the structure of the project, I needed some React knowledge.

The interesting part of this experience was that I was taking a look at the existing issues and noticed the “first-good-bug” tag. So I decided to build the project and take a look at what was happening. I analyzed the website and then came across this switcher button.

My initial reaction was this:

Image result for NANI red eyesNANI meme

The text was white and camouflaged itself in the white background! So I went straight to github and filed an issue, but at the same time making a pull request for my change to hard code the text to black.

The next day I received two replies from the maintainers of the project asking to create a prop field so that users could just send the color from the parent component. Now, to be honest, I suck at doing CSS as it’s one my weakness and trouble reading for the most part. But, with quick researching, I made the changes he requested and pushed up my changes once again to have it approved.

What did I learn about this experience? Learning the difference between state and props, but most importantly, don’t be afraid to put up an issue.

See you in the next blog.

by Andrew Koung at February 15, 2019 07:31 PM


Joshua Jadulco

February 15, 2019 – Open Source Work Update #2

Reflection on previous PR

Over the last couple of days, I have been trying to figure out new open source Android apps repositories to contribute to as the last PR that I’ve contributed has not yielded any positive results for future prospects of contributing to the GitHub repo. To give a bit of context to this, see the screenshot attached:

PRNum620Discussion

Since I received feedback about my Pull Request about my code not following any code style in the project, in turn I asked about specifically how I can fix my code so that it will fit into the project’s code style thus I intend to turn this ambiguous criticism into a constructive one so that I can improve my code. In the end, I received no such constructive feedback but nonetheless I still tried to change the code to match the code style in the project and the changes can be seen below:CodeChanges_PR620

Looking for a breathe of fresh air

Since the discussion of my previous PR has given me an insight into how future contributions to SimpleCalendar might proceed, I decided to shift my focus into scavenging open source Android apps repositories for Issues that I can fix. For now I’ve settled on 3 repos that I think I can contribute to:

  1. https://github.com/brave/browser-android-tabs
  2. https://github.com/mozilla-mobile/focus-android
  3. https://github.com/wordpress-mobile/WordPress-Android
  4. https://github.com/inorichi/tachiyomi-extensions

I’ve also decided to zoom in to some Issues within the Brave Browser Android repository by picking 2 Issues of interest to me as they seem to be easy to fix:

Issue#1120 deals with a simple String problem – the string should be displayed as "Enter a Sync Chain Code" but is instead displayed as \Enter a Sync Chain Code\.
Issue #1115 is a more complicated one because it involves altering search engine preferences and is directly tied to the Issue discussed at the Brave Browser (desktop version) repository as seen here: https://github.com/brave/brave-browser/issues/3316. So for my progress, the only progress that I can say is that I’m still attempting to learn how Brave Browser Android and everything has gone well so far in terms of setting it up.

by joshj9817 at February 15, 2019 07:17 PM


Oleksii Polovyi

React Community

This week @tesseralis and @klymenkoo invited me and @ithompson4 to join React Community translation. Our amazing team is focusing on the Ukrainian translation of the React docs. Over this week 22% of Core documentation was completed and we got more members to join, hooray!

Special thanks to:

For all your help with the translation guide as well as individual pages translations. This was my first contribution to the React Community.

Here is something new I used this week:

  • CircleCI integration with GitHub for automated builds and tests
  • Yarn dependency manager
  • GatsbyJS site generator for React

by ApolllonDev at February 15, 2019 06:03 PM


Rachael Scotchmer

Rookie Mistakes

When finding an issue to work on in an open source projects, it's very important to keep your own strengths and weaknesses in mind. Just because an issue says "good for first contributors" or "good first bug", doesn't mean it's necessarily for you.

...Well, not if you're working on a deadline, anyway. Which I am -- I was supposed to have fixed a bug by today in a project of my choice. Instead of a pull request, though, I've got 3 different projects in ember.js sitting on my hard-drive and a search history filled with queries along the lines of "ember.js basic routing examples". From hours of research, I've got a few measly lines to show for my effort -- and they're certainly not worthy of being pushed to a project.

All this because I didn't take a moment to think about my strengths.

The Bug

I spent the better part of a week looking for a bug to work on for my course, DPS909. It had to be something small -- I had only a week to work on it, and would be expected to find another small bug for the next week. And the next week. And the week after that.

Finding a small bug is easier said than done, though. Or at least, it was for me. There are a lot of projects that caught my eye, but none had issues that were suitable for beginners to tackle. I ended up browsing a bunch of repositories Github recommended to me, based on repositories I'd previously looked at. I will say, I wasn't so much concerned with what the project was -- the issues were all I was looking at. A cursory glance at the labels and issues, to see if there was anything suited for my skills. It took awhile, but eventually I found something in the ember.js repository that sounded right up my alley:

Fixing up documentation.

Before I go any further, I'd like to mention that I have never used ember.js before. I have used a few other Javascript frameworks, though -- namely AngularJS, ReactJS, and Vue. ember.js didn't seem all that different from them; it produced single page applications, made us of components, used JavaScript... And so on. I was sure it wouldn't be too hard to figure out.

Of course, I was wrong. But hindsight is 20/20, and I signed up to help with documentation for a method called "isActive" without digging deeper into what ember.js was.

The Process

It took about 30 minutes for me to figure out that I'd probably bitten off more than I could chew. Initially, I figured that I'd just whip up a little ember.js app and test out isActive() myself. After setting up my "little" test app, though, I realized I was way in over my head. The app was structured in a very specific way that, I'll admit, was a little overwhelming to look at. Folders for templates, controllers, helpers and routes, and other things that I wasn't familiar with in the context of ember.js. In the context of AngularJS? I knew what all that meant. But ember.js is a different kind of beast, and I found myself way in over my head.

It was time to hit the docs and figure out exactly what I needed to do to get a working application going. Like a lot of the popular JS frameworks, ember.js has a CLI to make building apps a bit easier, but that doesn't make it easier to understand what's going on in the app. At the time I'm writing this, I've spent about five hours going through the documentation and trying to figure out how to use ember.js' router service, and by extension, isActive. This has led me to research a lot of different things -- mostly routing related, though I've had to look at components, models, and many other pages too.

In the end, I've managed to figure out most of what makes isActive tick. There's still one parameter left to figure out -- mostly because it involves researching models in ember.js -- and then I can finally get to writing out the documentation that I promised to do.

Moving Forward

I've definitely learned some valuable lessons from this -- namely, don't offer to work on a decently in-depth part of the documentation for something you've never used. Or at least, not when you're working on a deadline, and don't have the time to spare for more in-depth research. You might argue that this is common sense. I'm inclined to agree. But it's easy to lose sight of things like this when you're under pressure to find and fix a bug within a week's time. Suddenly the only thing that matters is the presence of the "good first issue" label (or something similar).

That's not to say I regret choosing this issue to work on. This has been a very valuable learning experience, both with regards to open source development and working with ember.js. I've learned how to better pick my issues... And also the basics of ember.js, expanding my knowledge of JS frameworks. Not bad, all things considered.

An Addendum

Adding an addendum to a post that's not even published yet probably seems a little weird. When I was writing this post, though, I was fully expecting not to finish my work in time to make a pull request by the end of today. This morning, however, I had a bit of a break through and managed to finish off the bulk of the documentation I'd promised to write -- now I'm just waiting on some feedback on how to improve it. You can check out my pull request for it here.

Anyway, with the post already written, I didn't want to go back and rewrite it into something new now that I'd gotten a PR up. I like the original post, and I think it's a good reflection of what this experience has been like for me.

by rscotchmer (noreply@blogger.com) at February 15, 2019 04:33 PM


Harsh Patel

Release 0.2 – Feb 15 Update

After contributing to my first open source project FilerJS, it was time to start contributing to more open source projects. This week, I worked on Sloth android application which is managed by Kolten Sturgill.

Sloth is an Android note-taking app developed by Mobi Social Coding Team. I had to redirect the user to a new settings page when clicked. At first, the issue seemed pretty easy but, setting up the environment took me more than three hours. And then understanding the code was also a bit difficult. I asked for permission to work on it.

Setting up the Environment

  1. I forked the repository.
  2. I cloned the repo and opened it in Android Studio.
  3. I faced version problems, so had to tweak the build.gradle file.
  4. Then I built the project on my physical device, to check there were no errors.

Code Changes

Now, it was time to make code changes. I modified the MainActivity.java file to redirect the user to the new settings page. I had to add two lines in the if statement.

After modifying MainActivity.java, I had to add a new SettingsActivity.java and activity_settings.xml to the project.

After making all the changes, I then re-tested the application to make sure it wasn’t breaking. And then, I pushed my change to a new branch referencing the issue. My changes got merged with the master branch luckily.

Pull Request Link

Issue Link

Stay tuned!!!!

by hjpatel16 at February 15, 2019 08:25 AM


Jatin Kumar

Update on Open Source Contribution: Feb14

Hey there folks!

This week I worked on The Teacher Fund unreleased website. This website is maintained by Joel Wasserman who also works at Google.


TeacherFund is a charity to support teachers in a way that encourages great teachers to stay, and potentially great teachers to choose to teach as a career path. This includes providing supplemental funds and supplies to school teachers in need.

The website is written in React using Next.js.

So this was a great opportunity for me to work with React and NextJS.

Since I am taking initial steps in contributing to the Open Source projects. I tried finding an issue which is easy to fix. It almost took me four hours to find an issue

Later, I asked for permission to work on the issue and soon, I got assigned to work on it.

The Issue

Setting up the project was easy. I just forked, cloned and did ‘npm install’.

Now the goal is to add a background image to the SignIn/SignUp page.

To add a background image to React, I did some research on google and found an easy way to do it by just adding a style attribute with backgroundImage to the div.

And all I added was just one line to the div element

<div className="main-container" style={{backgroundImage:`url(${"/static/images/abc_blackboard.jpg"})`, backgroundSize:'100% 80%', backgroundRepeat: 'no-repeat'}}>

Voila…

Final Changes
My pull request

In the end, I submitted the pull request with my changes and it got merged.

Project Repo Link

Issue Link

Pull Request Link

In upcoming weeks, I will be working and fixing more issue in Open Source projects and definitely will post a blog update about it.

Stay Tuned!

by jatinkumar at February 15, 2019 12:28 AM

February 14, 2019


Iryna Thompson

Release 0.2, First PR

Finding a Bug

Finding an initial Open Source issue to which I could contribute for Release 0.2 proved to be more challenging than I had anticipated. Initially, I searched for a project with a particular language such as JavaScript, Python, or Java. I eventually decided, however, it would be better to focus on searching by bug category. But even this proved to be complicated as I found that on several occasions bugs labeled as “easy”, “good first issue”, “beginner” when I researched them further often turned out to be could be somewhat complicated requiring the installation and setup of complete test environments, making it unlikely they could be fixed within a short period of time.

Joining a Project

Eventually, I read a post on Slack concerning a project looking for contributors who could assist with the translation official React documentation from English to Ukrainian. As I am fluent in both languages, I decided to join this React documentation translation project along with a couple of current and former Seneca College students volunteers with similar language skills. For my initial contribution, I selected the hello-world.md file from the published work list.

My Contribution

After forking the project and studying the Project guidelines, I created my own GitHub branch for my individual contribution and then started working on the translation of the selected file. It was my first technical documentation translation effort, so even though I am a native Ukrainian language speaker, it took some time to complete this task as it was challenging at times to translate some computer technical terms from English into Ukrainian accurately.

After pushing my first changes, my team reviewed my translation, and provided me with feedback. After incorporating the suggested changes, I updated my pull request. My pull was approved, and later successfully merged into the Ukrainian version of the React documentation under development.

I chose to contribute to this project as one of the things I may have to do in the future is technical writing. Successful completion of this task has served as an excellent introduction to this important Information Technology related activity.

My First Issue:

https://github.com/reactjs/uk.reactjs.org/issues/1

My First PR:

https://github.com/reactjs/uk.reactjs.org/pull/4

by irynathompson0609 at February 14, 2019 10:34 PM


Andrew Koung

Release 0.2 Lab 4

This week I took a look at beginner projects for people who were new to open source. I came across a project called I-can-not-REACT.

https://github.com/KirankumarAmbati/I-can-not-REACT

The project was to actually a perfect first step for a person like myself. The sole purpose of this project is to create a complete guide on Reactjs and was looking for any contributors that want to add anything related to Reactjs. The issue that I chose to contribute was to create a document on JSX.

https://github.com/KirankumarAmbati/I-can-not-REACT/issues/17

I chose to document a basic explanation on JSX because I had knowledge about it, but at the same time wanted to man up and take any criticism that may come my way. In my opinion, documenting something can be stressful since you’re under the pressure that people might be thinking, “What the hell is this guy saying? He’s wrong!”.

Technology wise, I didn’t use anything advance at all except git to push and pull changes made on the document.

I have successfully create a basic explanation on JSX enough for new React users to understand the significance of JSX in my personal opinion and hope to find new issues to work on. Hopefully a bug that I can figure out.

by Andrew Koung at February 14, 2019 07:44 PM


Brandon Wissmann

Committing to MetaMask and Status.im

It’s ok to take baby steps when being introduced to something new.

This week I decided to test the waters and make a small commit in a repository which I have been interested to committing to.

The first issue I found was in the MetaMask extension library. The issue was very simple, all that was requested is that there be a class added to a certain button. The project is written with React which is something I am familiar enough with. However, this was my first time to be working with a browser extension. For this reason, I thought it would be a good idea to make my first commit a very simple one.

To add the requested class, I forked the project, and cloned it to my local computer. I used VS Code to open the folder and did a global search for the button I was targeting. I knew what the button text was therefore it was not too difficult to find. I looked at other buttons with classes in the file and followed the naming convention of those, which ended with me naming the class: request-signature__footer__sign-button which is not exactly the name I would have came up with on my own.

Once this was completed, I quickly built the project to ensure my changes were functional and then submitted my pull request. I had to wait for one of the project maintainers to approve it, which only took a few hours. They thanked me for my work and quickly merged it into the develop branch and closed the original issue. A few days later they released a Version 6 RC1 commit which included my issue in the list of updates, something I found pretty nice to see.

Overall, my short experience with the MetaMask project was a positive one and I believe I will be looking to the project for future contributions.

My next commit will be in Status.im. I will attempt to make more significant changes and hopefully expand my understanding of Open Source contribution. I’ve already started on an issue which is to add a new token to the wallet of this application.

by Brandon Wissmann at February 14, 2019 07:04 PM


Aqeel Parpia

Discovering Open Source Projects

In General Open Source refers to any program whose source code is made available for use or modification as users or other developers see fit. Open source software is usually developed as a public collaboration and made freely available.

On this blog post i am going to share the most three open source projects that i have discovered and why i would be interested in working on them.

  1. IOS Development (objective-c and Swift)
  2. React, Angular and Asp.Net (Web Development)
  3. Android Mobile Development (Java, xml)

i just find modern web development and applications really interesting. As its not all about the back end but also the virtual front end that presents what is actually being coded and since i have basic ideas and experience on Swift, objective-c , React, Angular, Asp.Net and java i would like to take this opportunity to expand my education by not only learning but also contributing towards these open source projects.

by Aqeel Parpia at February 14, 2019 04:03 AM


Woosle Park

Lab 4 – Update

Emscripten

Emscripten is an LLVM-to-JavaScript compiler. I have claimed one issue that I feel I can resolve easily to change the library.js, in the emscripten github, to not use depreciated arguments. It seems the issue arises when using strict mode and depreciated arguments not being compatible. I am currently learning the deprecated function property and the _emscripten_traverse_stack function inside library.js. I will probably fix this issue by the next update.

Zen Audio Player

This project is a chrome extension that allows for a better music listening experience on youtube. I updated this project’s README.md file’s project sponsor section to have the correct information as well change the markdown to have images in links appear in all browsers. I had to learn a bit about markdown and browser capability to fix this issue. Ultimately T used an image source link to an uploaded GitHub picture to fix the issue. Afterwords I followed the contributes.md guidelines to do a pull request I am currently waiting to see if it merges. It turns out I only managed to complete 1 of the 2 tasks for the issue but my pull request was approved and merged.

After these issues I would like to work on a game project I feel as tho I might a few selected from a game jam I looked through from slack. I found I may be able to incorporate ‘use strict’ in js files or update their readme files.

pull request

Link to Zen Audio Play issue

Zen Audio Play github

deprecated function property

Link to emscripten issue

by woosle1234 at February 14, 2019 12:01 AM

February 13, 2019


Andrew Koung

Potential Open Source Projects

Moment.js

Important links-
momentjs.com
GitHub.com/moment

Moment.js is a library that deals with the manipulation of dates and times. I thought of hopefully contributing to this project because I’ve used this library before for the sake of multiple assignments and projects for handling dates and times. Handling dates and times can be extremely tedious, such as formatting. The reason why I chose this project was because the amount of functionality is so vast in moment and increasing it for sake of helping others and myself in the future is worth it. What I was to do with the project is maybe add a new function or fix a bug currently in the project. Something I want to learn from the project is the types of date or time formats or anything related along the lines because offsetting the date or time formats can cause havoc much like dealing with bytes and bits handling.

React

Important links-

GitHub.com/react

React is a JavaScript library for building user interface. It’s an extremely powerful library created by Facebook and is used all around the world. The library helps simplifies the idea of building interfaces by using components which is a dedicated section on a web app. You can manipulate components and can add/remove them like building blocks. Understanding how components work makes the process of programming much more simpler as everything is not jammed together and code related to each other are located in a file or can be thought of as components. The reason why I want to dedicate myself to this project is because building web apps in the past was extremely painful as you would have to refresh the page just to see the change. Some things react apps offer is when programming a react app, any changes made to the source code asynchronously updates the web app. Not to mention that a react web app is a single page that doesn’t need to refresh, but instead replace components to imitate the act of navigation.

React Native

Important links-

GitHub.com/facebook/react-native

React Native for the most part is what I had explained above, but it’s still another project that is in my sight of attention. React Native is focused on creating apps for iOS and Android. You can use expo to emulate your mobile app on a device. The reason why I wanted to do this project along with React was because the logic is similar in both and it would further help my experience. What I would like to do in the react native project is to fix any bugs that currently present or find any.

by Andrew Koung at February 13, 2019 07:05 PM

February 12, 2019


Harsh Patel

Discovering Open Source Projects

For today’s post, I’ll talk about three Open Source Projects am planning to contribute to during the rest of the term. This will be a great opportunity for me to work for different open source projects and will get invaluable experience by contributing to all these projects.

I really like to work on Java as I have been working on Java applications for 3 years. In addition, in my two co-op work terms, I have worked on CIBC’s internet banking applications which were eventually Java-based. I love to work on Java frameworks which make me think out of the box. So, my first open source project which am planning to contribute to it soon is

Spring Boot

I have attended Pivotal labs to learn more about how spring boot applications work. Spring boot helps to create stand-alone Java applications which can either be deployed as WAR files or we can run it using spring boot runner using java -jar.

  • It provides built-in features such as embedded servers, health checks, security etc.
  • No need for code generation and no requirement for XML configuration.

Please refer to these links for more information:

Github

Official Website

NativeScript

It is a framework for building native Android and IOS applications using Javascript and CSS. It will help render UI with the help of the native platform’s rendering engine without using Web Views.

It will basically use Cross-Platform JavaScript modules from a single javascript codebase. I am really excited to work on NativeScript and want to contribute to this open source project. Please refer to the links below for more information.

Official Website

Github

ASP.net Core

ASP.net core is an open source framework which is used to create cloud-based internet connected web applications. It is a cross-platform framework so web applications created using ASP.net core can run on Windows, Mac, and Linux.

It provides Razor views which makes coding easier and more productive. You can build ASP.net MVC applications which are based on Model-View-Controller pattern. It can also integrate with client-side frameworks and libraries such as Angular, Bootstrap and React. Please refer to these links below for more information.

Github

Official Website

by hjpatel16 at February 12, 2019 09:48 PM

February 11, 2019


Olena Vyshnevska

Release 0.2, First Pr

This week I was working on an open source Hypixel data platform called Slotpixel. The project is in the early stage of development, and yet they have no code in production. However, it was a good chance to gain experience contributing to a new project and practice the workflow.

The technologies this project uses for its front-end are the following:

  • View: React
  • State Management: Redux
  • CSS: styled-components
Back-end:

  • Microservices: Node.js
  • Database: MongoDB/Redis

For my first issue, I picked a small bug that asked me to fix the alignment of an icon on the website. The instructions for this issue were really straightforward, they included the screenshot depicting the problem and listed all files that might be related to this bug. 

After I forked the repo and followed all instructions to quickstart and configure the project (it required to install node.js and to do some reading on React and Redux) I was able to create a branch for my issue and finally start working on it. The fixes themselves didn't take too much time, the hardest part of the first PR was to set up the project and to get it working on my machine. After I pushed my changes it took less than a day for the project maintainer to review and merge my pr! So the issue is successfully closed now and I'm in the list of contributors of my first open source project.

My issue :
My PR:

by Olena Vyshnevska (noreply@blogger.com) at February 11, 2019 02:50 PM


Abdirahman Guled

Open Source Projects

Before I begin, i would like to start by explaining what an Open Source is.

Open-source is a software source code made available to the public. Under licenses the copyright holder allows users the rights to study, change, and distribute the software to anyone and for any purpose.

Now that we know what an open source is, where do we begin? what is the first step?

In my OSD600 course, I was asked to research 3 open-source projects that I’m interested in, but before I do that i have to ask myself these questions:

  1. Which programming languages, and technology stacks do I like to work in?
  2. Which programming languages, and technology stacks would I be interested in learning?
  3. What sorts of programs, systems, technologies interest me?

Since I started my studies, I have always been interested in web and app development and so far for web development, I have so far learned front-end and back-end using JavaScript(Anguler, Nodejs, Knockoutjs, Expressjs, React, Ejax). For app-development, I’m currently enrolled in android development course. I’m using java to develop apps. In the future, I plan on studying iOS development using Swift and Objective-C. However, I’m interested in developing apps using React-native.

Below are 3 projects i would like to contribute and GitHub repository:

  1. React-native
  2. React
  3. Angular

React Native

React Native is JavaScript framework. It is used to develop IOS and Android applications. I have no knowledge in this library, but wish to learn and contribute to this project as it is compatible with most of mobile Operating System.

facebook/react-native

React

React is JavaScript library. It’s used to construct user interfaces. It’s built and maintained by Facebook. I have had some experience with this library, but I want to build on my current knowledge.

facebook/react

Angular

Angular is a TypeScript based JavaScript library. It’s used for both back-end and front-end. It’s developed and maintained by Google. I have also used angular to develop front-end and would like to continue to build my current knowledge.

angular/angular

by abdi guled at February 11, 2019 06:44 AM

February 10, 2019


Jatin Kumar

My Next Steps in Contributing to the Open-Source Society


Photo by Markus Spiske on Unsplash

After successfully getting started with contributing to the Open-Source society. I am planning to work on four new Open-Source projects in the future.

Check out my previous blog post to know more about my first contribution to the Open-Source society.

MICROSOFT – VS CODE

VS Code is a type of tool that combines the simplicity of a code editor with what developers need for their core edit-build-debug cycle. It provides comprehensive editing and debugging support, an extensibility model, and lightweight integration with existing tools.

  VS Code is built using Javascript, Typescript, and CSS on top of Electron framework.

I have been using the VS Code for two years and I love this code editor. I usually develop web apps using the VS Code. Currently, the VS Code has around 4500 issues on GitHub. I want to help the VS Code by fixing some of its issues. Also, I will become more familiar with Javascript and TypeScript.

Website

GitHub

BRAVE – BRAVE BROWSER

Brave is a free and open-source web browser available on Windows, MacOS, Linux, Android, and IOS. Brave is designed with a built-in adblocker to provide an ad-free and seamless browsing experience.

The Brave windows browser is built using JavaScript and Brave android app uses Java.

I have been using Brave for six months but never thought of contributing to it. Now, I am planning to resolve potential issues to both the Brave Windows browser and the Brave Android App. I will be able to improve my front end skills with JavaScript. I will also gain a deeper understanding of different functionalities of the web browser.

Website

Google Play Store

GitHub – Web

GitHub – Android

DUCK DUCK GO – ANDROID

Duck Duck Go is an Internet search engine available on Web, Android, and IOS platforms. The astonishing thing about this search engine is to protect the user’s privacy. It avoids the filter bubble of personalized search results and shows all users the same search results for a given search term.

The Duck Duck Go Android app is built using Kotlin.

It has been a month since I started developing on Android apps using Java but never worked with Kotlin. It will be a great opportunity for me to learn about Kotlin. I am planning to resolve the backend related issues of the project. I will also learn about how a search engine works.

Website

Google Play Store

GitHub

TEAMMATES

TEAMMATES is a free online tool for managing peer evaluations and other feedback paths of your students. It is provided as a cloud-based service for educators/students and is currently used by hundreds of universities across the world.

The Teammates website uses both Java and TypeScript.

I am really good at Java programming and want to contribute my skills and time to resolve issues on the project. Moreover, I will be able to develop my programming skills with TypeScript. I will be able to further develop my knowledge/understanding of the Java production-ready applications.

Website

Github

Let me know if you want to recommend any Open-Source projects related to JavaScript, Android and Machine Learning.

by jatinkumar at February 10, 2019 07:08 AM

February 09, 2019


David Li

OSD600 Lab 3 – Interesting Open-Source Projects

Links:

https://github.com/mozilla/pdf.js
https://github.com/nodejs/node
https://github.com/facebook/react

pdf.js

pdf.js is a Mozilla Labs-supported Portable Document Format (PDF) viewer built with HTML5. The goal of this community-driven project is to create a general-purpose, web standards-based PDF parsing/rendering platform.
I chose this project because PDFs are one of the most popular formats of handing over documents online. While they are easily handed over, a method to read them requires a web-browser plugin or a separate program all-together, which can really be a hassle.
With this project, I hope to familiarize myself with different ways of committing to a project and to add to my portfolio of projects I have contributed to. I would also like to learn about PDFs and how they are rendered through this project.

nodejs

Node.js is an asynchronous event driven JavaScript run-time environment designed to build scalable network applications by executing JavaScript code outside of a browser. Any web-developer knows the importance of this environment.
I chose this project because of the size of it. Contributing to a large project, even if the contribution is not that large, still looks nice on a portfolio. Having taken web development classes, the use of node.js cannot be stressed enough, thus I wanted to get into this project to see how it works on the inside.

React

React is a JavaScript library used for building user interfaces. Declarative React can be used to create interactive UIs painlessly and design simple views for each state of the application. This type has React efficiently update and render the right components when data changes occur, making it easier to predict, understand and debug.
I chose this project because it is used often in web development. Websites that are not plainly hard-coded will use React or something else to create effects on the website, making it fancier without needing to reload the page every single time. Taking web development classes has shown me what it does, now I am interest in knowing how it does it.

by dli119seneca at February 09, 2019 04:34 AM


Vincent Logozzo

Open Source Projects

As vast as the open source community is, and with such variety, there are a few projects that peak my interest because of my personal use with them or my love for the language there written in. The three project i'm interest in are WeakAuras2, VScode, and Node.js.

Weakauras2

weakauras2 is a add-on for the popular game World of Warcraft, it's what they call a "powerful and flexible framework that allows the display of highly customizable graphics on World of Warcraft's user interface"


The above photo is a in-game example of weakauras in action, allowing you to create icon, progress bars and even animations triggered by almost anything you do or can do in the game. I chose this project because I am an avid user of the add-on and its modularity, especially with custom code has made a coding aspect of the game fun for me. The add-on itself is written in LUA and thanks to the add-on I have learned my share of LUA, so to start contributing to this project I would need to learn more about file structure and how data from the game interactions with the add-on, as well as its own dependencies. I would like to contribute features to this project that people can use in-game to augment there experience.


VScode

"VS Code is a type of tool that combines the simplicity of a code editor with what developers need for their core edit-build-debug cycle. It provides comprehensive editing and debugging support, an extensibility model, and lightweight integration with existing tools." I can't say it better then this. It is pretty hard to have never used VScode these days, I personally believe it is one of the best code editors for web development. I chose this project because the entire project lives and breathes modularity, any feature not already apart of VScode can be included with a extension, this really opens up the options for feature implementation and bugs, lots of bugs, almost 5000 at the time of writing this. To start contributing to this project i'll have to brush up on my typescript and start learning there API for things like the fly-out list menu.


Node.js

Node is a "asynchronous event driven Javascript runtime". My knowledge on Node is pretty limited, besides my repeated use. I personally have used node to run web servers and install dependencies through NPM, but I would really like to learn how it ticks. In terms of what I want to do with this project, i'm not sure yet, I need to learn more about node's capabilities. To start contributing to this project, i'll need to learn the methods and be able to test and recreate some bugs people are finding within the project.

by Vlogozzo (noreply@blogger.com) at February 09, 2019 04:09 AM


Anh Hoai Ung

Lab 3

Hello everyone

So It has been a while since I started learning about Open Source Development, and of course being open also means you can help contribute to other people’s project too. I have always love to coding with JavaScript and C++ and doing Front-end development in general. After a long time searching through collections in GitHub, I have finally chosen BananaBread, Command & Conquer and Untrusted as project that I am interested in

1. BananaBread

BananaBread is a compact and efficient 3D game engine according to the author that use JavaScript and WebGL, with it programmer can build a First Person Shooter game in web browser. I chose it because I am interesting in the idea of an 3D game engine and shooter game, it also uses C++ language, which is one of my favorite language and the one that I am familiar with. I would like to help with any issues that was posting, or even test the project and post issu by myself. I think I need to dive deeper into JavaScript and C++ language to be able to contribute.

2. Command & Conquer

This is one of my favourite, because it is my favorite Real Time Strategy game that are made in HTML5 and Javascript. I have been learning some Web’s language, so that is why I would like to have project that I can contribute to. I will also try to support this project with my knowledge, although it maybe not enough.

Untrusted

This is an interesting one, becasue it is an Meta-JavaScript Adventure Game that is running on Javascript, and the gameplay is really interesting. It is running on Javascript, so I can learn alot from this project, and also help with whatever I can.

So that is it folks, I hope that you are interesting in these projects just like I do, see you later in the next lab, cheers.

by hoaianhkhang at February 09, 2019 03:19 AM


Sahib Arora

Open Source

Hi Guys,

I hope from my previous blog posts, you might have gained some information about Git and GitHub. Now question is, how can you use all that information.

I will today introduce you all, to some Open source Projects,

Firstly, What is Open Source??

Open source projects are projects whose source code is available to everyone. Yes, your favourite IDE’s (Visual Studio) code is available to you and its not just available, you can go and file issues, you found while working on one of your projects and you know what is amazing, you can not just file but also fix bugs for them. Isn’t it cool.

Why Open Source??

Now days, Open source has created so many opportunities for young developers to show their skills in the market by contributing to all these Projects, Business needs developers, If not trust me listen to Microsoft CEO, shouting about developers!!! So, this provides you the platforms, where you can be recognized, So, my friend sit inside your home and shout in the world with your skills!!

Open Source Projects to start with: (There are millions available outside, its just a suggestion, explore and find yours)

  • Sinatra:

Sinatra is a free and open source software web application library and domain-specific language written in Ruby. It is an alternative to other Ruby web application frameworks such as Ruby on Rails, Merb, Nitro, and Camping. It is dependent on the Rack web server interface. It is named after musician Frank Sinatra.

You Love Ruby Go ahead and contribute. (Website) (Code)

  • Node.js:

Node.js is an open-source, cross-platform JavaScript run-time environment that executes JavaScript code outside of a browser.

If you are a Web developer, you know the importance of Node.js, go and contribute to one of your favourite libraries. (Website) (Code)

  • VSCODE:

Visual Studio Code is a source code editor developed by Microsoft for Windows, Linux and macOS. It includes support for debugging, embedded Git control, syntax highlighting, intelligent code completion, snippets, and code refactoring

you all know way more than described above. Go and contribute. (Website)(Code)

In the comments below, tell me about yours, who knows my next project could your suggestion.

Thank you,

by sahib Arora at February 09, 2019 03:16 AM


Oleksandr Tkach

Open source and where to find it.

The best place to find an open source is Github, so I started a hunt for some interesting project from this mysterious place. The goal was simple (it wasn’t) – research a three potential projects on which we probably can work in a future. Sounds simple isn’t it? However for a young student like me it was a little bit tricky, because of two factors which i need to put into a count. Ether I’ll look for a projects which will be interesting to me OR I’ll look for some projects which will be useful for me in a future. After long time thinking about which one to pick I decided to go with interesting part. As a result, all choices which were made are based only on my interests not on how useful these projects will be for me in a future. So here we have these guys:

Golang – i think after this it should be a description or how cool this language is, but not today. The reason for this is that I didn’t work with it at all. The only thing i know about Golang is that this language is very new and that one of my friends almost worship this language. I heard from him about how cool it is so many times that only this fact makes me to choose it as my first option. It always good to learn something new so why not to give it a try.

Playcanvaswas my second project which i chose. It’s a open source game engine which allows to play games in different browses without need to install plugins. It’s something completely new to me too, but I’m little bit curious about games and VR, so decided to choose it as an option.

Angular it was my last project of choice mostly because I currently working with angular on my implementation part of project and want to say I like it.

by tkacholeksandr at February 09, 2019 12:43 AM

February 08, 2019


Al Vincent Valdez

Three potential projects

1. Open TTD

This project is an open source business simulation game. Some important links for this project are their website and their github repo. I selected this project because this was game I used to play when I was younger. I really enjoyed playing back then and now that I can start contributing to open source projects this is a project I wouldn’t hate contributing to. For now what I am looking to do is just to do some simple bug fixes and if I really enjoyed working on this project, I might consider adding additional functionality to the game. It is programmed in C++ and I am already familiar with that language so all I need to do is just become familiar with the games code base and documentation.

2.Godot Engine

This project is an open source game engine. Some important links for this project are their website and their github repo. I selected this project because I’ve always wanted to learn how game engines work and now that I have the opportunity might as well try it out. What I want to do with project is just do some simple bug fixes and see if I enjoyed working on this project. Godot is programmed in both C and C++. I’m already familiar with C++ and have done some stuff in C before, but that was a couple years ago so I’m gonna have to refresh my knowledge of C.

3. JARVIS on Messenger

Jarvis is a bot on facebook that has automated responses to messages sent to it and can also do things like play some small games with users who message it. It behaves similarly to a discord bot. Some important links for this project is the facebook page to message jarvis and the github repo for this project. I selected this project because it seemed to be a good open source project to contribute to, for a first time contributor to the open source community. What I want to do with this project is just make some small bug fixes and if I enjoyed working on it is to contribute my own functionality for Jarvis. What I need to learn to contribute to this project is python since I am unfamiliar with that language.

by Alvin Valdez at February 08, 2019 11:24 PM


Yuansheng Lu

Lab 3: three potential projects

1. best-resume-ever 

This project is a web application which builds fast and easy multiple beautiful resumes and create your best CV ever. It’s made with Vue.js and Less.
The reason why I choose this project is that I am currently doing my 6th semester and start to look for a job. This web application is really helpful because it can generate some beautiful resume templates for me.
I plan to fix some bugs in this open source project. In order to finish this project, I need to learn Vue.js and Less. I don’t have any experience on those technologies.

github repo link: https://github.com/salomonelli/best-resume-ever

2. bootstrap-slider

This project is a complete rewrite of the original bootstrap-slider by Stefan Petre. It implements the slider component using CSS and JQuery.
I choose this project because I need to use the slider component in a final project for the other course. Reading this project’s code really help me finish my final project.
I plan to create some test files to test some new untested features in this project. In order to get this project done, I need to learn more CSS and JQuery.

github repo link: https://github.com/seiyria/bootstrap-slider

3. handsontable

This project is an is an open source JavaScript/HTML5 data grid component with spreadsheet look & feel. It easily integrates with any data source and comes with a variety of useful features like data binding, validation, sorting or powerful context menu.
I choose this project people usually use Excel or spreadsheet in their life. Now we can use JavaScript and HTML5 to implements it. I am very interested in how it’s implemented.
I plan to fix some bugs in this project because I can see lots of issues has been filed. I need to continue to learn JavaScript and HTML5 to get it done.

github repo link: https://github.com/handsontable/handsontable

by luysh0420 at February 08, 2019 09:12 PM


Julia McGeoghan

My First Contribution to Fast-Dna

Recently I created a Node.js script for a Microsoft component library called fast-dna. During this I learned a lot, including:

I’ve already blogged about this piece before, but today will be an overview of what I actually did and how. Next week I’ll focus on something new.

What I Made

Fast-dna is composed of many different npm packages, where most webapps are one just one package. Each package has its own readme.

Referencing readme files in so many different folders can make things difficult. It’d be easier to store them all in one folder so if they need to be read by a process, this process just needs to traverse a single folder.

The script I wrote does just that. It takes the readme files in these packages and copies them to a separate docs folder. From there they can be referenced by fast-dna’s documentation site.

Before it’s run you’ll see the docs site only includes one option for its many packages.

The new script in run from the root folder, with the npm run docs:build command. The result:

As the script runs, it will print success/error messages to the terminal:

A dry run version of this script can be run. The command npm run docs:dry-run triggers it and outputs:

This submission was broken down into two stages/pull requests, since it made it easier for project maintainers to review my changes.

PR #1

At this stage I’d create a script in the ./build/documentation/copy-package-readme.js folder that copies all the package readme.md files to the ./docs/en/packages/[package-name]/ folder.

Writing the script that copied the files what fairly straight forward at this point. But as you‘d see in the PR itself I struggled with cross-platform issues for a bit. Using Node’s path module remedied that.

During the review process the person that requested the feature mentioned that a dry-run process be incorporated.

PR #2

At this point the script worked, but wouldn’t be recognized by the separate documentation site fast-dna used to serve its doc pages. To make this happen, at the beginning of each copied readme I needed to add a unique header formatted like:

Update a JSON file that contolled the side naviagtion for the site:

And finally create npm commands for the regular and dry run versions of the script so they could easily be used by people.

I had fun working with the files and learning how to manipulate them. It was cool to see how I could read from a JSON file, parse it, manipulate/add to it, then save the file again so it could be used by some other process soon down the line.

Something I was proud of was that I wasn’t dinged by the repo’s code climate bot for the majority of this process. It’s not like I was writing some massive feature but it kind of felt like a floor-is-lava situation where I just…you know….

However it ended up happening anyways, right at the end of my contribution…

It’s basically complaining about how one of my functions had too many conditional statements.

But it was for a good, approved reason, kind of.

Originally when I wrote the dry run feature I was able to avoid angering the code climate bot by separating all of its logic in its own function, to avoid having too many conditional statements. But then one of the project’s maintainers mentioned that I should have the regular and dry run code paired together in the same places of the code.

And they were right. When a dev does something as simple as a quick fix, the dry run and regular run could be out of sync. Having them coupled together made this easier to maintain. But, at the same time, this made the code slightly more difficult to read and work with. Was there a way I could potentially preserve the readability of the code without making it difficult to keep these identical processes in sync? Probably.

Earlier in this process it was mentioned to me by one of my professors that the Strategy design pattern might be a good fix for this type of problem. I wanted to try and implement it, but at that point I’d already written a lot of the dry-run’s functionality, and I was hesitant to make use of it. I think I should have known about it from the onset so I could have pitched this strategy before starting any work. This PR highlighted an important gap in my knowledge, I need to have a better working understanding of design patterns so I can avoid this sort of issue in the future.

Final Thoughts

This contribution had a lot more feedback compared to what I was used to for other projects. This was a good thing, and something I was hoping for, however it meant that it took me longer to complete things than I’d initially have expected. I couldn’t just make a submission and expect it merged, or for me to tweak one or two things then have it accepted. Whatever I made would need to go through multiple iterations.

I want to write the best code possible; but proper variable names and concise functions are just the tip of the iceberg. Proper abstractions need to be used too.

by Julia McGeoghan at February 08, 2019 07:47 PM


Volodymyr Klymenko

Working on a bug in Microsoft VSCode (Part 2)

One week ago, I posted an article on how I started working on a bug in Microsoft VSCode. If you haven’t read it yet, I highly recommend reading it:

Working on a bug in Microsoft VSCode (Part 1)

Quick Recap

The search bar in the extensions part doesn’t save the value if you reload the window.

Steps to reproduce this bug:

  1. Type something in extensions search
  2. Reload window

After reloading the window, the search bar value has gone.

Fix

In the last article, I finished my research, my assumption was that extensions search bar needs to implement some kind of viewletState, which will keep track of its value. I came to this assumption by comparing extensions search bar with the search bar in the Search part of VSCode because the second one keeps the input value even if you reload the window.

After some time, I got a response from Microsoft’s member, and he confirmed that my guess is right. Thus, I could start developing my solution. Even though I knew what I have to do theoretically, it took me a lot of time to implement this bug fix because codebase is large, and I basically couldn’t figure out where exactly and what I should code.

As I found earlier, extensionsViewlet is the component which creates the whole extensions section. When I looked at its code, the following property caught my attention:

private searchBox: SuggestEnabledInput;

After setting some breakpoints and debugging it, I found that this is the input field that I am looking for. When I debugged my breakpoints, I noticed that after I reload the window, and searchBox was rendering, its SuggestEnabledInput constructor is called with these parameters:

constructor(
    id: string,
    parent: HTMLElement,
    suggestionProvider: SuggestResultsProvider,
    ariaLabel: string,
    resourceHandle: string,
    options: SuggestEnabledInputOptions,
    @IInstantiationService instantiationService: IInstantiationService,
    @IModelService modelService: IModelService,
)

I found that options parameter consists of

  • placeholderText?: string;
  • focusContextKey?: IContextKey<boolean>

and the input parameters are assigned to these options.

I tried to add value to the SuggestEnabledInputOptions interface, and pass a “test” string in the extensionsViewlet. Voilà! Each time searchBox is rendered, the default value is “test”:

A small milestone was completed. Now, my task was to keep track of the value and save it inside the state.

Based on the implementation of viewletState in the searchView, I created a searchViewletState in the extensionsViewlet.

I declared a state object at the top of the extensionsViewlet class:

private searchViewletState: object;

Then, I wrote a method for saving the state:

protected saveState(): void {
    const value = this.searchBox.getValue();
    this.searchViewletState['query.value'] = value;
    super.saveState();
}

Finally, I used the value from the searchViewletState in the extensionsViewlet create method and passed to the searchBox constructor inside options object (last line):

Here is the result:

As you can see, I type “react” in the searchBar. Then, I reload the window, and the searchBar has a value of “react”!

Conclusion

It was one of the most challenging contributions for me. There are several reasons for that:

  • VSCode has a large codebase, so it was difficult to explore the code and not everything was obvious.
  • I haven’t worked with TypeScript for a while. However, TS actually helped me at some stages of development, and I consider using it in my future React projects!
  • There wasn’t any similar bug fixed in this project before, which is quite seldom for open source projects.

I overcame these challenges, and I was able to fix this issue. I am proud of contributing to the software that millions of developers are using! It’s great to add VSCode to my portfolio of open source contributions.

by Volodymyr Klymenko at February 08, 2019 07:01 PM


Alexei Bonilla

Bon's Blog 4 - Discovering Open Source Projects

LEEEEEROY JENKINS

Context - For those who don't know. For those who do, this is me diving into the world of open source projects. 

Welcome back to the blog sailors, today I will be taking about some open source projects that I will be contributing too in the near future.

Things I will mention for each project.

  • What is the project?
  • Why did you choose it?
  • What would you like to do with the project?
  • What would you need to learn?

The first project I would like to contribute too is the opencv project. I am currently working with the 3.0.0 release in another course and would like to deepen my knowledge on the subject, and potentially make it better. I would need to learn more about the project while also brushing up my math skills.

The second project I would like to contribute too is the HexGL project. I chose it because although I have personally never liked racing games I have an interest to work with one. If you want to try this game out you can by clicking this. I would like to fix some potential issues I can find while playing.
Since the game was developed with familiar languages to me, I will just need to learn the code used.

The last project I would like to contribute too is the Pomber project. This project displays the history of a file in a stylish way by just adding a few words to the URL. I chose this project to help familiarize myself with GitHub. To get started I will need to understand the code.

Today's blog was short and sweet, like the weekend unfortunately. I'll catch you in the next one.

Bon 


by abonilla1 (noreply@blogger.com) at February 08, 2019 06:54 PM


Joshua Jadulco

SimpleCalendar – Automatic Contact’s Birthday Syncing

Introduction

Over the past 2 weeks, I’ve been working on this Issue and the corresponding Pull Request is here. The feature request is pretty simple – when the application starts, it should sync the Birthday info of a new Contact if it’s given the required Android app Permission to access the Contacts. However, it is quite a tedious Issue to tackle as it’s concerned with a variety of Android development topics that I haven’t touched before – namely Threads  and Android app Permissions. At first my approach to this problem was to use the Android WorkManager  API but this proved to be way complicated necessary for the intended purpose and debugging it became a pain because it involved injecting new dependencies for the SimpleCalendar app.

So what was the solution that I ultimately ended up using? I used old fashioned way of using a Thread lambda function. It’s simple but it just works.

Threads

When you start an Android app, it always runs on a Main thread and you usually don’t need to worry about this because if your app is simple enough, one Thread should be enough and there’s no need to worry about multi-threading. However, if your app has grown large enough and there are tens of requests to be performed at the same time, you will need to learn and use multi-threading because if you only use the Main thread to execute all the resource intensive API calls, eventually your app will slow down and possibly crash as its UI becomes unresponsive to the user. In essence, the use of multi-threading is concerned with utilizing multiple Threads to execute API calls so that the Main thread – which is mostly concerned with the UI – would not be slowed down. Think of  the process concept of multi-threading as organizing a group of people to perform multiple tasks that eventually aim to deliver one result. When you don’t use multi-threading, you’re essentially forcing multiple tasks upon 1 person and you can immediately recognize the problem.

Background Syncing of Contact’s Birthday Information

So how is Threading useful for implementing the feature request? It is useful because we don’t want to use the Main thread to run the background sync as the Main thread itself needs to run many function at start and there might be possible complications (i.e. race conditions) that might happen when we use the Main thread for this process.

SimpleCalendarSyncBirthdayFunction

As shown above, I spawned a new Thread to handle this background task. There are two functions to pay attention to in the above screenshot – addContactsEvents() and updateViewPager().

The addContactsEvents() function basically takes care of handling how to process a Contact that has a Birthday information available in one of its fields. However, this only proceeds if the PEMRISSION_READ_CONTACTS condition is true – which means that if the SimpleCalendar app has the Permission to read the device’s Contacts, it can then add a Contact’s Birthday information to the calendar.

Take note that the aforementioned process happens in the background – basically it doesn’t update the UI yet until the updateViewPager() function is called. When the updateViewPager() function is called, the UI (which runs from the Main thread) is updated since there are now new Birthday events added to the Calendar. Why is this the case? This is the case because the SimpleCalendar app follows the MVC (Model-View-Controller) architecture.

When 2 processes above are completed, the SimpleCalendar app’s UI refreshed with the new Birthday event of a Contact updated. In the following demos, I would cover all three cases possible when this feature is implemented.

Demo

SimpleCalendar when no new Contact Birthday
NoNewBirthdaysFound

SimpleCalendar – A new Contact with Birthday information available has been successfully added
SuccessfulContactAdded

SimpleCalendar – The app has been denied permission to sync Contacts

ContactsPermissionDenied

by joshj9817 at February 08, 2019 05:59 PM


Xiaowei Huang

Lab 3 – Potential Open Source Projects

The core for this course is to work on some on-going projects with different online, personally speaking. I am interested in big data which is a heat in recent years, and I believe it could remain this trend in a long period. I also want to work on some Java language project as I prefer to use and practice my technique during my study term.


OpenRefine is a Java-based power tool that allows you to load data, understand it, clean it up, reconcile it, and augment it with data coming from the web. All from a web browser and the comfort and privacy of your own computer.

This project is my first choice, as it is a tool dealing with data. Currently, we are surrounding by the data flow. It could be some ways those data could be utilized and visualized for further analysis and usage. OpenRefine provides me a chance to look through. Besides their GitHub page, they also have an official website with tutorials.

GitHub: https://github.com/OpenRefine/OpenRefine

Official website: http://openrefine.org/


Free multi-platform database tool for developers, SQL programmers, database administrators and analysts. Supports any database which has JDBC driver (which basically means – ANY database). EE version also supports non-JDBC datasources (WMI, MongoDB, Cassandra, Redis).

  • Has a lot of features including metadata editor, SQL editor, rich data editor, ERD, data export/import/migration, SQL execution plans, etc.
  • Based on Eclipse platform.
  • Uses plugins architecture and provides additional functionality for the following databases: MySQL/MariaDB, PostgreSQL, Greenplum, Oracle, DB2 LUW, Exasol, SQL Server, Sybase/SAP ASE, SQLite, Firebird, H2, HSQLDB, Derby, Teradata, Vertica, Netezza, Informix, etc.

DBeaver is also another database across multi-platform. Database is always a big topic around the industry and DBeaver could work well with it. I also would like to have a try to work with them.

GitHub: https://github.com/dbeaver/dbeaver

Official website: https://dbeaver.io/


A distributed transaction solution with high performance and ease of use for microservices architecture.

History

  • TXC: Taobao Transaction Constructor. Alibaba middleware team start this project since 2014 to meet distributed transaction problem caused by application architecture change from monolithic to microservices.
  • GTS: Global Transaction Service. TXC as an Aliyun middleware product with new name GTS was published since 2016.
  • FESCAR: we start the open source project FESCAR based on TXC/GTS since 2019 to work closely with the community in the future.

by Violet H. at February 08, 2019 04:30 PM


Brandon Wissmann

Finding That Perfect…

Finding that perfect open source project to contribute to — hopefully easier than finding your soul mate.

This week I went on the hunt for potential contribution candidates. My goal was to find some opensource projects that I’ve used in my day to day life and whom also have the activity of an unearthed ants nest. Simply enough I judged this by the amount of open issues as well as any sign of recent life. Today I will introduce you to my personal short list of projects I intend to contribute to sometime in the near future.

Metamask

Metamask is a browser extension which allows you to interact with dApps without running a full ethereum node. Specifically I am interested in their main repository for the extension itself which is written in JavaScript. While the documentation is not the friendliest I’ve come across I believe it to be straightforward enough for me to work on.

The reason I chose this project is because I have used it as a tool is the past. It is not only great for real world use but also as a development tool while building dApps. Furthermore, I’ve never worked on a browser extension before and I believe it would be interesting to learn the inner workings of such a complex one. For now, I only intend on working on smaller issues as the complexity of the project is a bit daunting. In this case, it is probably best to start with baby steps.

Hyper

Hyper is an open-source command line interface which is built on web technologies. It is an incredibly flexible command line as it supports plugins and themes. It uses standard HTML, CSS and JavaScript to render this. Unfortunately there does not appear to be any documentation available, I will have to learn as I go. Their repository on GitHub appears to be very active. It is possible also that I venture into the xTerm repository as this is what is used to emulate the console.

I’ve chosen this project as it is my currently command line of choice. I enjoy that it has the ability to be customized as well as having tabs. The community looks very inviting as well.

Leiningen

Leiningen automates the process of setting up and building a Clojure project. At the moment it is the most widely contributed to Clojure project on GitHub and therefore I believe it is a good candidate. I use it regularly and it definitely makes the process seamless. The project has a contribution page which is very friendly and for me displays they appreciate their contributors. Up until this point I have never worked in a large Clojure environment and my experience is limited to ClojureScript web development. I am hopeful this will take me out of my comfort zone and allow me to develop best practices in Clojure.

I intend to write about my success and shortcomings in the following weeks regarding my Open Source contributions. Wish me luck!

by Brandon Wissmann at February 08, 2019 04:16 PM


Paul Moon

Open source projects

In hopes to enter into a open source community and start becoming a contributor. First I would need to know the open source project and what they are about. Just like a job interview, I should research the project, the community and the the “culture” of it.

Open Broadcaster Software

The first project I looked into it was Open Broadcaster Software, mostly known as OBS. OBS is a recoder/streaming software that allows you to record/stream your screen or a source program. It allows you to link to various streaming platform and stream your game play/screen/camera.

I thought this would be a interesting project and community to be in because I use this software regularly. Also with the new age of personal broadcast with twitch, YouTube, even Facebook and Instagram, this would be a interesting project to be part of.

They have a blog post about being part of the community written by one of the maintainers that does go over the basics and things should and should not do. Just like we have discussed in our class, it goes over basic commits, git commands, etc. I did check out their repository, and it would seem it is mostly doing pull requests and not so much as bug reports first hand

It would be nice to contribute to the community either by adding some sort of feature/extension or making some sort of minor improvement. That would require tremendous time and effort since I would have to be more familiarized with C++ and how an recording software works and functions properly.

Bitwarden

The second Project I looked at is Bitwarden, it is a password managing software/extension that store/sync/share sensitive data for Business and Personal. Again this is a program I use, for better or worse since I usually don’t know the password to login to most of my accounts outside of my personal computer. Although I could always set up keys and what not, but it’s not really a priority and been fine without it.

As the internet grows bigger and bigger, personal security and safety is becoming more important. As Baby Boomer generations are not too well versed in the computing and the younger generation not really knowing what to look out for. It becomes a serious risk, as some people would have their personal data or privacy breached which would lead to multiple things. Being a part of something that would protect such would be a great opportunity and privilege.

They have many different repository since they have quite the different versions. One of the desktop vault, server, browser extension etc. I would like to be part of the browser or the desktop repository, probably fix some minor issues or perhaps add a small feature. However I’d have to learn whole lot of html, javascript, node.js as well as gulp.

Angular.js

The third project I looked at is Angular.js, its a html enhancing application and making websites with better response and outlook. I thought this would be a interesting one as I am trying to create my personal website and having angular knowledge would let me make better and more creative website.

Open source is getting more popular and also personal advertisement is becoming greater on the web, since people all over the world can contact you. Having an website of myself with my contribution and projects would be a great and easy way to show myself to the world.

They have some pretty extensive contributions guide and of course the repository contains quite a bit of items. Being part of it would be great, fixing bugs would be ideal so that I do not run into such if I were to use Angular to make my website. However I have basic knowledge of JavaScript and not really familiar with Angular all that much, since I’ve never used it myself. I would have to learn lot more about Angular and what it does and how it does things. JavaScript to fix and commit, as well as some refresher of HTML

by bakamonomoon at February 08, 2019 02:09 PM


Iryna Thompson

Discovering Open Source Projects

Why Contribute to Open Source Projects?

There are a number of reasons why I want to contribute to Open Source projects written in Python or JavaScript languages.

First of all, these languages are interesting, relatively easy to learn and implement, and are widely used by developers. They have been among the 10 most popular coding languages for several years and are much in demand in the job market.

Working on Open Source projects can also be a good opportunity to improve my existing JavaScript and Python coding skills, UI/UX designing, manual and automated testing skills.

I think contributing to Open Source projects will also provide me with opportunities to collaborate with development and test teams that may even cross international boundaries and time zones. I will be able to help to enhance applications that can contribute to the IT community as whole and to society in general.

Finally, working on Open Source projects can help grow my reputation and my career as I can demonstrate both my contribution and coding skills. 

Potential Projects:

Brave Browser

Brave Browser

Brave-browser is a project to implement tools needed to build the Brave desktop browser for Windows, macOS, Linux, and eventually Android.

Why this project?

Because some of my friends contributed to this project, I read their blogs and it captured my interest. The project also uses languages I am interested in gaining more development and debugging experience with such JavaScript and Python and there appear to be a number of open bugs that need to be fixed.

Mozilla Thimble

Mozilla Thimple

Thimble is Mozilla’s online code editor. It makes it very simple to create and publish web pages while studying HTML, JavaScript and CSS.

Mozilla Addons-frontend

mozilla

This provides front-end infrastructure and code to complement the back-end mozilla/addons-server.

Why these Mozilla projects?

Because some of my friends contributed to these projects, I read their blogs and their projects captured my interest.

I also have been an independent Open Source QA manual tester for some Mozilla projects for around 3 years. During this time, I was introduced to automated testing through setting up and executing automated tests within multiple independently configured Python virtual environments (python – py.test, Selenium IDE/WebDriver, GitHub). I have always wanted to join an Open Source project as a JavaScript or Python developer, however.

by irynathompson0609 at February 08, 2019 06:03 AM


Priyanka Dhiman

Angular, Bootstrap, and Laravel: Three Open Source Projects that Interest Me

I want to contribute to Open Source projects that would help me improve my skills as a full stack web developer, and so I’m mostly interested in web technologies.

This includes projects that use JavaScript/TypeScript, HTML, CSS, SCSS, SASS, or even PHP. Since I have used Angular, Bootstrap, and Laravel before, I thought it would be quite interesting to get to know these three projects better.

Here are the links to these projects on GitHub:

Let’s look into each of these projects more, starting with Angular.

Photo by John Schnobrich on Unsplash

Angular:

Angular, as most of us know, is a framework widely used and popular in the web development world. It is focused on being cross platform, while not compromising speed and performance (see: https://angular.io/features for more about Angular’s awesome features).

Some of the tags Angular uses on its GitHub page include TypeScript, JavaScript, and web framework. There are more than 2200 issues currently open, and therefore there is a lot of scope to find issues that would be a good fit for beginners. Also, I have used and loved Angular for the past two years, so I am really interested in this project.

Some important links for Angular are https://github.com/angular and https://angular.io/. The first link is it’s github repo, and the second is it’s official website. The official documentation located on it’s website is really helpful for beginners and also has some sample code that help to learn it quickly.

Bootstrap:

With more than 260 open issues, Bootstrap also shows to be quite promising as a project for finding bugs that a beginner can work with and learn from. Some of these bugs include documentation, and some are CSS features. I have a feeling that I will find something great to work with here.

Bootstrap’s issues are located at https://github.com/twbs/bootstrap/issues. It’s website is https://getbootstrap.com/ and has information to help users get started. I find these two links to be extremely useful for Bootstrap. Like Angular, a lot of important links can be reached using these two pages.

Laravel:

Laravel is another Open Source project that I am interested in. I have taken a course that used Laravel, but unlike Angular and Bootstrap I have never used it outside of a classroom setting. I wanted to take this opportunity to get back at learning Laravel and getting to understand it better.

https://github.com/laravel/laravel is the GitHub page for Laravel, and https://laravel.com/docs/5.7/contributions is the contributing page. These are two useful links to get started with Laravel. What’s interesting about Laravel is that it’s GitHub page does not have Issues listed, and instead the Issues board is located at https://github.com/laravel/ideas/issues. I hope to find some good first bugs to work with in this project since currently there are 490 open issues present.

Another interesting link for Laravel is https://github.com/goodnesskay/Laravel-Open-Source-Projects.

— happy coding!

by Priyanka Dhiman at February 08, 2019 03:54 AM


Oleksii Polovyi

Good first issue

Today was a first good first issue hunt – GitHub repositories exploration process to find the projects to contribute to.

Having some prior experience with JavaScript and Python, I started looking for projects that will help to enhance my knowledge.

Pandas

Image result for pandas python logo transparent

The first project I explored was Pandas – it is a Python Data Analysis Library that is developed under the BSD 3-Clause licence. This project was recommended by @alexander-ponomaroff. My next step was to look through the contributor’s list and match it with the good first issue tag.

Skills required:

  • NumPy
  • Cython

Here is the good first issue that I found and would like to work on and the book recommended by devs.

Brave

Related image

This is the second project that I would like to work on recommended by @humphd. The main idea is private, secure and fast browsing on multiple devices. It is based on the Chromium project. I am planning to start with some JavaScript issues and move on to Swift bugs in the brave-ios repo.

Here is the second good first issue that I would like to work on.

Tensorflow

Image result for tensorflow logo

This is the third project that I would like to contribute to. Tensorflow is an Open Source Machine Learning Framework mostly written in C++ and Python. It would be an interesting experience to work with Machine Learning and Deep Learning. Here is another good first issue that I will attempt to solve.

by ApolllonDev at February 08, 2019 03:04 AM

February 07, 2019


Jacob Adach

Selecting my first Open Source Projects to Contribute to

The task seems so intimidating, like walking into the wolf den. These are the feelings I get when I look at different github repos and their open source communities. Nothing is easy, no one is there to really hold your hand on your first time through. It’s quite literally 0 to 100 and a lot of these repos don’t make it user friendly for first timers, sure an experienced open source contributor might know what to do but what about me? A student. From learning my first “hello world” a few years ago, to being babied by my school’s learning curriculum to being thrown into what feels like the gladiators pit, open-source communities on git-hub are very intimidating.

For one, they assume you know everything they are talking about. Like seriously, I do not. I’m a visual learner, fancy words and inside jargon do nothing but discourage me and make me feel inept. The feeling that everyone is a pro and I am to come in and ask a noob question like “can someone help me set this up”? The fear of retaliation from the community for being so ill informed would surely drive me away from such a question and maybe even turn me away from the community.

Furthermore when you first go onto a popular open-source project you are hit with an endless amount of information and there is no way to parse what information I will need depending, key work depending on my level of understanding. This is the main problem I find with open source projects, it doesn’t matter if I am a noob, novice, intermediate or experienced contributor. Regardless, I am hit with the same amount of content which I must navigate through.

Enough with the crying already, time to man up.

No one ever got stronger from doing nothing

Enough bickering and ranting and complaining, it is so easy to complain but I need to start diving into this world of open source. Everything seems scary and intimidating at first, but once you dip your feet in the water it won’t isn’t so bad. If others can do then why can’t I, there is no biological difference between me, you and others out there. We are all humans capable of comprehending the world around us.

I am sure that if anyone puts in a solid amount of effort into anything they will benefit greatly from it and have a deeper understanding of what they once didn’t understand.

This is my goal with open source, and there is no better time than now to start. So believe I have outlined some projects I glanced over which I will try to work with to contribute and communicate to their respective communities in the open-source world.

PROJECTS

GATSBY 2.0

Gatsby lets you build websites using REACT or as quoted by the official website “Gatsby is a blazing fast modern site generator for React.”

Github Repo

https://github.com/gatsbyjs/gatsby

Main Site

https://www.gatsbyjs.org/

Tutorial

https://www.gatsbyjs.org/tutorial/

Introduction

https://www.gatsbyjs.org/docs/

Examples of existing sites created by Gatsby

https://www.gatsbyjs.org/starters/?v=2

Examples of Gatsby Plugins which make coding look easier and less intimidating

https://www.gatsbyjs.org/packages/gatsby-image/?=

  
I chose Gatsby because I want to work with some kind of web development project.  Sometimes personally, I would like to create a webpage to display some data that I have collected and want to present in a graphical way, potentially anywhere in the world as long as I have an internet connection.  The issue is the amount of time it takes to create web apps with the current model, this project not only tackles that issue it also works with JavaScript which is a language I am more familiar with and enjoy.

The project is also somewhat active, with over 500 issues I can find something to work on or even talk to others about the project if I get stuck.

PROJECT

MAILPILE

Mailpile is a web-client based email service which emphasizes a clean and elegant user-friendly interface, encryption and privacy settings.  The project also supports a command line API for developers and can be used locally or remotely.  Currently there is no stable release, they are working towards a 1.0 release. 

Github repo

https://github.com/mailpile/Mailpile

Official Site

https://www.mailpile.is/

Getting Started links

https://github.com/mailpile/Mailpile/wiki/Getting-started

Demo

https://www.mailpile.is/demos/

Note:  The beta release is out of date, and some features may not work anymore, the developers are urging not to use these releases for anything except development.

I chose mailpipe for 2 reason the first is that I would like to try getting some hands on experience with Python which is the language this program uses.  Furthermore I have an interest in privacy, encrypting and web based programming for example dealing with clients and servers.  There is a good amount of activity on the project so asking for help should not be an issue.  And secondly, an email application seems like a good simple first time project to get involved with in the open source community. The more I understand the project the more comfortable I will be working with it.  

PROJECT

VSCODE

Vscode is a very popular code editor which a lot of developers use in the field.  The benefit of vscode is that it is lightweight, but at the same time it is a powerful editor which provides native support for such languages like Javascript, Typescript and NodeJs and has extensions for other languages as well. 

Github repo

https://github.com/Microsoft/vscode

Official site

https://code.visualstudio.com/

    Why did I choose it?

I use vscode regularly and thought it would be neat to see how it is all put together.  These guys push new releases monthly so I would be able to follow along and see the new releases functionality work in my own copy of vscode.  I feel like this will give me a better understanding of how a tool we use daily whether it be a source code editor, web browser or something else comes together and works with all its moving parts and pieces.


What goals do I have with these projects?

My goal is to start getting involved in open source and so my goals for these projects are to interact with the project communities, contribute and be involved with the project, pretty much get my hands dirty for the first time. I do not have wild expectations of fixing bugs which will WOW everyone because I believe that would be slightly unrealistic at my current level and experience but rather I will just practice being an open source contributor.

At the end of the day this will just be a learning experience with what seems like a steep learning-curve.

 



by jacobadach at February 07, 2019 05:27 PM


Rachael Scotchmer

Open Source Struggles - Finding A Project

For a lot of people -- myself included -- getting involved in open source development is a very, very daunting task. We all have our different reasons for being hesitant to jump in -- I, personally, struggle a lot with impostor syndrome, which I talked about in one of my previous posts. Another big hurdle for me, though, is finding a project to work on. Self-esteem issues are debilitating, sure, but it's hard to even get my foot in the door when I don't know what I want to do in the first place. Do I want to program in Java? C? C++? How about JavaScript or TypeScript? Maybe something I haven't used before, like Rust or Elang. The possibilities are endless!

And, quite frankly, pretty overwhelming... Especially if you're as indecisive as I am.

Fortunately for me, though, I do have some requirements -- those outlined by my assignment, specifically. The gist of it is that I need to make 4 pull requests by March 8, with deadlines along the way for each individual PR. Therefor, I need to keep an eye out for a project with a fair number of issues -- preferably, ones that are geared toward newcomers.

My professor also advised us to look into projects related to things we're interested in. For me, that means anything related to art or fictional stories. That narrows it down pretty well, so with that in mind, I went hunting for a few projects.

Bibisco

Bibisco is an application to help with writing novels. You can create characters, timelines, objects, scenes... Anything that would help in outlining a story. It's best known for the extremely in-depth "character questionnaire", which presents hundreds of questions for you to answer when creating a new character. I've used Bibisco a few times myself, and though it's not my favourite tool for the job, it's still hands-down one of the best applications for organizing your novel. Bibisco is written using Angular, and deployed as a desktop application through the use of Electron. I've used Angular pretty extensively in the past, though only with the CLI; Bibisco was built manually, which means there's a lot of new syntax to learn.

Learning is just part of being involved in open source, though, and I can't let myself shy away from the unfamiliar. Working on Bibisco would be an excellent learning opportunity, and a chance to hone my skills with web development (and learning Electron would be a pretty big bonus). That said, there aren't too many issues logged -- only 78, which span from 2015 to the present. Most of them seem to be enhancements, which are beyond the scope of this particular assignment. The only dedicated contributor is the maintainer, who regularly makes massive updates that include a lot of the logged issues. This makes me just a bit hesitant to get involved; there's a distinct lack of community support, and I don't want to step on any toes by working on something that's already in the process of being fixed. Bibisco might be better for Release 0.3 or 0.4... Or perhaps, just something I parse through in my free time.

React-JSONSchema-Form

Creating forms from JSON schema is something I've been looking into for awhile now, as they would greatly help with some of my personal projects. One of the potential solutions I've found was React-JSONSchema-Form, which also happens to look like a good project to contribute to. There's really not a whole lot to say about this one; it's pretty self-explanatory as far as what it does. With 232 issues, it's got a fair number of potential pull requests, though lack of labels means it's hard to find ones suitable for a beginner.

BookStackApp

I'm a sucker for wikis -- they are hands-down one of the best tools for worldbuilding, which is one of my favourite hobbies. BookStack is one of the nicer wikis I've stumbled across; it's pretty, and though I personally find the interface a touch confusing, it does seem to have everything a writer would need. That's not really what matters to me here, though -- right now, I'm looking more at what the developer side of me needs... And with 342 issues, I'd say BookStack has a fair number of bugs I could probably work on. The catch?

It's all PHP, baby.

I know I shouldn't be shying away from the unfamiliar, but PHP is a language I have not heard good things about. It's also a language I have zero experience in. My school phased out the PHP courses in favour of NodeJS, and I never had much of a reason to delve into PHP on my own time. That said, it's not a bad language to learn; it does seem to be pretty popular in the industry, and as someone who's interested in web-development, I should, at the very least, familiarize myself with it. Contributing to BookStack would help with that.

TiddlyWiki

Ok, I know I only had to research three projects for this assignment, but 1. React-JSONSchema-Form was very short and 2. I really wanted to look at TiddlyWiki. I've actually used it before -- not extensively, mind you -- and I thought it was pretty neat. ...And maybe a little confusing, but I think I'll blame myself for that -- something about not reading the documentation for the app makes said app a little hard to use. It's been a couple years since then, though, and I'd be interested in giving the app another try... And maybe contributing something of my own to it. With 671 issues there's plenty of potential bugs and other issues to fix, so hopefully there's something in there that's suitable for a beginner. TiddlyWiki is also written in JavaScript, on the NodeJS framework, which is something I've got a fair amount of experience with. All in all, it seems like a pretty solid choice for a project to contribute to.

by rscotchmer (noreply@blogger.com) at February 07, 2019 04:20 PM


Volodymyr Klymenko

Winning Best Car App challenge at UofTHacks

Winning the Best Car App challenge at UofTHacks

Two weeks ago, I attended UofTHacks — a 36-hour MLH hackathon hosted by the University of Toronto. 500 students (about 100 teams) from Canada and the United States of America spent their weekend generating ideas and developing prototypes of their ideas. Teams could hack on whatever they wanted. There were prizes for top 3 hacks as well as prizes for sponsors’ challenges. I teamed up with my friends, whom I have met during my internship at Royal Bank of Canada. Our team consisted of one business person — Samana, and three devs — me, Miranda and Patricia.

The opening ceremony took place on Friday evening, where organizers and sponsors welcomed all the hackers, and the UofTHacks VI officially started!

https://twitter.com/as_w/status/1086433774697472000

Then we had chicken curry for dinner 😋🍛
After that, my team and I started a discussion of what we want to build in the following 36 hours.

Idea

First of all, we looked at the list of challenges and brainstormed ideas for each challenge. At some point, Smartcar API caught my attention, and I thought: “What can we build with it?“

The most obvious option is car sharing app because Smartcar API can provide the location of the vehicle. My first suggestion was Airbnb for cars. The idea was that user would be able to rent vehicles from other people. However, a quick Google search showed that there is an existing startup called Turo in Silicon Valley.

My follow-up idea was Tinder for cars 😆 Actually, there were a few “Tinder for cars” on Google, but those apps were supposed to connect car buyers with car sellers/dealerships. My idea was to connect car drivers, who want to escape from their day-to-day driving experience and replace it with a new car for some time.

Our team discussed this idea, and we decided to proceed with it. The next step was to think about some features of the app. We came up with two main parts of the potential app:

  • Car dashboard — displays car information
  • Matching screen — car enthusiasts would look for a car they want to drive for next couple of days

Design

Then we thought about what kind of data we can display. Here is the data we can get for each vehicle from Smartcar API:

  • Basic vehicle info (id, make, model, year)
  • User ID
  • Location of the car
  • Odometer value
  • VIN (vehicle’s manufacturer identifier)

You can also lock and unlock a car with this API!

We chose the make, model, year, current location and odometer value to be displayed on our dashboard. However, we felt like it was not enough, so we tried to add more metrics, and here what we got eventually:

  • Estimated retail value of the car 🏷
  • Total CO2 emissions 💨
  • Their equivalent in light bulb hours 💡
  • The number of trees that would need to be planted in order to offset the effect of the emissions 🌳

All of the metrics above, we calculate using the vehicle’s information from Smartcar API. Another idea was to display the location history of the car; we would implement this by tracking the car’s location periodically. It seemed like the dashboard can be its own application without “Tinder” functionality, so we put aside that idea and began developing the architecture of the project. In summary, our project was supposed to use Python Flask for the back-end, React for front-end, Microsoft Azure Cosmos DB, some other Microsoft services such as Microsoft Bing image search, and all of that would be deployed to Azure cloud. As you can notice, there are many Microsoft Azure products in our architecture. Actually, none of us had much experience with Azure, but we decided to try using it because we wanted to participate in Microsoft’s challenge for the best use of Azure services.

After architecture was done, we started prototyping the UI of a web app.

UI prototypes

Samana and I worked on it, and we designed the following workflow:

  1. Login page. Here, the user would be prompted to authenticate themselves on the Smartcar Authorization Dialog
  2. In case of successful authorization, the vehicle’s data and environmental impact would be displayed on the dashboard.

Oh, we also gave our project a name! We called it Greenicle. ️

We finished our UI prototypes on Saturday at about 6.30 a.m., so we had almost 27 hours to develop the app.

Development

Each member of the team started doing their tasks. Samana worked on a digital version of our UI prototypes, Miranda did her research on the best practices of integrating our project with Azure products, Patricia started back-end dev, and I started working on front-end.

First, I learned Smartcar docs in order to find out how to start. As we were building our app with React, I read React integration guide in the documentation:

Introduction - React | Smartcar Docs

The instructions are pretty straight forward, and they also provide a starter kit:

smartcar/getting-started-javascript-sdk-react

In less than an hour, I had my basic app set up, and this app could authenticate users with Smartcar Authorization Dialog. Let’s take a look at the architecture of our newly created Single Page App:

React SPA architecture. Retrieved from Smartcar docs.

Thanks to the starter kit, I saved my time from implementing the following architecture in my app, and I could focus on building UI instead.

I started implementing UI of our Login page. It didn’t take long to develop Login page as it basically consists of a logo, description and a button. Here is how our login page looked like eventually:

Greenicle login page

Then I moved forward to the next step, which was the Dashboard. While our back-end was still in development, I was building a static version of the dashboard. Because of limited time, I didn’t really try to write beautiful code; instead, I focused on writing code that works. In order to save time, I also didn’t break UI into a component hierarchy. Most of the code I wrote was inside my page components: Home.jsx and Dashboard.jsx.

The dashboard was supposed to have two main sections:

  1. Vehicle information section, which includes its make, model, year, total mileage, current location and estimated retail value.
  2. Statistics section, which displays location timeline and mileage based on selected time filter (past 24 hours/past week), and environmental impact metrics.

This is how the dashboard with static values looked like:

Greenicle dashboard with static values

Once I had developed the dashboard with static values, the majority of the endpoints in the back-end were implemented. Therefore, I could start replacing the hardcoded labels with data retrieved from Smartcar API.

The following screenshot is the final version of the dashboard, which displays data dynamically.

Greenicle dashboard

Some of the values are random there such as location history and mileage for the past 24 hours/week because we basically didn’t have enough time to collect that data. Everything else is calculated or received from Smartcar API. Let’s take a closer look at each section.

Vehicle information

Title contains make, model and the year of the user’s vehicle. We access this data from Basic Vehicle Info endpoint.

We also implemented some kind of image generator based on the make and model of the car, and we used Microsoft Azure Bing Image Search because our initial plan was to use as many Azure services as possible in order to participate in Microsoft’s challenge. Frankly speaking, this service didn’t meet our expectations as found images weren’t correct in most cases. We’d better use Google’s service for image search.

Mileage metric is retrieved from Odometer endpoint of Smartcar API. The same applies to the current location of the vehicle. However, we had to make another extra step to display it in a proper format. When you request car’s location from the Location endpoint, the response consists of latitude and longitude. I used Google Maps Geocoding API for converting latitude and longitude into a street address.

We did some research on how to estimate the car’s trade-in value depending on its mileage, and here is our formula for calculating the resale price:

Resale Price = P * Car’s Dealer Cost

where P is the percentage of the car’s value, which depends on the mileage. The higher mileage value is, the lower the percentage is.

Stats

This section consists of two sub-sections:

  • Location history
  • Impact on the environment

In the Location history section, there are a number of kilometres driven and a map with recently visited locations in the specified time filter (last 24 hours or last week). In our prototype, the data in this section is random because we didn’t have enough time to collect it. The way we planned it to work was to collect odometer’s value daily, so we can calculate how many kilometres were driven in a specified period of time. Also, we wanted to track the location of the vehicle periodically (every hour or so), so we can display it on the map.

Finally, we moved on to the most interesting feature of our project which is the environmental impact of the car. It contains three metrics I mentioned above:

  1. Total CO2 emissions (tonnes) 💨
  2. Light bulb (hours) 💡
  3. Trees to offset 🌳

Here is the formula we used for calculating the total CO2 emissions:

where MPG is Miles per gallon; 8887 is the number of grams of CO2 emissions per gallon of gasoline (according to US Environmental Protection Agency), and 10 in the power of 6 is a conversion of grams into tonnes.

In the scope of this project, we didn’t really consider MPGe for electric cars or whether the car is gasoline or diesel. However, we plan to implement this improvement later.

Also, we found MPG data for the cars on The official U.S. government source for fuel economy information:

FuelEconomy.gov - The official U.S. government source for fuel economy information.

When we created the equivalent in light bulb hours and the number of trees that would need to be planted in order to offset the effect of the emissions, we were inspired by PaperCut product. It was a real challenge to find a formula for calculating it, and our team did a lot of research on that. At the moment, the calculations aren’t quite precise, however, we are going to work on improvement in the future.

After we finished the development, we made slides and a devpost story. On the devpost, we applied to participate in the following sponsors’ challenges:

  • Smartcar challenge
    The best car app using the Smartcar API.
  • Microsoft challenge
    The best use of Microsoft Azure services.
  • Telus challenge
    The best use of IoT and/or AI to help foster sustainable cities.
  • RBC challenge
    The most innovative solution.
  • Intel challenge
    The best use of Intel power (our laptops run on Intel’s CPUs, so we decided to try to compete here 😄🤷‍♂️).

Finally, we were done, and we had roughly 3 hours for sleep before judging started 😴💤

Presentations

After 36 hours of hacking, 100 teams had submitted their projects. So many different and smart ideas were presented there!

https://twitter.com/interacDevs/status/1087065878942896128

Judging started on Sunday at 10.30 a.m. and our team had an amazing opportunity to pitch our product to representatives from Microsoft, Royal Bank of Canada, Smartcar, Intel, Rogers, and others.

Showing Greenicle demo

After 2 hours, we had presented our project about 25 times. Such a great experience!

Results

Finally, it was the time for the closing ceremony of the hackathon. Our team was very excited about it. Each of us put a tremendous effort into building this product, and we were happy with the end result of our work.

500 students and judges gathered in one of the lecture halls at the University of Toronto, and we watched the presentations of top 5 hacks of the event and the announcements of the challenge winners.

It was time for Smartcar team to announce the winner of the Best Car App challenge.

Aaand the winning team is… Greenicle!!!

Oh my God! It was such a fantastic feeling 🤩
After working hard for 36 hours (I slept only 4 hours over that weekend!), I felt so exhausted, but this announcement boosted my energy levels in a moment! Our team came down to the stage, and we were presented Google Home Minis and a greeting card which contained congratulation words from Smartcar team and the invitation to their Garage Program!

In short, Smartcar Garage program is an early-stage developer program that gives the resources for launching the app. You can find out more about this program in the following article:

Introducing the Smartcar Garage

Conclusion

What a great time I had at UofTHacks! In just 36 hours, my team and I generated an idea and built a prototype product of this idea. It was a valuable experience for every one of us. We worked with many technologies, including Microsoft Azure Services, Google Maps API, Smartcar API, Python Flask, React. We also learned a lot about vehicles’ impact on the environment while we were doing our research.

I want to congratulate UofTHacks with the successful organization of this event. I enjoyed it a lot!

I would like to thank Smartcar for selecting our team as a winner.

I also want to thank my teammates for working hard and being a great team.

by Volodymyr Klymenko at February 07, 2019 12:45 AM

February 06, 2019


Woosle Park

Lab 3 – Potential Open Projects

For this project, I’m mostly interested in improving my c++ skills and wanting to develop something related to gaming. I have a minor interest in learning python and c# along with it and would be okay working in javascript since I am comfortable using that language. I prefer not working on mobile systems and instead opt for Windows or Linux.

OpenRCT2

This project is an open source version of the game Roller Coaster Tycoon 2. This project was recommended by the professor because of how approachable the project is and the level of C++ is understandable by students of my level. I would love to work on this project because RCT2 is a great game I have fond memories of. Also, I understand the C++ code in the project plus testing for bugs will more fun hopefully. I might need to learn a bit of OpenGL if I were to work on any visual bugs but everything else should be fairly approachable. I hopefully would like to contribute to the game mechanics, UI, or multiplayer.

Godot

This is an open source game engine for 2d and 3d games. I love to work on a project revolving game so this one is interesting to me. I might need to learn a bit of c# and python for this project but everything else I can approach with C++ knowledge. I would like to contribute to the UI or filesystem. I would also have to actually learn the software from scratch since I never used this engine.

React

This is a project that allows for a better-designed user interface. My experience with it is limited mostly web design and seeing forms and pages change in real time to when I save my files. I already know Nodejs and javascript so I feel as though I can work on this project easily. If the files have JQuery I might have to re-educate myself on that but otherwise, I won’t need to learn any more languages or systems with this project.

Links:

by woosle1234 at February 06, 2019 06:13 PM


Olena Vyshnevska

Discovering Open Source Projects

Go (Golang)

Go is a compiled programming language. Like all others, it wants to be "better than C." The language development is supported by Google (the creators of the language are Rob Pike, Robert Griesemer and Ken Tompson).
Go is completely open-source, and a large number of people not from Google also take part in its development. I got interested in the language because of its simplicity and unusual approach to OOP and multithreading. 

The main advantages of Golang:

  • Simple and clear syntax
  • Excellent performance
  • Rich standard library
  • Highly Concurrent
  • Go compiler (Error checking, cross-compiling)
  • Open source
  • Charming logo
So looking for an open source project, I found 3 that might be interesting to contribute to: 
  1. Kubernetes
  2. Itsio
  3. Moby 

Kubernetes

What is Kubernetes? 

"Kubernetes is a portable, extensible open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem"

The project is designed to manage a cluster of Linux containers as a single system. Kubernetes manages and runs Docker containers on a large number of hosts, and also provides co-location and replication of a large number of containers. The project was launched by Google and is now supported by many companies, including Microsoft, RedHat, IBM and Docker.

What does it provide?
  • a container platform
  • a microservices platform
  • a portable cloud platform and a lot more

Moby

What is Moby?

Moby’s original announcement compared it with a Lego's set of dozens of components and a framework for assembling them into sets. Explaining their intentions, the authors spoke about the desire to "develop the movement of containerization of software and encourage the ecosystem to accept containers as a mainstream."
In a more pragmatic sense, Moby turned out to be a framework that provides:
  • a library of containerized components for all vital aspects of the container system
  • tools for assembling components into running artifacts for the entire supported set of platforms and architectures
  • a set of reference kits called Moby Origin, which can be used either as is, or by modifying, or for an example to create your own versions.
As is the case with Docker itself, the Moby project is designed to provide a flexible solution, the design of which follows strict guidelines. Those are:
  • All components needed to create a complete container system are available, but are replaceable due to the modular architecture. 
  • Security is provided by default without compromising usability.
  • Container Orientation: "Moby is created with containers and for launching containers."

Istio

What is Istio? 

This is the so-called Service mesh, a technology that adds a layer of abstraction over the network. We intercept all or part of the traffic in the cluster and perform a certain set of operations with it. It is a complete framework for connecting, managing and monitoring the microservice architecture. Istio is designed to work on top of Kubernetes. It itself does not deploy software and does not care to make it available on the machines that we use for this purpose with containers in Kubernetes. For example, we want to do smart routing, we can organize “canary deployment”, partially switching traffic to a new version of the service, and we can limit external interactions and monitor all hikes from the cluster to the external network. It is possible to set policy rules to control hikes between different microservices. Finally, we can get the entire map of interaction over the network and make a unified collection of metrics completely transparent to applications.




by Olena Vyshnevska (noreply@blogger.com) at February 06, 2019 01:14 PM

February 05, 2019


David Humphrey

Browsing open source projects

This week I've asked my open source students to research three new (to them) projects.  In the spirit of walking-the-talk, I wanted to share three that I found recently.

I'm constantly looking at new projects and repos.  I love GitHub's Trending feed, and discovering new things via Twitter, podcasts, and blog posts.  Partly I'm just curious, and love to find inspiration in other people's work.  And partly I'm always shopping for new places that my students can get involved.  Helping hundreds of students find open source projects each year is a full-time job.

Without further ado, here are the projects I wanted to discuss:

  1. The Buttercup password manager
  2. The Open Railroad Tycoon 2 game
  3. The Svelte UI Framework

Buttercup

I'm a huge fan of password managers.  I myself use 1Password, and have purchased the Family Plan so everyone in our house can use it, safely share accounts, sensitive documents, sync between all our devices, etc.  However, not everyone needs all these features, nor does it make sense for everyone to take on the subscription cost.

Luckily there are a number of good free and/or open alternatives to 1Password.  One that I've recently learned about is Buttercup.  I first learned about it via this Changelog podcast episode.  In it, one of the two core maintainers of Buttercup, Perry Mitchell, discuss the history and future of the project.

The scope and quality of the project is really striking, with desktop clients for every OS, mobile apps, and browser extensions, all of which look beautiful.

Buttercup desktop (Electron) client

The project is built using React, Electron, React-Native, and also includes encryption code in Rust and WebAssembly.  Very often I have students tell me that they want to work on something that uses React vs. contributing to React itself, and in my experience, it can hard to find projects like this.  Everyone uses it, but not everyone who uses it does so in an open source context.  Similarly, people want to work on mobile apps, or tell me they want to try something with Rust.  Having so much of this modern tech all in one project is great.  

I also really like how the whole thing is split up into an ecosystem of separate apps, tools, and repos.  There are lots of ways someone could get involved without having to necessarily take on the whole thing.  Right now there are 232 open issues across all these repos--plenty of opportunity for a few students to dive in and make a contribution.

OpenRTC2

The second project I wanted to mention is one I recently saw via Twitter, an open source remake of the popular game RollerCoaster Tycoon 2.  I don't play many games, but many of my students do, and this is what caught my interest.  

OpenRTC2 is a fairly big project, with roughly half-a-million lines of C/C++ code, and a very active developer and user community.  There are great docs and lots of open issues (944), with some even labelled as good first issue.

Because our students study C/C++ for 3 terms before they get to the open source courses, a lot of them tell me that they want to work on something in C++.  However, when I show them possible projects, the code often overwhelms them because there is too much of a gap between their academic experience and real-world C++.  Also, the projects written in C++ can often be very low level, abstract, and difficult to use in ways that are easy for a beginner to understand, or only work on particular platforms.  With OpenRTC2, a lot of these problems are less of an issue, with the game running on every OS, and the "build" being relatively easy and fun to test.

Svelte

The last project I wanted to discuss is one I also heard about via a podcast.  Svelte is a framework-less UI framework.  I've heard about it in the past, but never used it, or dug into the project in any depth.  Listening to Rich Harris discuss the upcoming 3.0 release, I got really interested in the approach.  Where React and Vue update UI by applying runtime diffs between a virtual DOM and the real DOM, Svelte takes a different approach: using compile time analysis to generate pure JavaScript UI code that doesn't need a runtime framework.

For work that I'm about to start on some UI components, I've been looking for a way to write code that isn't necessarily React, Vue, Angular, etc. but could be used in those frameworks, or in a vanilla DOM app.  Svelte seems like a good middle road for building something that can work in a lot of different contexts.

The community is a lot smaller than React or Vue, which you could view as a good or bad thing.  I think it's good from the standpoint of someone wanting to contribute, because there is a bit less pressure on the issues.  The community uses Discord for real-time chat, which is nice for contributors wanting to get a question answered.  There are lots of open issues across all the various repos in the ecosystem.  Like Buttercup, the project is split into many separate, smaller repos.

by David Humphrey at February 05, 2019 05:12 PM

February 04, 2019


Vladimir Rozin

Choosing Projects To Work On

And the journey into the Open Source world begins


    How should a person start one's experience with open source projects? Well, the answer to this question probably won't be trivial - with oneself.
    When contributing to an open source project, we need to know our own skill set and what we are capable of, what we would like to learn and/or research; and, on a base of that analysis, we will be able to narrow down those specific projects, getting the crème fouettée of them, something that we can and would like to put our attention on.

Closer to the the matter please

    Alright, to be specific, for me the true joy dwells into low- and high-level back-end programming languages. Please, don't take me wrong, there are incredibly interesting and powerful front end languages as well, it just happened that I don't find myself incredibly excited while working with them. Well, what am I going to be looking for? Something low, something of cross-platform type possibly. If I were to put it into more precise words: C, C++, C# (yes, I love "C", don't you c?), Java, Android SD using Java. These are programming languages that I know (to some extent) and treasure (to the highest extent), but the list is not limited to them only; I'd love to also take a brief look at such languages as Rust and Lua.

Alright, a bit more closer please

    Now, thinking about what projects to contribute to, I found the following 4 interesting examples:
  • C/C++: Open Source Computer Vision Library  - opencv.
  • C++: Machine Learning Framework - tensorflow.
  • Rust/Lua: ggez - lightweight cross-platform game framework for making 2D games.
  • Rust: The Servo Parallel Browser Engine Project - servo.
    My interest was peaked specifically by these 4 because of different reasons: opencv is a library, which I currently work with, so I would love to get to know it a little bit more and add something useful to it as well. Tensorflow seems to me a great opportunity to broaden my limited knowledge of machine learning algorithms. And ggez and servo should be great challenges for me personally - to learn completely new for me technology and get familiar with it enough so I would be able to perform a fix one or more bugs. I am not quite sure about my abilities of contributing to the projects, which work with programming languages I am not familiar with, but I will definitely give it a try since it will provide a great personal experience with real-life projects. 


by Vladimir Rozin (noreply@blogger.com) at February 04, 2019 05:31 AM

February 02, 2019


Aqeel Parpia

GitHub Guide For Beginners

Github brings together the worlds largest community of developers to discover, share and build better software from open source projects to private Teams.

As Being new to Github it was a good experience while trying to file an issue and work on a project and pushing the changes to the origional copy via pull requests .

Looking over the Filer Repository in Github i decided to work on fs.xattr.specs.js according to ES6 by changing the declaration from var to let or const .

Walk through of the whole process that i went through to work on this project.

First i created an Issue to let other developers know that i shall be working on it. This easily be created by going under Issue section and click “New Issue” button.

Once the issue was created i was ready to start working on my assigned work. Therefore i forked the original branch using the Fork button, Where by it creates a copy of the repository under your profile .

Then i cloned the remote repository to my local using : git clone <repository link>

After that i could access the project on my local and used Visual Studio Code as an Editor to make the changes. It is better to create a branch so as it could not create any mess with the master branch.

How To Create a Branch ?

git checkout -b “Branch Name” More Details

Changes are highlighted in Green

After i Finished Making Changes on the file i ran the tests according to the project description To make sure everything passed smoothly.

Lastly i had to push the changes my Git. where by after its done succesfully you can see the changes you have made and be able to compare and make comments on your request.

Working with github Alows you to review other developers work whereby during my workspace i allowed to time to review A developers pull request where i could review and compare the changes and not only see how he fixed the code yet also learn from it.

Reviewed request https://github.com/filerjs/filer/pull/730.

For any questions please comment below.

Thank you.

by Aqeel Parpia at February 02, 2019 09:44 PM


Abdirahman Guled

Git commands

git checkout -- <filename>

This command allows you to change back to previous state. For example, you modified a file but don’t want to keep the new information. This command allows you to go back.

git remote -v

Git remote command shows you servers you have configured. For example, below shows that i’m connected to my Data Structure class:

by abdi guled at February 02, 2019 04:52 AM


David Li

OSD600 Lab 2 – git Commands

Every programmer knows git, but how many know more than the standard set of commands (clone, commit, push, etc)? To become more familiar with git, we were told to find 2 git commands we did not know about and describe them in detail. I must admit, there are far more commands in git that meet the eye and each has plenty of variations with the main command.

Official docs: https://git-scm.com/docs/git-commit
command tutorial: https://www.atlassian.com/git/tutorials/saving-changes

The first git command I chose was probably the second command I ever learnt in git, the commit command. The reason I decided to go over commit again is probably because I feel I did not know anything but the basics about it. For example, I was recently told that I could edit my commits with the –amend flag. And was a right to do so. commit has a massive number of flags behind it, which makes sense seeing how used the command is. The command line code is:
git commit [-a | --interactive | --patch] [-s] [-v] [-u<mode>] [--amend] [--dry-run] [(-c | -C | --fixup | --squash) <commit>] [-F <file> | -m <msg>] [--no-verify] [-e] [--author=<author>] [--date=<date>] [--cleanup=<mode>] [--[no-]status] [-i | -o] [-S[<keyid>]] [--] [<file>...]
As we know, commit stores the current contents of the index into a new commit with a log message describing the changes this commit entails. This content can be added in different ways, depending on the commands previously used before committing. git add will add the changes incrementally to the index, git rm will remove the files from the working tree and index, and finally the [-a | --interactive | --patch] options which I will explain shortly.
The options of the commit command are:
-a – stands for –all. This option will tell the command to automatically stage files that you have modified and deleted while not affecting the files you have not told git about.
-p – stands for –patch. This will have the command use the interactive patch selection interface on changes to commit.
-C <commit> – stands for –reuse-message=<commit>. Has the command reuse the log message and authorship info in creating the commit.
-c <commit> – stands for –reedit-message=<commit>. Like the -C version, but invokes and editor so you can edit the commit message.
--fixup=<commit> will have the command construct a commit message with rebase --autosquash. The commit message will have a prefix of “fixup!”.
--squash=<commit> has the command construct a commit message with rebase --autosquash with a prefix of “squash!”. This option can be used with other message options.
--reset-author has the command declare the authorship of the resulting commit belong to the committer and renews the timestamp when used with the -C/-c/--amend options.
--short gives a short format --dry-run.
--branch shows the tracking info and branch in short format.
--porcelain gives a porcelain-ready format --dry-run.
--long gives a long format --dry-run.
-F <file> stands for –file=<file>. This option will take the commit message from the given file and reads it in standard input.
--author=<author> will override the commit author./
--date=<date> overrides the author date of the commit.
-m <msg> – stands for –message=<msg>. Will have the command use the given <msg> as the commit message.
There are almost 3 times as many option than what I have listed here, but I will not include them as they are rarely used.

Official docs: https://git-scm.com/docs/git-clean
Command tutorial: https://www.atlassian.com/git/tutorials/undoing-changes/git-clean

The second git command I chose was clean. This command removes untracked files within the working tree. The command line code is
git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern] [-x | -X] [--] <path>...
Specifically, this command recursively removes files that are not under version control, starting from the current directory. This command will normally remove only unknown files to git, but with the optional command variations, this can be manipulated. The options are:
-d – removes the untracked directories along with the untracked files. If a directory to be removed is managed by a different repository, then it will not be removed without a double use of the -f option.
-f stands for –force. If the git configuration variable clean.requireForce is not set to false then the command will refuse to delete files/directories without this option. Without 2 of this option, git will refuse to remove files/directories from a different repository.
-i – stands for –interactive. This option allows you to selectively delete files/directories. It gives the user 6 options: clean (start cleaning, then quit), filter by pattern (shows the items to be deleted, then asks for patterns to ignore and after finishing, return to main menu), select by numbers (gives you a numbered list in which you type in the number of the file(s) you want to delete, then return to main menu), ask each (has you confirm one by one, which file(s) you want to delete), quit (cancel clean), and help (shows help page of this option).
-n – stands for –dry-run. Has the command show what will occur if the command is run, instead of actually doing it.
-q – stands for –quiet. This will have the command only report errors, instead of the usual massive heap of text that comes with this command.
-e <pattern> – stands for –exclude <pattern>. In addition to the content of the .gitignore file per directory and the $GIT_DIR/info/exclude, this option has the command exclude the mentioned pattern(s) from removal.
-x – has the command keep the files/directories excluded by -e but removes all other untracked files/directories.
-X – removes only the files git ignores. Useful for rebuilding everything form scratch while keeping the files you have manually created.

Overall, this lab has shown me the complexity of git and how we rarely explore it. We encounter problems with it that could be solved with a few options included in the commands. This has made me more eager to learn new git commands in the future.

by dli119seneca at February 02, 2019 04:46 AM


Adel El Masery

An Introduction to Git Commands

Clone and Merge

Git clone is one of the most common ways for developers to obtain a copy of the source code they wish to work on. In this blog post I will be examining the syntax and different uses of the clone command.

In essence, git clone copies an already existing repository (whether it’s empty or not) into a new directory. Once you have chosen the directory which will contain the cloned repository, the command can be executed in the following way:

  • $ git clone git@github.com:ExampleUser/repository-to-clone.git

This command will clone the repository named “repository-to-clone” from ExampleUser’s github account through the use of git command line.

In addition to providing a way to obtain a development copy of a project, the git clone command also provides additional functionality by calling the git init command along side the clone command. This means that all you have to do is be inside your chosen directory and the cloning process will be fully automated.

The basic structure for a git clone command where you would like to specify the target directory is as follows:

  • $ git clone <repo> <directory>

Git merge is a method of combining lines of code created in forked repositories and integrate them together into one branch. This is accomplished by taking multiple commits and finding a common base for both of them. Once this is done, a new commit will be created by the merge which will combine the changes of both of the branches used in the commit. When merging, git is responsible for determining the merge algorithm and this process will occur automatically.

In order to perform a merge, the following steps must be taken before executing the command:

  • use git checkout command to switch to receiving branch
  • ensure both branches that will be merged are up-to-date (use git fetch and pull commands to achieve this)
  • execute the merge by using the “git merge <branch name>” syntax

In the above example on merging, <branch name> represents the name of the branch that will be merged into the receiving branch you switched to in step 1.

For more information on cloning and merging follow these links below:

by Adel El Masery at February 02, 2019 04:19 AM


Sahib Arora

Getting along with GitHub

In my previous post, you guys learned how you can do the basic things in GitHub - how you can copy a repository in to your local through Git commands, how to do changes and finally, push the code to GitHub.

Now I would like to show you some commands of Git, which can really come in handy while you do your project.

1. Git Tag

Firstly, I will show you a cool one which allows to create versions of your project-> git tag.

Before jumping to versions, it allows you to tag your commits

-> git tag tag-name “commit’s hash code” // get your hash code using log and again you don’t need the quotes

This way you will be able to tag your commits.

But git tag is widely used by people to create versions of their projects…

So to start with, before you create any new tags or version, you can check which are the tags available already.

-> git tag

This command will give you the list of all the tags already exists.

How can you use tag to create release point?

Its very easy, once you commit all the changes in your project you simply tag those changes through

-> git tag tag-name

This will create a tag for all your commits you did before and this will be your one version of your code lets say V 0.1 (tag-name). Why I am saying so, you will know via reading below!

Now, lets say you did some changes in your project and committed the changes and tagged them again lets say V 0.2. Now your V 0.2, will have all your commits including V 0.1.

If you build your V 0.2, you will see all the changes you did after previous tag, but if you switch back to V 0.1 via

-> git checkout tag-name

and build your code, you will notice all the changes will be gone and your code before the changes you did in V 0.2 will be gone in your Editor too. You can again switch back to V 0.2 (latest tag) to view your changes but this way, you will be able to create two versions of your project!!

Enjoy Tagging!!!

and if you come up with your unique way of using tags, let us know, will be looking forward to use it in my next project!!!

To have a look how tagging looks, watch the Video below:

https://medium.com/media/6c8a69bf42fd4340a7f1a7896379290d/href

Official documentation of Tag, find here…

2. Git Log

Secondly, about -> git log

What is meaning of Log??

Pretty simple hah, keeping record of something. Git uses this command to keep record of all the commits you do or did.

So, first,

-> git log — — author = “Name of author” // (you will not need quotes)

This will give you commits done by only particular author.

-> git log — — pretty=oneline

This command will show you all the commits being done for that project.

On the right side of the picture is the hash code given to the commit and right side is the message passed when the commit was done…

if you want to know about more parameters, just try

-> git log — — help

It will give you a list of other parameters which can be used according to your needs.

Enjoy logging!!

You can find official documentation of log by Git here…

Thank you,

Enjoy Coding!!!

by sahib Arora at February 02, 2019 03:53 AM


Paul Moon

Git Commands

My experience in git is pretty limited, as I have barely used git and also run a window system. Albeit as the time progresses, seems like I should use more git and try and switch to Linux system.

Before that though, I thought I’d learn a bit about, git commands and how to utilize the commands.

git init

Now this is a simple command, yet important, one way or another. The command is to start a repository, and of course if you wanna start using git and to add and change things around, you need to start right?

The command is quite simple really, the command structure is

git init [name]

and bam, you got your repository started, but is that really the only thing the command can do?

There is an extensive documentation from git, where it tells you all about it. However what I thought important was.

--shared[=(false|true|umask|group|all|world|everybody|0xxx)]

Which is able to share the repository to people, can’t be open source without any kind of sharing. Now it might be confusing at first, but you do not type all the types out it is merely a multiple option shown in one.

false, world,everyone, and true is pretty self explanatory, false for not sharing, and true for sharing. umask is the default option when none is chosen, it is the file permission. Group is for the user group in which your user account is in, lastly the 0xxx is the octal command you use in umask value.

I decided to learn about this command, because well as I’ve said before, you have to start somewhere to get a git repository going, and what kind of open source item would it be if it wasn’t shared to people around the world.

There are other plenty of blog post out there that covers this much more in-depth and better style, you should check them out if you wanna learn more with examples.

Second command I have looked at is

git clean

what does git clean do? well it cleans your git.

But what does it clean? it cleans files from the working tree, that isn’t under the version control. Now there are of course many different sub commands to this commands.

git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] <path>…​

There is the documentation that shows all of the commands and what they do, but what I thought to be important is

1. -d 
2. -n or --dry-run

Now, using -d sub command removes directories as well as the files, which means if you use the clean command without the -d sub command it would delete only the files. Pretty useful if the folders are not in the version control and wish to remove them as well.

Now the real deal is the -n or –dry-run, this sub command is quite good, why? because it actually doesn’t remove anything. Now why would this be good?

1. because you could just check what the new version is
2. you could review the changes before to prevent accidental deletion of things you want to keep

Now wouldn’t it be nice if you didn’t accidentally delete things? a beginner UNIX/Linux user would probably feel this at heart. There is actually a great blog post about git clean you should check out.

by bakamonomoon at February 02, 2019 12:28 AM

February 01, 2019


Oleksii Polovyi

10 Git Commands

The world is divided into 10 kinds of people:

  • Those who use CLI
  • Those who are amazed by those using them

Today’s post is about two git commands log and branch.

First things first, git was created by @torvalds. It is a version control system to coordinate the software development workflow.

Branch

Branching is a commonly used revision control technique in Software Development. To check what branches are currently active in the project use:

git branch

It displayed all the local branches. * is the current branch.

issue-672
* master

To check remote branches I used. (Thanks to @mordax)

git branch -r

Here is what I got:

origin/9p
origin/HEAD -> origin/master
origin/develop
origin/fxos-1.3-fix
origin/gh-pages
origin/issue-672
origin/master
origin/next
origin/perf
origin/travis-node-update

While I was working on my Release 0.1 I had to create a new branch issue-672. This can be done using:

git branch issue-672

To switch to the newly created branch I used:

git checkout issue-672

The result was:

Switched to branch 'issue-672'

That was my experience using git branch. However, there is so much more to learn about git branch flags and options.

Log

A log is such a powerful tool with so many flags, sub-commands, and options available when it comes to logging. While I was working on my Release 0.1 I used it to check commits history.

git log

By running the above command within my local repository I received a long list of previous commits. What I really wanted to see is my last commit. There is a built-in flag -n that was very helpful in this case.

git log -1
commit 429c95d3905da0751c203607e2a4d31f06688416
HEAD -> issue-672, origin/issue-672
Author: ApolllonDev oleksii.polovyi@gmail.com
Date: Wed Jan 30 14:50:42 2019 -0500
Solution for issue-672

Commit is a snapshot of changes with the authors’ information, files changes, timestamp and a short description of what changed. It has a hash code to identify it from other commits.

HEAD (current branch) is pointing to the issue-672 local branch and it is up to date with the issue-672 on the origin branch.

My last step was to check the latest commit is on the GitHub. As expected, similar information was provided as it can be seen in the screenshot below.

Learn more about git log flags and options.

by ApolllonDev at February 01, 2019 10:23 PM


Anh Hoai Ung

Lab 2

Hello everyone,

So I have been using Git for about 3 weeks now, and frankly, I still feel like I got a lot to learn in order to fully use Git’s potential. This week’s lab is to find some new Git’s command to work on, and I found out some interesting commands to learn and apply. This blog will introduce how to use git-grep and git-show.

1.git-grep

git-grep is used to print lines matching a pattern and easily search through anything. It will try to look through the files in the current working directory.

Examples:

Search working tree for text matching regular expression regexp:

git grep <regexp>

Search working tree for lines of text matching regular expression regexp1 or regexp2:

git grep -e <regexp1> [--or] -e <regexp2>

+Link

+git-grep doc link: https://git-scm.com/docs/git-grep

+git-grep references: https://stackoverflow.com/questions/2928584/how-to-grep-search-committed-code-in-the-git-history

2.git-show

It is used mainly to shows one or more objects (blobs, trees, tags and commits). This command can be useful when you want to search for some elements

Example:

Shows the tree pointed to by the tag v2.0.0

git show v2.0.0^{tree}


Shows the contents of the file Documentation/README as they were current in the 10th last commit of the branch next

git show next~10:Documentation/README

+Link

+git-grep doc link: https://git-scm.com/docs/git-show#git-show-codegitshowv100treecode

+git-grep references: https://stackoverflow.com/questions/51343765/what-does-git-show-do-all-by-itself

Overall, these commands can prove useful to me in the future for me. In the mean time, I will try to use these commands more to understand them properly. Thank you for reading.

by hoaianhkhang at February 01, 2019 08:14 PM


Rachael Scotchmer

A Closer Look At Git Reset & Git Push

I have a pretty limited experience with git. I know the basics of push, pull, commit, checkout, branch... The bare-bones of what you need to make use of this tool. Not efficient use, though; I have made plenty of mistakes and backed myself into bizarre corners because I don't fully understand what a certain command does. In an attempt to familiarize myself more with the powerful commands at my disposal, and hopefully reduce the number of times I turn my repositories into some eldritch abomination, I decided to take a closer look at two of my favourite git commands: reset and rm.

This article assumes you have a basic understanding of Git, and know what HEAD and index refer to. If you don't, you'll definitely want to check out the docs before reading on.

Git Reset

What It Does

According to the official docs, git reset reverts the current HEAD to the specified state. It does this by following these three steps:

  1. Change the branch that HEAD points to
  2. Refactor the index to contain information about the files that HEAD now points to
  3. Modify the files on the working tree so it resembles index

Depending on the flags you use, you may stop after one or two steps. The default is to stop after step two. We'll cover how to go beyond that, or just stop after step one, in the modes section.

Modes

I don't feel it's necessary to go through every possible option for reset. Instead, I'll just cover the ones I think are important. If you want to check out all of them, take a look at the official documentation.

--SOFT

Changes what HEAD points to, and does not modify the index or working tree (stops after step one).

--MIXED

Changes what HEAD points to, and modifies the index, but not the working tree (stops after step two). --MIXED is the default mode, so if you fail to specify,

--HARD

Changes what HEAD points to, modifies the index and the working tree. If any changes have been made to the files in the working tree, they're discarded -- in other words, you lose those changes. This option makes reset very dangerous. I can speak from experience on this one -- before I understood reset, I would constantly use the --HARD option... And then get frustrated when my files were irrevocably changed.

--MERGE

This is a pretty interesting mode. It will reset he index, and then update the files in the working tree that are different from the specified commit. But, it will keep files that are different in the working tree than they are in the index.

--KEEP

Similar to --merge, this one resets the index and updates the files in the working tree. This one will only update files that are different between commit and HEAD, though.

Options

Oddly enough, there are a whopping 3 options for reset: -q, -quiet, and --no-quiet, which all do the same thing: perform the task quietly and only report errors.

Git RM

What It Does

Git rm will remove files from both the working tree and the index -- something to keep in mind when using! Goodness knows I've lost a fair few files this way (oops. My bad for not doing this research beforehand, eh?). With the right option, you can limit removal to just the index.

Options

FILE...

This one's pretty self-explanatory: these are the names of the files you want removed.

-F, --FORCE

In the event you run into issues removing a file, you can use this to force git to remove it anyway. Use this with caution.

-N, --DRY-RUN

This one won't remove files, but instead shows you which ones would be removed if you ran the rm command for real.

-R

Lets you do recursive removal for deletion of files in a directory.

--CACHED

This option will remove files from the index, and the index alone; it won't touch your working tree.

-Q, --QUIET

Stop git rm from outputting a line for each file that it removes. It will only report errors.

by rscotchmer (noreply@blogger.com) at February 01, 2019 07:57 PM


Aqeel Parpia

Git Commands

Git log

Git log — summary

git diff [source branch] [target branch}

The above Git commands have been intellectual during my research on Git Commands.

Example of Git log on Terminal

Q. What are those git commands?

Git log
This command shows commit logs and it takes options applicable to the git rev-list command to control what is shown and how, and the options applicable to the git diff-* commands to control how the changes each commits.
Git log — summary

This command shows detailed changes of commit logs. It Provides suppress commit description and provide a commit count summary only.

Git diff [source branch] [target branch}

Git diff — Show changes between commits, commit and working tree. It shows changes between the working tree and the index or a tree, it shows chages between the source branch and the target branch , like changes between two files on disk.

by Aqeel Parpia at February 01, 2019 07:25 PM


Volodymyr Klymenko

Working on a bug in Microsoft VSCode (Part 1)

I’ve been looking for an issue to work on in big open source projects earlier this week, and I came across VSCode repo on GitHub. I’ve never contributed to any Microsoft’s projects before, and I didn’t really think about doing that even though I use VSCode a lot. Every time I looked at the list of issues in VSCode repo, I thought it’s very hard to find a good one to work because it seemed to me that most of them are created by its users and not verified by project’s maintainers.

4640 issues filed in Microsoft VSCode as of 02/01/2019

Writing a code that is not going to be accepted (or even reviewed) eventually is probably one of the saddest things in open source.

However, some of my peers in open source class have contributed to this project, and they shared their strategy in finding issues. Basically, they looked for older issues that nobody worked on or fixed yet. I tried this strategy and I came across an issue filed two months ago. I found that there was a member of Microsoft organization assigned to this issue, but there was no Pull Request submitted yet. I asked if I can work on this issue, and he got back to me and said that I can work on it.

Issue

First, for those of you who haven’t worked with VSCode before, let’s take a look at its interface:

Retrieved from VSCode documentation.

If you take a look at Activity Bar (A), there are 5 sections:

  1. File explorer
  2. Search
  3. Source Control
  4. Debugger
  5. Extensions

The filed issue is about Extensions part of the Activity Bar, and the requested the following feature:

It would be helpful if the search bar in the Extensions Side Bar maintained its value when reloading the window. (issue description)

Current behavior

Steps to reproduce this bug:

  1. Type something in extensions search
  2. Reload window

After reloading window, the search bar has no value.

In order to fix this bug, I have to find a way to save the value when the window is reloaded.

Research

My very first step was to look for similar resolved issues in the repository. After a comprehensive search, I didn’t find any closed Pull Request similar to this issue. That’s why I had to start exploring the codebase of the project.

As I mentioned above, I haven’t worked with VSCode codebase before, so the first thing I had to do is to find where is the source code for extensions. Fortunately, big projects like VSCode usually have good documentation, and I found a code organization page:

Microsoft/vscode

I read it and found that all Activity Bar code is under ssrc/vs/workbench folder. I started looking through it. I found a parts folder there, which contains all parts of the workbench including extensions.

I began studying the codebase of the extensions. It was a lot of new code for me. I wrote some small changes, debugged some code in order to get a better understanding of how their code works.

I still couldn’t figure out how I can keep the value after window reloading. Then, I tried to find out if there is any other part of the Activity Bar that stores the value of the input after reloading the window, and I found one! The search part of Activity Bar. Its input has the value even if you reload the window.

I understood that the similar feature is already implemented somewhere in the code.

I did some debugging for search input and extensions input during the reloading window. The call stack is similar but different at the same time.

After my research, I guess that the reason why search input saves the value is that it implements viewletState which keeps track of the component state. I didn’t find any similar things in the implementation of the extensions input, so I’ve shared my guess in the issue discussion, and I wait for a response from the contributor.

by Volodymyr Klymenko at February 01, 2019 07:16 PM


Olena Vyshnevska

Lab2, Git Commands

"git reset" command 

git reset command is used for undoing different types of changes. Using it we can either discard commits in our private branch or throw away uncommitted changes.
You can pass different parameters to your reset command in order to determine the command's scope.
git reset command has 3 different modes:
  • --soft 
The staged snapshot and working directory aren't changed.
  • --mixed (default)
The staged snapshot is updated to match your commit, the working directory isn't affected.
  • --hard 
The staged snapshot and working directory are both affected. The most frequently used but at the same time the most dangerous option. It completely erases things you no longer want to have.

Removing your last commit example

For example, we committed some changes to our file, but made a mistake and want to revert those changes. One of the ways to do that is to use"reset".
git reset HEAD~1 command will throw away the latest commit undoing all changes that you made in it.


Resetting changes in a specific file 

It's also possible to specify the file which changes you want to reset.

"git checkout" command 

git checkout command can switch you between branches or restore working tree files.

Checkout an existing branch

For example, we want to checkout already existing exampleBranch. 
In order to do that type:
git checkout exampleBranch 
In case you haven't yet created a branch you can enter git checkout -b exampleBranch. This command will create a new exampleBranch and switch to it right away.

Undo changes in the working directory

git checkout command can be used in order to undo changes in your working directory 
For example, we want to revert the local changes in our fs.close.spec.js file. To do that you can simply run git checkout -- fs.close.spec.js command.


by Olena Vyshnevska (noreply@blogger.com) at February 01, 2019 06:47 PM