Wrapping up Outreachy

Last Monday ( March 6) was the last day of my Outreachy internship. And I wouldn’t be exaggerating at all if I said I have learnt more in the past 6 months ( including the application period) than all of the knowledge combined in my four years of engineering. Sad but true.

During the internship period I worked on the design of the Firewall UI for Cockpit. I started with Pencil for making the mockups and moved on to Inkscape. Although I worked on implementing the UI simultaneously,it didn’t turn out to be as good as I expected it to be. We also did a lot of usability testing on remote as well as local users and this was one of the high points of this internship.

  • UX design is all about details and consistency!

Initially,while using Pencil I would miss out on a lot of important details since there wasn’t room for much modifications. But once I moved to Inkscape,it was overwhelming to keep in sync with all the details and yet to remember the larger picture. It is easier to start with the larger elements such as frames and placeholders and then moving on to the other smaller details like text details and font. Also,fixing the small details like width,height and alignment in the end can be a pain. It is less time consuming to keep modifying the changes along the way since it would also maintain consistency and there are lesser chances of missing out other elements that had the same specifications.

  • Usability feedback is the key!  

I wrote about this in my previous post and I am saying it here again. The usability testing provided excellent and unbiased feedback about the user interface and the design. A different perspective from possible users helped us to identify the pain points and work on it in the further iterations.

  • Open source is all about community!

When I started my application process,I was absolutely terrified of talking on the IRC. Not only because I was an absolute stranger but here I was in a room of experienced people who are experts in their fields. I would check my message a hundred times before sending it. Although now I don’t over-think as much as I used to before sending a message,I still have to reach the point where there is no over-thinking before participating in the IRC. But I had awesome mentors who helped me at every point and made me confident about interacting more with the community 🙂 I think this is something that probably all newcomers go through.A helpful pointer would be to remember that everyone is very helpful.

  • Take chances!

When Outreachy was suggested to me by a friend,I thought I would never be able to get an internship with Outreachy. The bar was set high and judging myself,it seemed that I still had a long way to go. But I took a chance and applied because learning more about the open source community and contributing to it was important to me. So,to all the future applicants to Outreachy,I would only say that give your best and a bit more than that.

What next?

While I will continue to contribute to Cockpit,I am more than ever excited to learn more about design and how open source perceives and implements design. Then there is also a goal to spread more awareness about user experience and how it affects our day to day life. Since I am still a newcomer to the world of user experience,there is a lot to learn and implement. Also,I signed up for a UX specialisation on Coursera so there will be updates about that too. There might be a lot of other side projects too that I might work on but we’ll talk about that when we come to it.

 

Usability testing and feedback!

We are in the last phase of Outreachy and to be more specific,the last week of the internship. Time has flown by since my last post and I have no idea how it went by so fast. Anyhow,we have progressed a lot more since then.

Post working on the mockups in Inkscape,we started working towards usability testing of the mockups we had done so far. While it is easy to keep iterating the current designs,it is important to get feedback from real users. I was hoping to get more insight into the workflow and the elements that weren’t as obvious as we expected them to. And it worked like a charm. While working on any project, we get so invested in it and sometimes need a new unbiased perspective to move forward.

I did the usability testing with a few people I know from my college and also a couple of team-members from Cockpit. While I used paper prototypes to get feedback from the users in my college,we went with sharing images of the UI for remote testing with the users from Cockpit team. We did run into a bit of issue since screen-sharing the images of the UI would not work and we had to ultimately resort to sharing images via GitHub. I wish the screensharing worked since it might have led to easier access.

Tasks

Users were asked to perform the following tasks after I gave them pre-defined scenarios:

1.Allow new ports through the firewall.

2. Close ports from the current firewall rules.

3. Control the traffic log and infer data from it.

An example of the scenario was,”You are hosting an instant messaging app on your server, but you are unable to access it from the other computers in the network. It is probably due to the firewall settings. See if you can find out the port number and allow it through the firewall.”

User Feedback:

I gathered the user feedback and have listed them in their order of frequency ( from high to low):

  1. Need to see more filters ( especially, blocked traffic) in the traffic log.
  2. Include names of common services and ports to choose from instead of having to enter the port number.
  3.  Confirmation dialogue before port rule is removed.
  4. Add access rules for particular subnets.

Implementing the feedback:

From the above listed issues,number 3 is a very obvious issue and something that should have been included in the earlier iterations too! While we are working on the mockup to add more filters to the traffic log and a “Suggestions DropDown” for the port number and services,adding access rules for particular subnets has been kept for further iterations of the UI.

The final tasks for me is to implement the UI from start to finish and perform usability testing with the working prototype to get more feedback.

 

( I know I always say this,but there is definitely a new post next week. Meanwhile,check Outreachy’s website for applying to their next round of internships.)

 

Week 5 & 6: Inkscape mockups and implementing the UI

It has been a bit too long since my last post! My last post was about some updates on the user stories and the wireframes.

