Pages

My Project Proposal for GSoC 2014

Wednesday, March 19, 2014

Linux, OSX GUI and output Language Translation for CCExtractor

19 March 2014

 

 1. A bit about myself

I’m Mahesh Bandara Wijerathna and I'm a Software Engineering student from National institute of Business Management Sri Lanka. I’m currently at my Diploma level. My age is 20. This is my First time in GSoC and I really look forward to this opportunity.


My contact details:

 

  •       Freenode IRC Nick      – m4heshd


My work related links:

 

 

2. My academic background

I finished my college education with great success by achieving passes to all the subjects in the very first time. Then I started my higher education as a Software Engineering student at National institute of Business Management Sri Lanka. Currently I'm completing my Diploma Level in Software Engineering. 

 


3. My Goal of this Proposal

Currently CCExtractor is an amazing tool in command line mode as it is. But what a simple day to day Linux or OSX user missing is a GUI that does the same process of service for them. So my ultimate goal of this proposal is to make CCExtractor User Friendly as much as I can for all the Linux and OSX users out there. Because unique users know what a useful tool this is for them and there are many other users that searching for the same tool with a GUI. This implementation will save twice the time that a user will take to use the command line version of the CCExtractor. Simply I want to make CCExtractor from amazing to a more amazing life saver.

 

 

4. What components/modules will the proposed work modify or create

This implementation will create a completely new GUI based on GTK+ that can be compiled to work on both Linux and OSX.

I will be adding a whole new Output Translation feature to the program. 

 

 5. Why is this GUI very important 

The main goal of a GUI is the Ease of use. Specially for CCExtractor. The fact is that, as a percentage nearly 60% of Linux users are very unfamiliar with command line tools because they always have used to Graphical user Interfaces mostly on Microsoft Windows platform.

Here are a few practical facts from my own researches: 

  • 80% of the people Like to try a Linux distribution on their PC
  • A 75% of above people decide to leave Linux because of they get frightened of command line tools. They say that it’s very uncomfortable to deal with command lines.
  • 90% of my batchmates have no idea about bash or command lines.
  • Truly I personally was very uncomfortable with command lines when I was new to Linux.

As I think this reason must be on the top for the fact that there are only 1.48% of average Linux users in the world compared to other OSs. With all these facts anyone can figure out that most of regular level users do not like to get involved in command lines. But developer level users are. That is the point. A tool like CCExtractor is not targeted only for developers to use. These tools make a normal user’s day to day life much easier. We don’t know how many users search for a tool like CCExtractor then find CCExtractor and just skip it because it’s a command line tool. This particular problem force the user to switch back to Microsoft Windows or at least use a virtual machine. The faq also says that a GUI is not much important. But with my facts I can prove that the GUI is the most important part for the current Linux and OSX version of CCExtractor.



6. What benefits does this proposal have for CCExtractor

As I checked currently total number of downloads are near 130,000. But only near 4000 of that downloads are owned by Linux and near 5000 by mac.  As I explained in the above topic the count of users for the Linux and OSX version is definitely will increase with a GUI on. Much users get hands on CCExtractor, much it becomes popular. There is always a higher rate of getting contributions for a popular product.

The main fact, just like every other open source software CCExtractor also need some help to run with. The rate of donations for a product is always based on the happiness of the user. What user will not be happy with a Nice GUI to work on? :)



7. My plan to achieve the successful completion of the project

According to the facts I mentioned earlier it is in my best interest to make CCExtractor a more amazing and more attractive free product. So I want to and I will finish the project with a 100% success with all the help from my potential Mentor. I have came up with a sketch plan to achieve that success. Also I’ll be referring to learning matter if there’s anything out of my skill level in the process of completing.


Before 19th May (before the beginning of student’s coding)

I will be doing a continues research on Closed Captioning. To achieve the success I’m going to need more knowledge from developer’s eye on closed captioning. And I will dig more deep into the coding from older versions to newer versions. I need to know exactly what implementations and how they are done in time.

From 19th May to 25th May

I will be having a lot of conversations with my mentor and will be taking every single advice need for the start and throughout the project. Then I’ll be doing a simple flow chart to make my work more efficient. Finally I’ll configure a Git repository dedicated to my work on CCExtractor so that my mentor can inspect everything I do and what time i did them to the finest bit.

From 26th May to 21st June

