logo
The Falcon Programming Language
A fast, easy and powerful programming language
Location: Development ideas
User ID:
Password:
 

Idea List -- How can I help?

This page contains a set of ideas for Falcon related projects that may be targets for student applications. They pose interesting challenges in terms of effort, experience and support given to this project.

The list is not to be considered exhaustive. Applicants may present their own ideas for a public discussion on our forum and/or IRC channel (see the contacts area). If the idea proposed is found worthy, this will result in additional consideration for the final evaluation.

MIME support

Type:Module extension
Difficulty:Easy
Required skills:C++ (basic), IEEE protocols (basic).
Time frame:15 days
Mentoring:High

This idea consists of creating a binary native module using the Falcon multi platform C++ SDK to parse and create MIME documents. This is relates to big string management and virtual streams of strings.

The applicant will be in charge of designing an interface to the module functionality, implement it in C++, document it through the faldoc integrated module documentation system, provide code samples and automated unit test for evaluation by faltest.

The work will be evaluated based on the elegance of the interface, efficiency in terms of memory footprint and CPU consumption, completeness of the documentation (including samples) and on readability of the produced code. Extra consideration will be granted to work that promotes the uniquely multi-paradigm approach of the Falcon Programming Language in the interface provided to the final users. Top evaluation is given if the final work also provides a Falcon Service exposing the same functionalities provided to scripts via a C++ interface.

Client side HTTP protocol support

Type:Module extension
Difficulty:Intermediate
Required skills:C++ (intermediate), IEEE Protocols (intermediate)
Time frame:20 days
Mentoring:High

This idea consists of creating a binary native module using the Falcon multi-platform C++ SDK to support client HTTP connections.

The module should provide both all-in-one features to directly download the contents of a web page and more general usage functionalities such as slice download, persistent connection management, HTTP uploads and so on.

An interface for the Virtual Filesystem interface (providing abstract Falcon Streams pointing to web resources) should also be taken into consideration.

The applicant shall use the already existing URI parsing and multi-platform Socket library provided by the Falcon SDK. If it is not adequate for the task, the applicant may modify the library as needed.

The applicant will be in charge of designing an interface to the module functionality, implement it in C++, document it through the faldoc integrated module documentation system, provide code samples and automated unit test for evaluation by faltest.

The work will be evaluated based on the elegance of the interface, efficiency in terms of memory footprint and CPU consumption, completeness of the documentation (including samples) and on readability of the produced code. Extra consideration will be granted to work that promotes the uniquely multi-paradigm approach of the Falcon Programming Language in the interface provided to the final users. Top evaluation is given if the final work also provides a Falcon Service exposing the same functionalities provided to scripts via a C++ interface.

Light CMS

Type:Web application
Difficulty:Intermediate
Required skills:Web scripting (high), database (basic).
Time frame:15 days
Mentoring:Low

This idea consists of creating a light Content Management System able to drive personal & small communities blogs. The applicant is free to design the features and the interface, but the following minimal requirements must be met:

  • Easy configuration of the data presentation (skinnability, via text templates or via Falcon FTDs).
  • Horizontal/vertical/diagonal site design (blogs go down, sections go lateral, static resources go diagonal).
  • Possibility to register users and to have more bloggers.
  • Threaded comments.

The work will be evaluated based on the elegance of the interface, efficiency in terms of memory footprint and CPU consumption, completeness of the documentation (including samples) and on readability of the produced code.

Client side FTP protocol support

Type:Module extension
Difficulty:High
Required skills:C++ (intermediate), IEEE Protocols (high)
Time frame:25 days
Mentoring:High

This idea consists of creating a binary native module using the Falcon multi-platform C++ SDK to support client FTP connections.

The module should provide both all-in-one features to directly download the contents of a remote file and more general usage functionalities as slice file transfers, remote directory manipulation, active/passive settings and so on.

An interface for the Virtual Filesystem interface (providing abstract Falcon Streams pointing to remote resources) should also be taken into consideration.

The applicant shall use the already existing URI parsing and multi-platform Socket libraries provided by the Falcon SDK. If they are not adequate for the task, the applicant may modify them as needed.

The applicant will be in charge of designing an interface to the module functionality, implement it in C++, document it through the faldoc integrated module documentation system, provide code samples and automated unit test for evaluation by faltest.

The work will be evaluated based on the elegance of the interface, efficiency in terms of memory footprint and CPU consumption, completeness of the documentation (including samples) and on readability of the produced code. Extra consideration will be granted to work that promotes the uniquely multi-paradigm approach of the Falcon Programming Language in the interface provided to the final users. Top evaluation is given if the final work also provides a Falcon Service exposing the same functionalities provided to scripts via a C++ interface.

Client side POP3 protocol support

