GSoC#2 It begins... Community Bonding!

Now that Google Summer of Code 2017 has officially begun, I am not sure what to do.

Well, I had a lot of plans for this period in my proposal but they just seem trivial as well as confusing now, reading code and all that stuff. So most of the community seem to pass by and I lost hope. Who can even dare to go through a minimum of three to four files having more than 5000 lines of code?

Finally, a video on Introduction to MacPorts Base recorded by Clemens last MacPorts meeting came to rescue which gave the overview anyone needs to find and fix things in base. Basically, the video is a tour through MacPorts base hopping between port client, macports1.0, Tcl slave interpreters and C code for database access and to deal with system settings like proxy.

My notes (in raw form) while watching the video:

  1. port.tcl - port commands and corresponding procedures.
  2. macports.tcl -
    • mportinit - 
    • mportlookup - sources (default, ... ), PortIndex
    • mportopen - run the PortFile, does some caching as well, also, work done in a slave interpreter ($workername), aliases of macports APIs for use by portfiles
    • mportexec - takes mport returned by mportopen, gets the slave interpreter instance from mport
    • Example - portfetch, elevateToRoot and dropPrivileges, curl as a Tcl extension
    • functionality for command line users to keep it simple and easy to write port clients vs. complicating it for UI
  3. port1.0 - *portfile context*, eval_target, target_run
  4. package1.0 - downloading pre-compiled packages, verifying and extracting files
  5. darwintracelib1.0 - implementation of the trace mode, loaded into processes while they build
  6. machista1.0 - mach-O parser used by ref upgrade, SWIG
  7. programs - daemondo for launchd scripts
  8. CFLib1.0 - core foundation, bridge between Tcl and others, cocoa APIs, getting proxy settings (redundant)
  9. tclobjc1.0 - bridge between Tcl and Objective C (redundant)
  10. tests
  11. registry2.0, cregistry (C API for the registry database), port activate and deactivate, multiple versions and revisions of ports
There's no point in expanding the above into paragraphs. They are more like keywords. To the left of hyphen are the modules present in macports-base src directory. I know this isn't any interaction with the community but helps me at least know what to ask. Also, by now, I have got commit access to MacPorts's Git repository and a MacPorts @macports.org handle :D!

I'll be talking about my project in the next post, soon.

GSoC#1 Sounds like Summer!

After waiting anxiously for the results and refreshing the page hundreds of times to see, if, by any chance, the results were out before 2130 UTC, officially I'm in!!!

It seems like yesterday when I was an open-source newbie on IRC, with a little knowledge of programming in C and a bit of Python learned through university courses. Little did I know that writing programs is just the Prolog of the process called software engineering. Looks like the summer is going to be a lot of cmakes and compilation errors.

I will be working as a student developer under Google Summer of Code (GSoC) for The MacPorts Project. I would like to thank pixilla, cal, and ijackson for helping me get started, being patient throughout my doubts, and giving feedback on my proposal.

                                               GSoC'17MacPorts


I'll try to post updates over here every 2 weeks and try to document as much as it's feasible for me. So, watch out for more about the project.

My GSoC: MacPorts proposal can be found here.