GSoC – Week 4: Implementing Enyo bootplate and discovering newer challenges.

IMPLEMENTING THE ENYO BOOTPLATE
————————————————————

As planned last week I went ahead this week started with the actual implementation procedure. For this purpose, I started with the Enyo 2.2 bootplate which provides the basic app structure needed by any Enyo app. The primary reason behind choosing the bootplate was that the bootplate template already provides all major libraries required including minimizer scripts, the Onyx widgetWidget A WordPress Widget is a small block that performs a specific function. You can add these widgets in sidebars also known as widget-ready areas on your web page. WordPress widgets were originally created to provide a simple and easy-to-use way of giving design and structure control of the WordPress theme to the user. set, etc.

The bootplate implementation part was fairly simple as expected. Extracted the contents of the bootplate zip into a directory named wordpress-firefoxos and added a manifest.webapp file with the following details:-
{
“version”: “0.01”,
“name”: “WordPress”,
“launch_path”: “index.htmlHTML HTML is an acronym for Hyper Text Markup Language. It is a markup language that is used in the development of web pages and websites.”,
“description”: “WordPress for Firefox OS.”,
“icons”: {
“48”: “images/logo48.png”,
“64”: “assets/icon64.png”,
“128”: “assets/icon128.png”
},
“default_locale”: “en”,
}

Once this was done, a basic app structure was established and I was good go to get started with the actual rewrite process.

DEVELOPING THE COMPOSE MODULE
———————————————————

As already stated in last’s week’s report, I found that it was pretty much a no-go to try to “Port” the existing module to the new app. Rather writing from scratch made way more sense. Hence, I took a from scratch approach, by first having a look at the Compose module in the older app and here’s a list of the primary components within the compose interface:-
1. A Toolbar consisting of four components:-
i. A “New Post” caption.
ii. A “Preview” button.
iii. A “Save Draft” button, and
iv. A “Publish” button.
2. A Text Input box for the Post’s Title.
3. A Text Input Area with the standard WYSIWYGWhat You See Is What You Get What You See Is What You Get. Most commonly used in relation to editors, where changes made in edit mode reflect exactly as they will translate to the published page. toolbar buttons and
4. A footer Toolbar with a “Settings” button.

Almost all of these components with the exception of the “New Post” caption would require explicit function declarations to account for their respective behaviors. However, the two primary parts of the Composer interface that require quite a bit of attention are the Image Upload and Settings buttons, as they trigger added behavior for the interface – while the former opens up a pop-up window to handle Image Uploading , the later opens up a sidebarSidebar A sidebar in WordPress is referred to a widget-ready area used by WordPress themes to display information that is not a part of the main content. It is not always a vertical column on the side. It can be a horizontal rectangle below or above the content area, footer, header, or any where in the theme. with Post publishing options.

An interesting challenge which needs to be taken care of here is that of how to tackle sidebar in smaller devices in the portrait mode.

CURRENT STATUS AND POSSIBLE DEVIANCE FROM SCHEDULE
——————–—————————–—————————–——————

The UIUI UI is an acronym for User Interface - the layout of the page the user interacts with. Think ‘how are they doing that’ and less about what they are doing. rebuilding process for the Compose area is almost done, using the Onyx widget library, however much of the behavioral functionality is yet to be written, most notably the Image Upload function. The heavy usage of persistence methods along with a large number of deprecated functions in the earlier app with a surprisingly low / no amount of code documentation is making things even harder. Also, the humongous amount of structural changes in enyo itself renders the older app’s huge code base virtually useless for reuse. All of these factors combined together, is taking its toll on the time vs. implementation graph, as the learning curve gets steeper and steeper, its taking me a bit longer than initially anticipated to get things implemented.

I expect to run a bit behind schedule in getting the Compose module implemented complete with the Image Image Upload and Settings functionalities. Another big issue that I’m currently facing is implementing Persistence in the app. Enyo’s persistence APIs seem to have been refactored, and I’m also a bit confused about how the Persistence.js module has been implemented. I’m currently trying to figure this issue out. Once, this hurdle is cleared, the rest of the app’s implementation process should be fairly simple.

#firefoxos

GSoC – Week 3: Reshuffling Basic Ideas for a Better Dev-Stack

RESULTS FROM THE FEED READER EXPERIMENT
————————————————————————-