I’ll complete the Gtk+ based GUI in the finest manner as similar to the GUI of the Microsoft Windows version. Also I’ll do everything that’s possible to make the GUI look more attractive to the user alongside with the less usage of resources. After that I’ll start combining the GUI to the command lines. Then I’ll be taking advices from my mentor with the current coding and make it ready for the midterm evaluation.

From 27th June to 5th August

I’ll be finishing all the Gtk signals, Gtk radio button controls, Gtk check button controls and all other widgets connecting to CCExtractor command lines with a system() call. I must double check everything from one to one because of the vast range of user options. Then I start to take the outputs from the shell using popen with standard libraries to the Activity widget, ProgressBar and the preview widget using --gui_mode_reports.

From 6th August to 10th August

I’ll be doing the debugging process with my mentor.

From 11th August to 18th August

Finalizing the project by discussing with my mentor and achieve the 100% success to the Packaging level of the final product.


The main process will be Like this 

  • Other than above instances I’ll be looking at my own idea on Implementation of direct translation of outputs using Google Translate or any other Free translate API if my mentor approves that. I'll be touching the main coding of the program with that idea.

 

 

8. Why do I think I’ll be the best person to work on this project

First of all I have to say that I’m very happy and very excited for this project because my burning interest in contribution for Open Source Software. And specially I took a lot of advantages out of CCExtractor as a regular user and I know I can be a part of that same happiness of others.

Secondly I can prove that I have a very good academic background and I’m a quick learner.

I can assure that I have enough knowledge in C and Gtk+ programming to finish this project with a 100% success. Also I can say that my level of communicating in English language is also very good.

I don’t have much C++ knowledge as I have in C. But I can understand any coding in a little bit of time by going through the source.

I have to mention that this is the best project that meets my level of knowledge in computer programming. I’m so much interested in this particular project because that it has always been my favorite part of coding is the “Building a GUI for the console applications” part.

My level of knowledge can be inspected using following links.

Please check my codings and commits in my GitHub repositories.

https://github.com/m4heshd

My other Gtk related contributions for Open source Software (Gnome)

https://bugzilla.gnome.org/show_bug.cgi?id=593650

I have gained a lot of knowledge in project related languages and so much experience working with more experienced people by contributing to Open Source Software organizations.

I started using CCExtractor for extraction of Closed captions out of Wrestling shows. More of my experience as a user in Open Source Software can be found in my blog.

http://m4heshd.blogspot.com/2014/03/into-open-source-world.html

I have to say that my inspiration for Contributing to CCExtractor was GSoC 2014. I can assure and it’ll be in my best interest to be a big part of CCExtractor as a Developer for my entire life because it’s worth the happiness of freedom.


9. My time commitments 

I can make sure that I will be able to commit 6 days a week for the summer project and it’s full time. I attend my lectures only on Saturdays and I have no any other work.

--------------------------------------------------------------------------------------------------------------------

A rough mockup of the Final product

 

*A special point that has to be mentioned is this Gtk based GUI can also be compiled to work on OSX without any problem.

*And Please consider the fact i'm planning to do more than this GUI. Consider my own idea on Implementation of direct translation of outputs using Google Translate or any other Free translate API

 

A simple explanation about how i'm going to do the translation


Translation can be done perfectly. My plan is to use Google Translation. I'm going to do the translation but not directly through the API. Because we all know that Translation API is not FREE now. It's a paid service.

So the translation will be done through an API controlled URL. I'll be using libcurl for this task. We send the URL with particular parameters and it'll return a text file with JSONP content. It'll look like this

 

This process happens in an average time of 14 milliseconds :)

Next step is reading the "trans": field. It'll be done with a strtok() call. Finally everything is in hand.

How do i apply this function to the CCExtractor output?

The parameter for the translation will be like --translate_subs source_lang traget_lang

Languages will be defined with standards like "en" for English, "es" for Spanish etc... 

Let's take an example. Our file is a EIA-608 .ts file. And our output is a .srt file.
Then lets take related source 608_srt.cppWe'll execute the translation just before we write the Line buffer to the file. So that we can take the Length of the Translation.

 
 

Like this we're going to translate lines one by one. We're not gonna translate whole files in chunks. That'll mess everything up.

For the function i'll be writing a separate Header with the coding.

I hope this proposal meets the maximum potence that a student in my skill level can dedicate for an Open Source Project. 

No comments:

Post a Comment