Type:Module extension
Difficulty:Low
Required skills:C++ (basic), IEEE Protocols (basic)
Time frame:10 days
Mentoring:Medium

This idea consists of creating a binary native module using the Falcon multi-platform C++ SDK to support client POP3 connections.

The module should provide support to transparently handle remote mail folders and to download headers or whole mail bodies.

An interface for the Virtual Filesystem interface (providing abstract Falcon Streams pointing to remote resources) should also be taken into consideration.

The applicant shall use the already existing URI parsing and multi-platform Socket library provided by the Falcon SDK. If it is not adequate for the task, the applicant may modify the library as needed.

The applicant will be in charge of designing an interface to the module functionality, implement it in C++, document it through the faldoc integrated module documentation system, provide code samples and automated unit test for evaluation by faltest.

The work will be evaluated based on the elegance of the interface, efficiency in terms of memory footprint and CPU consumption, completeness of the documentation (including samples) and on readability of the produced code. Extra consideration will be granted to work that promotes the uniquely multi-paradigm approach of the Falcon Programming Language in the interface provided to the final users. Top evaluation is given if the final work also provides a Falcon Service exposing the same functionalities provided to scripts via a C++ interface.

FLTK GUI widget library binding

Type:Module binding
Difficulty:Intermediate
Required skills:C++ (high)
Time frame:15 days
Mentoring:Medium

This idea consists of creating a binary native module to bind the multiplatform GUI library FLTK.

The applicant will be in charge of designing an interface to the module functionality, implement it in C++, document it through the faldoc integrated module documentation system, provide code samples and automated unit test for evaluation by faltest.

The modules should expose the full suite of functionality provided by FLTK, but the applicant is free to chose how to present the interface in the final module. Valid solutions are either a total conformance with FTLK API or the redesign of the interface to better conform with the Falcon programming language constructs.

The final work must be granted to be working on at least two platforms of choice among those supported by FLTK.

The work will be evaluated based on the elegance of the interface, efficiency in terms of memory footprint and CPU consumption, completeness of the documentation (including samples) and on readability of the produced code.

Client side IMAP protocol support

Type:Module extension
Difficulty:Intermediate
Required skills:C++ (basic), IEEE Protocols (high)
Time frame:20 days
Mentoring:Medium

This idea consists of creating a binary native module using the Falcon multi-platform C++ SDK to support client IMAP connections.

The module should provide support to handle transparently the remote mail folders and to download headers or whole mail bodies.

An interface for the Virtual Filesystem interface (providing abstract Falcon Streams pointing to remote resources) should also be taken into consideration.

The applicant will be in charge of designing an interface to the module functionality, implement it in C++, document it through the faldoc integrated module documentation system, provide code samples and automated unit test for evaluation by faltest.

The applicant will be in charge of designing an interface through which to access the module functionalities, implement it in C++, document it through faldoc integrated module documentation system and provide samples and automated unit test to be run through faltest tool.

The work will be evaluated based on the elegance of the interface, efficiency in terms of memory footprint and CPU consumption, completeness of the documentation (including samples) and on readability of the produced code. Extra consideration will be granted to work that promotes the uniquely multi-paradigm approach of the Falcon Programming Language in the interface provided to the final users. Top evaluation is given if the final work also provides a Falcon Service exposing the same functionalities provided to scripts via a C++ interface.

SSL Cryptography library binding module

Type:Module binding
Difficulty:Low
Required skills:C++ (intermediate)
Time frame:30 days
Mentoring:High

This idea consists of creating a binary native module using the Falcon multi-platform C++ SDK to bind a SSL cryptography library. It is essential that the applicant review the C based interface proposed by SSL libraries and presents a more ergonomic interface suite to the Falcon language paradigms.

The applicant will be in charge of designing an interface to the module functionality, implement it in C++, document it through the faldoc integrated module documentation system, provide code samples and automated unit test for evaluation by faltest.

The work will be evaluated based on the elegance of the interface, efficiency in terms of memory footprint and CPU consumption, completeness of the documentation (including samples) and on readability of the produced code. Extra consideration will be granted to work that promotes the uniquely multi-paradigm approach of the Falcon Programming Language in the interface provided to the final users. Top evaluation is given if the final work also provides a Falcon Service exposing the same functionalities provided to scripts via a C++ interface.

Firebird Database Server module driver for DBI system

Type:Module binding
Difficulty:Intermediate
Required skills:C++ (high), database (basic)
Time frame:30 days
Mentoring:High

This idea consists of creating a binary native module using the Falcon multi-platform C++ SDK to provide an interface to the Firebird database server through the DBI abstract interface system.

The resulting module shall use the Falcon Service interface to expose methods used by the DBI system to access database resources. Other than that, the applicant shall implement a set of functions interfacing directly the Firebird database API which can be called directly by scripts bypassing the DBI interface.

