Thanks for the Reply Allen. I'll try to add some of your suggestions
to my proposal. This is the original proposal that I submitted:
Abstract:
Currently ActiveResource requires developers to know the domain of the
REST service. The only way of knowing if a resource is available is if
the service includes some documentation. This project will develop a
standard resource discovery procedure for Rails. With this new
standard developers will be able to add code that can dynamically work
with the resources exposed through REST. As an example set of rake
tasks for generating REST client classes would be created.
Content:
About Me:
My name is Carlos Kirkconnell and I'm a Fulbright Scholar from
Honduras. I'm currently getting a Master in Software Engineering at
Kansas State University. I made my undergrad degree in Honduras and I
studied Computer Science. After graduating, I worked both as a
university professor and as project manager. I developed software for
around 5 years.
Most of my work on the industry was done using the .net Framework.
With every successive release of the .net framework, I saw how things
were getting more complex and I completely disliked how Visual Studio
encourages developers to write bad code.
Around 2 and a half years ago, I heard about a new framework called
rails. I investigated about it and I fell in love with it. The code
was so clean! Design patterns were encouraged! I finally felt I was
really working on an MVC pattern. Database migrations turned to be the
final solution for the constant headache we were experiencing at my
job. I adapted a rails project to one of our .net solutions, and used
migrations to keep multiple databases up to date. This implementation
was a success. I've been using rails since that then.
I quitted my job after I got the Fulbright scholarship. Currently on
my spare time I'm working a web application that integrates with
basecamp.
Why do you use Rails? How would you like to see it improve?
Rails is the best framework that I've ever used for developing web
applications. I like the freedom that a dynamic language like ruby
gives me. That combined with rails turns developing web applications a
fun experience.
One thing about rails that I would like to see improve is the process
of communicating with other apps. The default approach requires the
coder to know the names and structures of all the resources published
by a web site. I believe that a more streamlined approach could be
made in order to ease the job of developers that want to communicate
through REST between web apps.
Why is this important to the Rails community at large? Why is this
important to you?
This project is important for the Rails community for two reasons:
It will allow developers to explore the resources available through
REST and, in most cases, without needing any special documentation
about the resources, information about the resources would be
available.
Developers would be able to automate the creation of REST client
classes by using a rake task, reducing the amount of code required to
write.
This change will allow applications to be able to dynamically
"explore" websites searching for resources.
This project is important for me because, for my graduation project,
my research area is going to be distributed web application. This
project will be a great experience for my research area.
List a clear set of goals/milestones you'll hit during the summer. Be
specific.
For this project I pretend to accomplish the following milestones:
Discovery File for REST: My first goal would be to use the
information found in the routes.rb file to generate either an XRDS
file (XRDS - Wikipedia) or an RDF file (http://
en.wikipedia.org/wiki/Resource_Description_Framework). I would
probably have to discuss with my mentor what's the best option.
Discovery API: After creating the Discovery File, I would create an
API that will read that information and present it to developers as a
useful data structure that could be explored.
Rake Tasks: Finally I will create rake tasks for both automating the
creation of ActiveResource client classes and to inform developers
about the resources found on REST server.
Namespaces for ActiveResource: Since the names of the resources on
other sites might conflict with the classes of your domain, I will
need to assign the REST clients to a namespace.
Give a rough timeline for hitting these milestones.
Discovery File for REST: June 12
Discovery API: July 3
Rake Tasks: July 30
Namespaces: Aug 7
Wrapping Everything Up: Aug 21
How will you measure progress? How will you handle falling behind?
I will use basecamp to keep track of my milestones. In the event of
falling behind I will talk to my mentor to find the best solution to
solve the problem that is stopping me.
What are the "unknowns" in this project for you? What kind of pitfalls
could you run into?
I've never made a rails plugins, but I know there are tons of
tutorials out there about how to make one. Another challenge might be
how to read the routes.rb file. I would need to investigate about how
routes work internally in rails.