Continuing my work from last week I developed a simple FeedReader application (https://github.com/sayak-sarkar/FeedReader) to prototype the app developement methodology using the older Enyo 1.0 framework. The app worked great on webkit based browsers and as expected wouldn’t work on Gecko, primarily because enyo 1.0 was never meant to work on it. This little adventure however cleared up a lot of why’s and where’s of the previous WordPress for WebOS app for me.

ISOLATING DEVICE DEPENDENCIES
——————————————————

The next adventure that I embarked upon was identifying the various device depencies implemented earlier into the application that were no longer needed, isolate these, and replace them with placeholders for Firefox OS. At first this looked like an important challenge to me, however, as I went digging deeper into Enyo, I discovered that the latest Enyo update has already taken care of these problems and has altogether deprecated all usage of device specific palm apis, which essentially translated into a lot of time saving for the project as a whole.

This is a major problem solver for the project. Now, I don’t need to worry about how to port palm apis to web apis and stuff, all that is needed to be done is write the new app’s source code along with the package informations [package.js] required by enyo. Test it on the browser, if it works, add a manifest.jsonJSON JSON, or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an alternative to XML. [package information required by Web apps] and test it on the simulator and device!

NEXT STEPS
——————–

Even though my encounters with the latest and greatest of the enyo framework saved me a lot of headaches, it also revealed a major problem with my earlier development schedule for the project. The earlier development schedule that I was following revolved around a “Pick a module, port (read upgrade) it and go to the next one” approach. However, from what I learnt in the last few days, my approach to the project should be that of “Pick an older module, understand the concept, rewrite it from scratch using enyo 2.2”. Though the new schedule remains identical to the older one now, my work process now hopefully takes a turn for the better.

For the time being I’ve decided to use the enyo 2.2 bootplate to rewrite the app from scratch using the older one as a mere reference instead of trying to upgrade it, primarily because of the vast changes in enyo itself and the deprecation of the palm device apis. This also means that there would be a complete refactoring of the directory structure of the app itself.

IMPACT ON SCHEDULE
———————————–

Even though the impact of the change in work methodology on the schedule isn’t expected to be much, it still has resulted in me running a bit behind schedule this week in the fact that I’m yet to get started on the Compose function. I expect a slight domino effect of this on next week’s schedule too, however it should be in complete check by the end of the next week.

CURRENT WORK STATUS
————————————–

As of now, I’ve just started working on a brand new bootplate instance, and will start adding newer functions to it shortly (as per the project timeline). Once this foundation is built I’ll start commiting the code to the project repository.

#firefoxos

GSoC – Week 2: Getting Started with Enyo.js for the Firefox OS app

Getting Started:
———————–

Since the start of the coding period last week, I’ve been playing around with Enyo.js based app development, identifying the similarities and dissimilarities between Enyo 1.0 and 2.2.

Protyping Approach to Development:
—————————————————

For starters, I’ve been working on writing a simple Feed Reader (https://github.com/sayak-sarkar/FeedReader) based upon Enyo 1.0 and then porting the app to work on Firefox OS. It is basically an app on its own which fetches posts from existing WordPress sites and displays them. This is a simple prototype model that I’m working on to identify and isolate WebOS based code and dependencies in the current WordPress for WebOS app. Once complete, I should be able to put placeholders for equivalent manifest as well as configuration files for Firefox OS in the current app’s code, which is precisely my target for this week.

Once, this is complete, which I expect to be within the next 3 days, I would be moving on to the code upgradation phase of the project where I would be upgrading the existing enyo 1.0 code to enyo 2.2.

Code Tracking:
———————

I’m yet to start using the SVNSVN Apache Subversion (often abbreviated SVN, after its command name svn) is a software versioning and revision control system. Software developers use Subversion to maintain current and historical versions of files such as source code, web pages, and documentation. Its goal is to be a mostly compatible successor to the widely used Concurrent Versions System (CVS). WordPress core and the wordpress.org released code are all centrally managed through SVN. https://subversion.apache.org/. based TracTrac Trac is the place where contributors create issues for bugs or feature requests much like GitHub.https://core.trac.wordpress.org/. repository as the current code that I’m working upon is a mere prototype that is most likely to be discarded, once I start building upon the primary code base of the WordPress for WebOS app next week onwards. Once the prototyping is complete, I would start by uploading a stripped down version of the current codebase containing of only the necessary configuration and coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. files, upon which the final application would be built.

#firefoxos

GSoC – Week 1: Introducing Myself!

Who Am I?

My name is Sayak Sarkar, a coding intern for WordPress at this year’s Google Summer of Code. I’m a Post-Graduate student from India, currently persuing M.Sc. in Computer Applications from Symbiosis International University where I’m currently in my fourth (and final) semester. I’m also a successful GSoC’er from last year where I developed a Visual-layout based Input Method for my mother-tongue Bengali (bn-IN). Apart from these I’m also very actively involved with quite a few FOSS Communities, most noteably Mozilla, where I’ve been an active contributor for almost 2 years now.

What Will I Be Doing?

This year, I would be working upon developing a WordPress app for Firefox OS which would be somewhat based upon the Enyo.js based WordPress for WebOS app. Basically, I would be dissecting the earlier enyo 1.0 based code for the WebOS App, Upgrade the code to Enyo 2.2 , rework the UIUI UI is an acronym for User Interface - the layout of the page the user interacts with. Think ‘how are they doing that’ and less about what they are doing. a bit, and bring the app back to life on Firefox OS.

Who Would Be Guiding Me?

I’m very happy to have Eric Johnson as my mentor for the project, as I feel that he is equally if not more excited about this project as I am.

Why Am I Here Doing What I’ll Be Doing?

Firstly, I’ve been working using WordPress for a long time now, mostly as a Web Developer using the CMS to build websites or as a Blogger to write random things that I come across. However, until now I didn’t have much contributions towards it. Last year I had planned on applying to WordPress but couldn’t as it wasn’t a mentoring organization then.

Secondly, Being a Mozillian, I’ve been following the development of Firefox OS quite closely for the last year and a half, especially the concept of web apps. A combination of my interests towards WordPress and Web Apps for Firefox OS are the primary factors which drove me towards applying to work with WordPress.

Here’s looking forward to a very successful coding season ahead and some significant contributions to WordPress. 🙂

#firefoxos

For the GSOC I think it would be…

For the GSOC I think it would be nice to have at least one project for WPiOS, WPAnroid and WPWinPhone. Maybe even encouraging something new like a Phone Gap effort, native BlackBerry, Tizen or Firefox OS apps. We should suggest some ideas.
Adding image filters to iOSiOS The operating system used on iPhones and iPads. quick photo might be a good project. Anyone have others?

#android, #blackberry, #firefoxos, #gsoc, #ios, #tizen, #windows-phone