The applicant will be in charge of designing an interface to the module functionality, implement it in C++, document it through the faldoc integrated module documentation system, provide code samples and automated unit test for evaluation by faltest.

The work will be evaluated based on the elegance of the interface, efficiency in terms of memory footprint and CPU consumption, completeness of the documentation (including samples) and on readability of the produced code. Extra consideration will be granted to work that promotes the uniquely multi-paradigm approach of the Falcon Programming Language in the interface provided to the final users. Top evaluation is given if the final work also provides a Falcon Service exposing the same functionalities provided to scripts via a C++ interface.

Compiler optimization

Type:Core design
Difficulty:Very High
Required skills:C++ (high), compilers theory (intermediate).
Time frame:20 days
Mentoring:High

This idea consists of introducing syntactic tree level script optimizations in the 0.9 Falcon compiler.

Falcon compiler is still completely unoptimized, and this makes a perfect playground to put into practice various optimization theories.

The applicant is required to write a two or more level optimizer, with different levels having different optimization/complexity ratios.

The applicant may also intervene on the generation of Falcon bytecode for further optimization on the resulting output, if he/she is so interested in this topic.

The applicant may also suggest changes to the Virtual Machine to better accommodate language features or generated bytecode, if this may result in overall better performance.

Evaluation will be based on the quality of the work in terms of performance improvement.

Web platform development

Type:Web application
Difficulty:High
Required skills:Web scripting (very high), database (high).
Time frame:45 days
Mentoring:Low

This idea consists of creating a platform for general web application development. Details are totally left to the applicant, but the plan must include the following features:

  • Easy mapping of logical entities to database records.
  • Well identified presentation logic that is easily configurable.
  • Remotely callable API.
  • Extendibility via plug-ins.
  • Integrability with client-side scripting (browser widgets).

The applicant is not required to produce client side scripting facilities, but is required to provide hooks for client side scripting facilities to be added by the end users.

Resources (database, web server, hosting) can be provided by the Falcon Committee, or the applicant can provide their own.

Due to the complexity of the project, it is recommended that applicants gather in a small work group.

The work will be evaluated based on the elegance of the interface, efficiency in terms of memory footprint and CPU consumption, completeness of the documentation (including samples) and on readability of the produced code.

Implement Falcon Debugger

Type:Core Development
Difficulty:High
Required skills:C++ (High), compiler theory (intermediate), Falcon Language Knowledge (Low)
Time frame:45 days
Mentoring:High

Currently the Falcon Programming Language does not have a Debugger. With the pending release of v1.0 this will be an excellent opportunity to implement a debugger for Falcon. Writing a debugger gives the applicant a fantastic understanding on the internals of a language. Additionally the applicant will learn how Falcon uniquely implements new and innovative language theories/techniques

The applicant will be in charge of developing a complete debugger. This includes the front and back end. Primary coding will be in C++. Some Falcon knowledge will be required from a testing perspective. As with ALL projects, some level of documentation will be required too.

The work will be evaluated based on your implementation of the Falcon Debugger. The debugger minimally should implement the ability to set break points, watch points and provide various types of data on a running Falcon application. The applicant must also take into account hooks (or the interface) for debugging frameworks to incorporate the Falcon Debugger.

Application Form

Although applications must be submitted to Google Summer of Code initiative, here is the application form for reference:


Name     :_____________________________________


Birth year:_____________________________________


Location  :_____________________________________ (Please, indicate GMT offset).


Education :_____________________________________ (Just your highest degree or current study course).


Known OSs :_____________________________________________(Indicate Operating system you can develop on).


Skills -- Rate each voice from 1 (know some) to 3 (master), leave blank.

    * C/ASM  :__
    * C++    :__
    * Perl   :__
    * PHP    :__
    * Python :__
    * Ruby   :__
    * English:__  (3 is native and well instructed speaker)
    * RPM making :__
    * DEB making :__
    * Other packaging systems (Nsys...): __________________________________________________(specify)
    * Web development :__  (refers to known web platforms).


What is the task that would interest you the most? (rate 1 to 3, none if uninteresting):

    * Development of the compiler/lexer/optimzier        :__
    * Development of the virtual machine/memory manager  :__
    * Development of modules (mime, http, GD2...)        :__
    * Development of web-based platforms/applications    :__
    * Development of AI/data analysis tools              :__
    * Development of GUI/editors/graphic tools           :__
    * Testing, benchmarking, algorithm implementation    :__
    * Documentation                                      :__


What is the value you think you can add to The Falcon Programming Language? (don't be shy: be bold!)

_

_

_

_

_


Describe why would you work with us and what you expect from our project:

_

_

_

_

_
Loading

Elapsed time: 0.012 secs. (VM time 0.005 secs.)