hi!<br>i have been using fedora since 2005. i like this very mouch and i alwas encorage my friends to use it.<br>it was my dream to be one of the fedora contributores and now i am here. But dont know how to start. <br>i have knowledge on <br>
                             administrative level,<br>                             server configuration, <br>                             shell scripting,<br>                             C, assembly language.<br>now i am studying on kernel and in the very primary level.<br>
please give me some advice how can i start as a contributor, how can i get a project that should be done to develop fedora and which is within my ability.<br><br><div class="gmail_quote">On Fri, May 30, 2008 at 7:45 PM, Luke Macken <<a href="mailto:lmacken@redhat.com">lmacken@redhat.com</a>> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">On Thu, May 15, 2008 at 11:24:59AM -0400, John (J5) Palmieri wrote:<br>
> On Wed, 2008-05-14 at 12:39 -0400, Luke Macken wrote:<br>
> > On Wed, May 14, 2008 at 09:06:24AM -0700, Toshio Kuratomi wrote:<br>
> > > Forwarding to fedora-infrastructure-list soit canget more exposure and<br>
> > > discussion.<br>
> > ><br>
> > > -------- Original Message --------<br>
> > > Subject: Tosca widgets, only half the battle<br>
> > > Date: Sun, 11 May 2008 12:27:36 -0400<br>
> > > From: John (J5) Palmieri <<a href="mailto:johnp@redhat.com">johnp@redhat.com</a>><br>
> > > To: Toshio Kuratomi <<a href="mailto:a.badger@gmail.com">a.badger@gmail.com</a>><br>
> > > CC: <a href="mailto:tcallawa@redhat.com">tcallawa@redhat.com</a>, <a href="mailto:lmacken@redhat.com">lmacken@redhat.com</a>, <a href="mailto:mmcgrath@redhat.com">mmcgrath@redhat.com</a><br>
> > ><br>
> > > After hacking away at MyFedora and producing a lot of ugly code in the<br>
> > > process I finally sat down the last two weeks to organize everything<br>
> > > into a framework make it much more extensible and have patterns for<br>
> > > people to easily create content.  Most of the technologies are<br>
> > > solidifying into my head and I have been working on hashing out an API<br>
> > > design behind the user interaction design I had started with.  The issue<br>
> > > I am running into now is the fact that Turbo Gears and related<br>
> > > technology come from a monolithic design and adhere too stringently to<br>
> > > the Model/View/Controller design pattern.  This is really an issue when<br>
> > > your models, views and controllers can come from different applications<br>
> > > or even different servers.  MyFedora is of course a mashup of different<br>
> > > tools and does not fit the, I'm grabbing data from a single database and<br>
> > > displaying it via a self contained template, mold.  What I need is a<br>
> > > complete plugin system where a person can write their own self contained<br>
> > > controllers, templates and static files which then drop in and are<br>
> > > loaded on the fly, while integrating with the global project.<br>
> > ><br>
> > > Before I go further let me describe my design.<br>
> > ><br>
> > > Vocabulary:<br>
> > ><br>
> > > Resource - This is the starting point for MyFedora plugins.  A resource<br>
> > > is any abstract grouping such as "packages", "people" and "projects"<br>
> > > which contain tools for viewing and manipulating data within the<br>
> > > resource's context.<br>
> > ><br>
> > > Tools - A tool is a web app for viewing or manipulating data.  For<br>
> > > example Builds would be a tool for the package resource.<br>
> > ><br>
> > > Data Id - The data id is a pointer to a specific dataset the tools work<br>
> > > on.  For example the package resource considers each fedora package name<br>
> > > to be a data_id.<br>
> > ><br>
> > > The way things work are Resources are placed in the resources/ directory<br>
> > > and contain the logic for routing requests to a specific tool.  They<br>
> > > also contain the master template which is a cause of path problems with<br>
> > > the current TG setup (include paths are relative to the including<br>
> > > template)<br>
> > ><br>
> > > Tools are placed in the tools/ directory and are controllers just like<br>
> > > any other TG controller.  The exception is there is a standard for<br>
> > > including the master template and the tool pulls templates and static<br>
> > > files from its own directory.  Tools can register with more than one<br>
> > > resource and must modify its behavior based on the resource calling it.<br>
> > > For instance the Build tool would be able to register with the package<br>
> > > and people resource and depending which resource is being used it would<br>
> > > display either a specific person's builds or the build history of a<br>
> > > package.  Based on the resource being used the master template is pulled<br>
> > > in by the tool's templates.<br>
> > ><br>
> > > Data id's are simply what the resource passes to the tool and the tool<br>
> > > needs to be able to accept when dealing with a particular resource.  For<br>
> > > instance the Packages resource would send a package name as a data id<br>
> > > and the Peoples resource would send a person's FAS username.<br>
> > ><br>
> > > The issue here is I need the tools to be self contained but still<br>
> > > integrate correctly with the global assests such as master templates and<br>
> > > graphics.  Tosca widgets seemed to be the answer until I looked further<br>
> > > and found out they are just a higher level display layer than a self<br>
> > > contained controller/template system.  It seems to be confusing because<br>
> > > it breaks the connection between the controller, data and the display<br>
> > > when I want that all to be encapsulated.  Basically I don't want the<br>
> > > master page dolling out the data because the master page is just a<br>
> > > container to display the tool and links to other tools.  The tools<br>
> > > should know where to get their data from.<br>
> > ><br>
> > > One solution is to use ToscaWidgets as a replacement for templates (or<br>
> > > more apt another layer between the controller and the template).  That<br>
> > > makes things more complicated and throws away a lot of the concepts of<br>
> > > TG controllers.  I guess I am probably just hung up on how I first<br>
> > > learned TG and we can just document around those issues.  But another<br>
> > > thing to think about is stuff like WSGI.<br>
> > ><br>
> > > What do you guys think? Given my design and goals such as the ability to<br>
> > > display tools on the portal page, what is our plan of attack?  How do we<br>
> > > concoct a plugin system to make it easy for others to create integrated<br>
> > > content while really just concentrating on their bits and not the wider<br>
> > > integration infrastructure?  Are there systems/libraries out there that<br>
> > > already do this? Tosca is only part of the solution because it only<br>
> > > deals with encapsulating display and is mostly geared to generic widgets<br>
> > > like lists and not complete pages.  I would like to have a framework<br>
> > > that is simple, focused and easy to use.<br>
> ><br>
> > You mention that you're running into issues with TurboGears v1.0's<br>
> > "monolithic design", which makes various assumptions about how your<br>
> > application is going to be implemented.  I agree that this may not be<br>
> > ideal for the MyFedora environment, which is why I think basing this on<br>
> > TurboGears v2.0 is the way to go.  Being built on top of Pylons, which<br>
> > does not make these strict assumptions, it will allow us to have much<br>
> > more control over how our application stack is structured.  Since<br>
> > TG2/Pylons leverages the WSGI standard (which we are starting to adopt<br>
> > in our infrastructure deployment already), it will allow us to change<br>
> > any part of our own stack at any time, without taking apart the whole<br>
> > framework.  If we treat resources as WSGI applications/middleware, it<br>
> > will make it trivial to plug these into our framework, package them, and<br>
> > develop them in isolation.<br>
> ><br>
> > ToscaWidgets is extremely useful, but not at this low of a level in our<br>
> > framework design.  I think that TW will be great for the high-level<br>
> > re-usable widgets that can potentially use various MyFedora<br>
> > resources/tools, but for core MyFedora resources, I think basing them on<br>
> > top of the WSGI standard will be the most flexible solution.<br>
><br>
> I was thinking that but I am still not sure what WSGI is.  Right now it<br>
> is just a magic term to me.  Can you describe them in terms of<br>
> controllers right now?  How does relative paths work (for instance with<br>
> template inheritance)? Is TG 2.0 stable enough for me to start rebasing<br>
> on?<br>
<br>
So, in terms of controller dispatching, they use two different<br>
mechanisms.  TurboGears 1.0 uses CherryPy's object dispatch, which is<br>
essentially an attribute lookup for each path segment.  Pylons uses<br>
Route's pattern matching against the full path to determine the<br>
controller to dispatch to.<br>
<br>
Basically, TurboGears object dispatching points to a function that is invoked by<br>
CherryPy, where Pylons points to a WSGI application.<br>
<br>
Since we're already using Routes for MyFedora, the switch to TG2 seems<br>
quite logical.  TurboGears2 will use a more flexible object-dispatching system,<br>
and will also support direct Routes integration as well.<br>
<br>
For a great comparison of TurboGears (1.0) to Pylons, I recommend<br>
checking out this blog post by Ian Bicking:<br>
<br>
    <a href="http://blog.ianbicking.org/turbogears-and-pylons.html" target="_blank">http://blog.ianbicking.org/turbogears-and-pylons.html</a><br>
<br>
luke<br>
<br>
_______________________________________________<br>
Fedora-infrastructure-list mailing list<br>
<a href="mailto:Fedora-infrastructure-list@redhat.com">Fedora-infrastructure-list@redhat.com</a><br>
<a href="https://www.redhat.com/mailman/listinfo/fedora-infrastructure-list" target="_blank">https://www.redhat.com/mailman/listinfo/fedora-infrastructure-list</a><br>
</blockquote></div><br>