I had been using Pencil to make most of my wireframes. More often than not,I would end up having to search for a lot of other wireframing tools since not all elements in the wireframes could be achieved with Pencil itself. So,if Pencil did not fulfill my requirements,I would move to Chrome extension of Balsalmiq and a lot more other extensions which I did not use more than once. This was frustrating and I finally decided to learn to use Inkscape for creating better high-fidelity mockups. Before starting to use the application directly to create mockups, I read Máirín Duffy’s tutorial on creating mockups. This is a great starting place to learn the basics . But the more you use Inkscape, the more you learn.

In the following iterations,we also moved from a tabbed layout to putting the two features parallel to each other to the current layout. The current iteration has the “Access Port” feature on the top and the “Traffic log” at the bottom. Here is a snippet of the mockup iterations:

A) This is more like a wireframe than a mockup and was made using Pencil.

port-1

 

B)Second Iteration: Parallel layout of features. This mockup has a lot of inconsistencies .I was still learning to create objects and move them,but Inkscape’s “Cusp to the corner” feature would frustrate me especially because I still hadn’t realised that I could simply use the arrow keys to move around the objects. Silly,right?! add_port

C)Third iteration:  This is the most current mockup and I have been able to modify lots of small (but important)details in this iteration. The error states for the “Traffic Log” needs some more work to include cases where the data present is large. ti

Meanwhile,I had also started implementing the UI to get a feel of the mockups in Cockpit. While it was comparatively easy to implement tables and insert content using HTML,it was a bit difficult for me to get the dialog box for “Add port” running. This week I finally (FINALLY!) got it running and that made me super happy 😀 One more lesson I learnt while trying to get the code working is that the best way to learn to code ( faster and better) is to read ,understand and play around with codes of existing applications ( definitely in your fork of the application’s repo 😛 )

More to come in the next week!

 

 

Week 2: Studying similar firewall applications and their patterns.

As I discussed in my previous post,the task for me to complete was to find patterns in the existing firewall applications that are widely used. Although I enlisted eight similar applications,I focussed only on four of the eight firewall applications. Below,you will find the features of each firewall along with images of their applications. All the images belong to the blogs/websites linked.

1.)IPFire

2.) OPNSense

3.)Smoothwall

4.)Untangle

Terminologies used:

1)GeoIP Blocking: Blocks visitors by countries.

2)NAT (Network Address Translation) : Network address translation involves converting one IP address into another while the data packets are in transition across routing devices.

3.) Protocol controlling: Information exchanged between devices or networks follow certain protocols. Each protocol is specific to the work assigned. For example:email routing is done by Simple Mail Transfer Protocol(SMTP),Post Office Protocol(POP3) or Internet Message Access Protocol(IMAP). Each of these have their ports assigned which is used by the protocols. SMTP uses Port 25,POP3 uses Port 110 and IMAP uses Port 143.

4) IDS( Intrusion detection system): IDS is a device or a software application that can detect malicious activities within a network. While a firewall monitors attacks on the system from other devices/networks,IDS alerts the system if there is any malicious activity that the firewall could not prevent or has been originated in the system itself.

5) VPN( virtual private networks): A VPN is a network technology that can create a secure network connection over a public network ( such as the internet). OpenVPN is an open source application that executes VPN methods.

6)Traffic Shaper: Traffic shaping is done to delay some or all datagram packets over a network.

7) Port Forwarding : Port forwarding is an application of network address translation(NAT) often used to connect to a specific computer or service within a private local network.

Now,let’s move on to the firewall applications and their features:

1.) IPFire:

Features:

  • Default firewall rules
  • GeoIP blocking
  • NAT
  • Group based firewall rules
  • Firewall logs
  • Protocol controlling
  • Configure rules ( add/delete ports,create group restricted rules ,port forwarding etc)
  • IDS
  • OpenVPN
  • This slideshow requires JavaScript.

2.) OPNSense

Features:

  • Default firewall rules ( category based)
  • Configuration
  • Alerts
  • Schedules
  • Protocol control
  • NAT
  • Queues
  • Traffic Shaper
  • Aliases
  • IDS
  • Virtual IP
  • OpenVPN
  • This slideshow requires JavaScript.

     

 

3.)Smoothwall:

  • IP-Block
  • Timed-access ( scheduling)
  • Configure firewall rules
  • IDS
  • Logs
  • Port Forward
  • This slideshow requires JavaScript.

    4.) Untangle

  • Configure firewall rules
  • Current rules
  • Reports
  • NAT

    This slideshow requires JavaScript.

     

 

Comparison of features of selected firewalls:

screenshot-from-2016-12-13-14-03-20

 

My research methods,initially,were wrong. After finding similar firewall applications,I would have installed each and every firewall to study it if not for my mentors. As hilarious as it may sound,I forgot that I could always Google for tutorials related to these firewalls. I have linked all the blogs and websites that I referred to along with the images used.

Now that the similar features have been listed,it is clear that including some features like default firewall rules,configuration ,port control,protocol controls,port forwarding, NAT and logs is necessary. The inclusion of other features differs from the requirements of users of each firewall. Although it would be nice to have all the features in a single firewall application,this requires to list the requirements and user stories. Hopefully,that should be completed by next Tuesday.