public
Last active

Parrot proposal

  • Download Gist
gistfile1.md
Markdown

Personal Information

Email: denisboyun@gmail.com

Short description: My project is changing of Web UI in app-parrot-create. It will allow to create a language/project skeleton more intuitive.

First and Last Name: Denis Boyun

IRC and/or Skype Name: denisboyun / denis_boyun

Availability

I don't have any plan any vacations and there are no additional classes in university, so there will not be any absences during it. I'm going to work on GSoC from 56 to 112 hours in the week. I can to start working when it is needed for the organization.

Bio

I'm student of the Chernihiv State Technological University (Chernihiv, Ukraine). I'm studying at the Faculty of Electronic and Information Technologies on the Informational Computer Systems department (official site, in Ukrainian), System Programming speciality. I have a year of Perl5 coding experiments in different areas of knowleadge. Such as the system programming and the web programming. I was set the remote configuration of ip phone with Perl5(https://github.com/denisboyun/phone_configuration.git ). I was created a web-application with mojolicious framework and worked with dancer framework(https://github.com/denisboyun/phone_configuration.git; https://github.com/denisboyun/duty.git ). Also I have an experience of team development ( a corporate web-application on Perl5 with modern ORM such as DBIx ). I'm working with version control systems such as git, svn, bazaar.

Project Description

My project is to improve Web UI of app-parrot-create. The one-page website is going to be consist of 3 parts. Such as header, footer and body contents. Footer is going to contain on addtional information about copyright, etc. Header is going to contain a navigation bar. They are showing which type of project will be to create. For example, a new parrot high level language or a new parrot library. The body content depends on the selected item menu. But the input information such as name, builders, test for these projects will be the same. The body is going to contain 3 mandotory and 1 optional parts. It are input/selector fields, description information, "create button" and optional fields(if it's supported that). Input/selector fields are contains a project name, builders and test. Description information are contains information about project which is created(with links on official documentation about generated project, etc). "Create button" is button which returns a zip file with a source code. Optional fields are included special options, such as "Custom PMCs", "Custom ops", "Design Doc templates (POD)". I am going to use a twitter bootstrap toolkit in the development process. Well about the back-end framework code. I'm going to change route handlers, because all actions will be doing on a one page via post request/response. And the last I'm going to write perl modules which are providing object oriented interfaces for generating a different projects skeleton.

Project Schedule

April 27 - May 27:

This is the pre-initial stage where I will speak with a mentor about the development of project. This period would be solved a problem with a migration project on Mojolicious::Lite framework. We will speak about the best ways of future work. This period will help us to determine the most difficult problem and will find the best solution. Such as issue 1, issue 2, issue 4.

May 27 - June 10:

This is the initial stage where I will read docs about Twitter bootstrap, jquery 2.0, HLL project, Winxed, NQP, Pir, Rosella(Winxed), Rosella(NQP) and library parrot project etc. I will pay attention on Rosella (Winxed), Rosella (NQP), Perl 5 tests harness and a Winxed-based build system.

June 11 - June 20:

This period would be created a site model. I've already described the appearence of web-site in Project Description. I will create it with Twitter toolkit. Basically, I'll use the ready-made solutions and examples such as bootstrap examples.

This period would be done a issue 4.

June 21 - June 30:

This period would be integrated with a back-end framework. I'll work with a modern micro framework Mojolicious::Lite. It's including a many toolkit for developer. Such as an automatic build and documentation system, a built-in web-server - morbo, a integrated test/debug system and many plugins for deploying on a real web-server(nginx, apache etc).

Since this will be a one-page website the main way of development will be work with jquery and post response/request.

This period would be done a issue 5.

July 1 - July 5:

This period would be create a HLL template file. I'm going to use a perl Template toolkits(such as Text::Template package) for this task. These toolkits supports a flexible means for work with similar tasks. It's going to support a different build, test systems and other options.

July 6 - July 16:

This period would be wrote a perl modules which to generate a HLL project. It will a object oriented class which will be providing a different method for work with HLL project. Such as you can to set a build system, a test harness and other options(Custom PMCs, Custom ops, Design Doc templates (POD)).

I will use Moose for realization the object-oriented concepts. For all HLL scripts and packages I will use a perl version from 5.14.

July 17 - July 30:

The project is going to deploy on GNU Compile Farm, for testing and developing. At this time mentor will appreciate my work. I will correct bugs if it would be.

July 31:

Midterms.

August 1 - August 8:

This period would be provided all the options for a HLL project. Such as different build systems, different test harness etc. I will have a HLL template file, which is considering all is needing to generate a project. I will have a class, which will be to take different parameters(about build systems, test harness etc). It will parse a HLL template file depending on the parameters. After that it will be to make decision about skeleton of project and will generate it.

This period would be done a issue 1, issue 2.

August 9 - August 11:

Add pod documentation and tests for a HLL project. I will use Test::Mojo and Test::More a built-in test package. I will use a pod anotation on documentation. I will generate the documentation with a pod2* toolkit and a mojolicious plugin Mojolicious::Plugin::DOCRenderer.

August 12 - August 20:

This period would be create a parrot library template file. I'm going to use a perl Template toolkit(Text::Template package) for this task. These toolkits supports a flexible means for work with similar tasks. It's going to support a different build and test systems.

August 21 - August 28:

This period would be wrote a perl modules which to generate a parrot library project. It will be a object oriented classes which will be providing a different method for work with parrot library project. Such as you can to set a build system, a test suite etc.

I will use Moose for realization of object-oriented concepts. For all parrot library scripts and packages I will use a perl version from 5.14.

August 28 - September 11:

This period would be provided all the options for a parrot library project. Such as different build systems, different test suite etc. I will have a parrot library template file, which is considering all is needing to generate a project. I will have a class, which will be to take different parameters(about build systems, test suite etc). It will parse a parrot library template file depending on the parameters. After that it will be to make decision about skeleton of project and will generate it.

September 11 - September 13:

Add pod documentation and tests for a parrot library project. I will use Test::Mojo and Test::More a built-in test package. I will use a pod anotation on documentation. I will generate the documentation with a pod2* toolkit and a mojolicious plugin Mojolicious::Plugin::DOCRenderer.

September 14 - September 16:

Global testing.

September 16 - September 22:

This period would be corrected the possible bugs and issues.

September 23:

Submit Code.

Deliverables

I expect to get a working project which could generate a skeleton project depending on an input parameters such as name, build and test systems.

This is a great start! Please add about a paragraph of details for each week. Basically, it is a breakdown of your "Project Description", but with more details for each week. For example, part of your deliverables are to fix issues #1, #2, #4 and #5. Please add those to specific weeks. The more details, the better.

Also "coding starts" June 11th? You have already started! Feel free to make the timeline fit with what you are doing. If you want to start tomorrow, that is fine. You accomplish and learn more, so that is not a bad thing :)

Another point: This will not "integrate" with the current parrot.org, but it will be a subdomain. Parrot.org will link to this. We can try to emulate the color/CSS of the current parrot.org, but I don't think we need to.

IMHO, the current parrot.org is a bit ugly, so if we can make app-parrot-create prettier than parrot.org, then that would be better :)

The updates look great!

Will you be using Moose or MooseX? Which versions of Perl will be supported? i.e. what is the minimum version required? It is good to have these things specified.

Also, if you plan on using MooseX, make sure that the MooseX::* things you want to use work with the version of Moose that you are using.

As for your questions about skeleton/template files from IRC:

each kind of template should have it's own directory in the project-templates/ directory. Each template directory will have various files and subdirectories. Inside of the files will be tags that are replaced at run-time when the web-app generates the project skeleton. For instance, there could be a ##NAME## tag that gets replaced with the name of the project. If you look at the scripts that app-parrot-create currently uses, you will see that it does something very similar.

I'm using a perl v 5.14.2 on my machine, but if it need I'll support an earlier version such as perl v 5.10.
I wrote about a vanilla perl(object with bless and etc), but if we can use a Moose or MooseX, I'm just a very glad. As for me Moose is a good variant. I will be using a Moose + Method::Signatures + Try::Tine.

I think we should define exactly what your "deliverables" will be. Will actually deploying the code to a live site be part of the project? Are you interested in that?

Ok. I've done. Your idea about deploying the code to a live site is very interesting. But I can't say anything at that moment. I think, we need to talk about this task in more detail.

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.