No subject


Thu Feb 24 17:58:36 CET 2011


an applicative form. If you build a custom form, you have to declare a field
both in your form/view model and in your view, which is the kind of insecure
duplication we would like to avoid when possible.

You can already create custom form layouts with the monadic form creator.
Honestly I haven't used the new version at all or the old version for
anything that needs validation, so I am not sure if you can insert error
messages for fields.

Conditional validation logic is not really supported server side, let alone
client side. There are already several javascript generators for haskell. At
any rate it is probably a similar task to implementing reflection,
quotation, and javascript generation in F#, except that more needs to be
done at compile time.

We value your opinions. These are definitely features that I have needed on
occasion. We just have to think about how they best translate to haskell,
and how they fit into our limited time to make Yesod better.

Greg Weber

On Wed, Jun 1, 2011 at 8:26 AM, Justin Greene <justin.j.greene at gmail.com>wrote:

> Hi Greg,
>
> For custom form design, do you just want a different html structure
>> (paragraphs instead of table rows)?
>
>
> No, having an auto generated structure will never be able to handle the
> various requirements I get for forms.  Having a system that auto generates
> scaffolding for you is a nice to have, having a system that only gives you
> auto generated forms is about the same as painting yourself into a corner.
>
> For security in asp.net mvc you would have a form model, or what is
> commonly referred to as a view model.  This model only has fields that you
> wish to be exposed.  On form submission you would then move the desired
> fields to your domain/data model (this can be simplified by using a project
> like automapper which uses reflection and configuration to copy fields).
>  The validation is also associated with the form/view model.
>
> I didn't see a full controller example in your F# code- how do you securely
>> update your model?
>
>
> The full submit action sample is generally very small due to a lot of the
> plumbing of asp.net mvc being hidden.
>
> In F# it would look something like this.
>
> type MyController() =
>     inherit Controller()
>
>     member this.MySubmitAction(form:MyFormModel) =
>         if ModelState.IsValid = false then
>             base.View("MyFormView", form)
>         else
>             let domainModel = moveFormModelToDomainModel form
>             save domainModel
>             redirectToThankYouPage ()
>
> By the time you enter the above method you will already have your form
> validated with the ModelState being populated with your validation errors.
>
> I don't really believe that a lot of this is transferable to haskell, due
> to the lack of reflection and general constraints that haskell puts on you.
>  I've theorized about how I would go about creating much the same thing in
> haskell, but to get the javascript conversion you'd have to write a template
> haskell -> javascript converter (which would probably be quite a bit of
> effort).  For custom layout you'd probably also have to use template haskell
> to specify where you want form fields to render.
>
> Anyway, these are obviously just my opinions and you can take them or leave
> them.  I'd really love to be able to use yesod and haskell for the type of
> work I do, but I can't see doing so until it has what i consider a robust
> forms solution that doesn't add a lot of friction to my development.
>
> On Wed, Jun 1, 2011 at 9:58 AM, Greg Weber <greg at gregweber.info> wrote:
>
>> Hi Justin,
>>
>> It is great to have feedback from an F# perspective.
>>
>> For custom form design, do you just want a different html structure
>> (paragraphs instead of table rows)? If so, it is easy enough to create a new
>> form renderer for a different structure. Easier css manipulation should help
>> to design custom forms. It seems that the main problem would be if you want
>> to insert some extra structure, like a paragraph, in between some form
>> fields. You can build custom forms with the monadic form builder, but it
>> doesn't handle error propagation automatically. We should see how your
>> example translates here.
>>
>> As another example of validations, Rails supports complex validation logic
>> by placing it entirely in the model instead of the form (but it gets fed
>> back to the form). There is at least one project now to extend that
>> validation logic to the client side.
>>
>> In Rails, like the F# example, it is easy to build custom forms because
>> they are placed in your view. However, this along with Rails mass attributes
>> updates (assign every form field to the model instead of listing out every
>> attribute to assign) is a major cause of security problems- now you have to
>> block a malicious user from submitting fields that you didn't want to expose
>> in your form. By building the form outside of the view, we automatically
>> have a data structure that determines which fields can be assigned. I didn't
>> see a full controller example in your F# code- how do you securely update
>> your model?
>>
>> Thanks,
>> Greg Weber
>>
>> On Wed, Jun 1, 2011 at 6:57 AM, Justin Greene <justin.j.greene at gmail.com>wrote:
>>
>>> The custom form design and variable length list stuff is default asp.netmvc.
>>>
>>> The validation stuff I ended up writing myself using F# quotations, it
>>> goes a couple steps farther than what I even mentioned as it converts the F#
>>> to javascript so you get server side validation and client side validation
>>> for free.  Here's the github project:
>>> https://github.com/jgreene/FSharp.Javascript.Mvc and you can read more
>>> about it here: http://justsimplecode.com/
>>>
>>> <https://github.com/jgreene/FSharp.Javascript.Mvc>There is not much
>>> documentation, and there is some complexity to setting up a framework to do
>>> something like this, but it's very doable.
>>>
>>>
>>>
>>> On Wed, Jun 1, 2011 at 8:44 AM, Mark Bradley <barkmadley at gmail.com>wrote:
>>>
>>>> On Wed, Jun 1, 2011 at 11:32 PM, Justin Greene
>>>> <justin.j.greene at gmail.com> wrote:
>>>> >> * Forms package: It's been rewritten, but hasn't really had much
>>>> input
>>>> >> from others. Now's the time to speak up if you have any opinions on
>>>> >> it. The code is available on Hackage.
>>>> >
>>>> > List of things that should be inside a forms package in my opinion.
>>>> > Custom Design: Form layout should be simple to customize and not be
>>>> based
>>>> > around auto generating tables (if both are possible then of course the
>>>> later
>>>> > can be used).
>>>> > Variable length lists: It should be possible to add form elements on
>>>> the
>>>> > client side and bind them on the server side.  An example of this
>>>> would be a
>>>> > list of addresses.  A programmer should be able to add a new address
>>>> widget
>>>> > client side without problems when binding server side.
>>>> > Validation:  Complex validation scenarios should be simple and should
>>>> fit
>>>> > into the normal validation pipeline.  An example would be validating
>>>> that if
>>>> > a checkbox is selected then a textbox becomes required.
>>>> > All validation errors should display around the same time, e.g. if a
>>>> type
>>>> > validator fires it should not prevent other validators from firing
>>>> after it
>>>> > unless those validators depend upon that type data.
>>>> > These are just my thoughts based upon my experiences writing forms.  I
>>>> can't
>>>> > really utilize any framework that doesn't implement these features for
>>>> the
>>>> > types of projects I do.
>>>> > If you need any more details/clarification I'd be happy to help.
>>>>
>>>> out of curiosity, which frameworks have you worked with that have some
>>>> or all of these features (particularly the complicated validation)?
>>>>
>>>> >
>>>> >
>>>> >
>>>> >
>>>> > On Mon, May 30, 2011 at 3:41 PM, Michael Snoyman <michael at snoyman.com
>>>> >
>>>> > wrote:
>>>> >>
>>>> >> Hi all,
>>>> >>
>>>> >> It's been about a month since the 0.8 release of Yesod. In the
>>>> release
>>>> >> announcement[1], we laid out some goals. Let's take a chance to
>>>> >> analyze where we're at:
>>>> >>
>>>> >> * Documentation: Still improving as always. In particular, the new
>>>> >> Yesod site is making it much easier for me to write new content (I
>>>> >> have a few things on my local system that can finally go up).
>>>> >>
>>>> >> * Static file caching headers: Implemented by Greg Weber. We'll
>>>> likely
>>>> >> be making some API changes to handle embedded files, though that
>>>> >> discussion deserves its own blog post.
>>>> >>
>>>> >> * Other template types: For Hamlet 0.9, we're going to be splitting
>>>> >> Julius/Coffeescript into their own package, and juggling the type
>>>> >> signature for Coffeescript a bit. At that point, it should be
>>>> >> straightforward to embed Coffeescript directly into a Yesod app, just
>>>> >> like Julius is today.
>>>> >>
>>>> >> * Something like require.js: This is something we haven't started on
>>>> >> yet. I'll likely start looking into it this week. Additionally, I
>>>> know
>>>> >> that a lot of my sites (jQuery powered) have numerous onload calls
>>>> per
>>>> >> page; I think we can try to make that more efficient as well. I would
>>>> >> especially like people's input on this point.
>>>> >>
>>>> >> * i18n: The solution is written, and I'm using it in production. At
>>>> >> this point, I'd call it beta quality, and I'd appreciate input.
>>>> >>
>>>> >>
>>>> >>
>>>> >> * Embedded objects in MongoDB: No work done yet.
>>>> >>
>>>> >> * Performance improvements: Nothing in particular. If you have any
>>>> >> examples of Yesod performing badly, please let us know.
>>>> >>
>>>> >> The goal is for Yesod 0.9 to be feature complete, and for 1.0 to be a
>>>> >> fairly stable API. From the list above, my two priorities are better
>>>> >> Javascript loading (require.js) and static file serving. However,
>>>> >> there's one other major issue we need to address: the devel server.
>>>> >> Unfortunately, it doesn't work very well at all right now.
>>>> Thankfully,
>>>> >> "yesod build" *does* work very well, and for my development I've
>>>> >> fallen back to simply "yesod build && ./dist/build/myapp/myapp" on
>>>> the
>>>> >> command line. My guess is that we're 90% of the way there on "yesod
>>>> >> devel". This is a project that isn't tightly bound to the rest of the
>>>> >> API work, and would be very approachable for someone trying to get
>>>> >> started on Yesod development. If you're interested in helping out
>>>> >> here, please let me know.
>>>> >>
>>>> >> I have no specific timeframe in mind for Yesod 0.9. As it stands now,
>>>> >> it looks like the 0.9 release will involve almost no API breakage,
>>>> >> which is a very good sign. But if you have any ideas you'd like to
>>>> >> contribute, I'd recommend getting them in in the next week or two.
>>>> >>
>>>> >> Michael
>>>> >>
>>>> >> [1] http://www.yesodweb.com/blog/2011/4/announcing-yesod-0-8
>>>> >>
>>>> >> _______________________________________________
>>>> >> web-devel mailing list
>>>> >> web-devel at haskell.org
>>>> >> http://www.haskell.org/mailman/listinfo/web-devel
>>>> >
>>>> >
>>>> > _______________________________________________
>>>> > web-devel mailing list
>>>> > web-devel at haskell.org
>>>> > http://www.haskell.org/mailman/listinfo/web-devel
>>>> >
>>>> >
>>>>
>>>>
>>>>
>>>> --
>>>> -barkmadley
>>>> sent from an internet enabled device
>>>>
>>>
>>>
>>> _______________________________________________
>>> web-devel mailing list
>>> web-devel at haskell.org
>>> http://www.haskell.org/mailman/listinfo/web-devel
>>>
>>>
>>
>

--0016e6d27485d815a204a4a8b57c
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

<div>Hi Justin,</div><div><br></div><div>From what I can tell, the form/vie=
w model is roughly the same as building up an applicative form. If you buil=
d a custom form, you have to declare a field both in your form/view model a=
nd in your view, which is the kind of insecure duplication we would like to=
 avoid when possible.</div>

<div><br></div>You can already create custom form layouts with the monadic =
form creator. Honestly I haven&#39;t used the new version at all or the old=
 version for anything that needs validation, so I am not sure if you can in=
sert error messages for fields.<div>

<br></div><div>Conditional validation logic is not really supported server =
side, let alone client side. There are already several javascript generator=
s for haskell. At any rate it is probably a similar task to implementing re=
flection, quotation, and javascript generation in F#, except that more need=
s to be done at compile time.</div>

<div><br></div><div>We value your opinions. These are definitely features t=
hat I have needed on occasion. We just have to think about how they best tr=
anslate to haskell, and how they fit into our limited time to make Yesod be=
tter.</div>

<div><br></div><div>Greg Weber<br><br><div class=3D"gmail_quote">On Wed, Ju=
n 1, 2011 at 8:26 AM, Justin Greene <span dir=3D"ltr">&lt;<a href=3D"mailto=
:justin.j.greene at gmail.com">justin.j.greene at gmail.com</a>&gt;</span> wrote:=
<br>

<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex;">Hi Greg,<div><br></div><div><div class=3D"i=
m"><blockquote class=3D"gmail_quote" style=3D"margin-top:0px;margin-right:0=
px;margin-bottom:0px;margin-left:0.8ex;border-left-width:1px;border-left-co=
lor:rgb(204, 204, 204);border-left-style:solid;padding-left:1ex">


For custom form design, do you just want a different html structure (paragr=
aphs instead of table rows)?</blockquote><div><br></div></div><div>No, havi=
ng an auto generated structure will never be able to handle the various req=
uirements I get for forms. =A0Having a system that auto generates scaffoldi=
ng for you is a nice to have, having a system that only gives you auto gene=
rated forms is about the same as painting yourself into a corner.</div>


<div><br></div><div>For security in <a href=3D"http://asp.net" target=3D"_b=
lank">asp.net</a> mvc you would have a form model, or what is commonly refe=
rred to as a view model. =A0This model only has fields that you wish to be =
exposed. =A0On form submission you would then move the desired fields to yo=
ur domain/data model (this can be simplified by using a project like automa=
pper which uses reflection and configuration to copy fields). =A0The valida=
tion is also associated with the form/view model.</div>

<div class=3D"im">
<div><br></div><blockquote class=3D"gmail_quote" style=3D"margin-top:0px;ma=
rgin-right:0px;margin-bottom:0px;margin-left:0.8ex;border-left-width:1px;bo=
rder-left-color:rgb(204, 204, 204);border-left-style:solid;padding-left:1ex=
">


I didn&#39;t see a full controller example in your F# code- how do you secu=
rely update your model?</blockquote><div><br></div></div><div>The full subm=
it action sample is generally very small due to a lot of the plumbing of <a=
 href=3D"http://asp.net" target=3D"_blank">asp.net</a> mvc being hidden.</d=
iv>


<div><br></div><div>In F# it would look something like this.</div><div><br>=
</div><div>type MyController() =3D</div><div>=A0 =A0 inherit Controller()</=
div><div><br></div><div>=A0 =A0 member this.MySubmitAction(form:MyFormModel=
) =3D</div>


<div>=A0 =A0 =A0 =A0 if ModelState.IsValid =3D false then</div><div>=A0 =A0=
 =A0 =A0 =A0 =A0 base.View(&quot;MyFormView&quot;, form)</div><div>=A0 =A0 =
=A0 =A0 else</div><div>=A0 =A0 =A0 =A0 =A0 =A0 let domainModel =3D moveForm=
ModelToDomainModel form</div><div>=A0 =A0 =A0 =A0 =A0 =A0 save domainModel<=
/div>


<div>=A0 =A0 =A0 =A0 =A0 =A0 redirectToThankYouPage ()</div><div><br></div>=
<div>By the time you enter the above method you will already have your form=
 validated with the ModelState being populated with your validation errors.=
</div><div>


<br></div><div>I don&#39;t really believe that a lot of this is transferabl=
e to haskell, due to the lack of reflection and general constraints that ha=
skell puts on you. =A0I&#39;ve theorized about how I would go about creatin=
g much the same thing in haskell, but to get the javascript conversion you&=
#39;d have to write a template haskell -&gt; javascript converter (which wo=
uld probably be quite a bit of effort). =A0For custom layout you&#39;d prob=
ably also have to use template haskell to specify where you want form field=
s to render.</div>


<div><br></div><div>Anyway, these are obviously just my opinions and you ca=
n take them or leave them. =A0I&#39;d really love to be able to use yesod a=
nd haskell for the type of work I do, but I can&#39;t see doing so until it=
 has what i consider a robust forms solution that doesn&#39;t add a lot of =
friction to my development.</div>

<div><div></div><div class=3D"h5">
<br><div class=3D"gmail_quote">On Wed, Jun 1, 2011 at 9:58 AM, Greg Weber <=
span dir=3D"ltr">&lt;<a href=3D"mailto:greg at gregweber.info" target=3D"_blan=
k">greg at gregweber.info</a>&gt;</span> wrote:<br><blockquote class=3D"gmail_=
quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1=
ex">


<div>Hi Justin,</div><div><br></div><div>It is great to have feedback from =
an F# perspective.</div><div><br></div><div>For custom form design, do you =
just want a different html structure (paragraphs instead of table rows)? If=
 so, it is easy enough to create a new form renderer for a different struct=
ure. Easier css manipulation should help to design custom forms. It seems t=
hat the main problem would be if you want to insert some extra structure, l=
ike a paragraph, in between some form fields. You can build custom forms wi=
th the monadic form builder, but it doesn&#39;t handle error=A0propagation =
automatically. We should see how your example translates here.</div>




<div><br></div><div>As another example of validations, Rails supports compl=
ex validation logic by placing it entirely in the model instead of the form=
 (but it gets fed back to the form). There is at least one project now to e=
xtend that validation logic to the client side.</div>




<div><br></div><div>In Rails, like the F# example, it is easy to build cust=
om forms because they are placed in your view. However, this along with Rai=
ls mass attributes updates (assign every form field to the model instead of=
 listing out every attribute to assign) is a major cause of security proble=
ms- now you have to block a malicious user from submitting fields that you =
didn&#39;t want to expose in your form. By building the form outside of the=
 view, we automatically have a data structure that determines which fields =
can be assigned. I didn&#39;t see a full controller example in your F# code=
- how do you securely update your model?</div>




<div><br></div><div>Thanks,</div><div>Greg Weber</div><div><div></div><div>=
<div><br><div><div class=3D"gmail_quote">On Wed, Jun 1, 2011 at 6:57 AM, Ju=
stin Greene <span dir=3D"ltr">&lt;<a href=3D"mailto:justin.j.greene at gmail.c=
om" target=3D"_blank">justin.j.greene at gmail.com</a>&gt;</span> wrote:<br>




<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex"><div>The custom form design and variable len=
gth list stuff is default <a href=3D"http://asp.net" target=3D"_blank">asp.=
net</a> mvc.</div>




<div><br></div><div>The validation stuff I ended up writing myself using F#=
 quotations, it goes a couple steps farther than what I even mentioned as i=
t converts the F# to javascript so you get server side validation and clien=
t side validation for free. =A0Here&#39;s the github project:=A0<a href=3D"=
https://github.com/jgreene/FSharp.Javascript.Mvc" target=3D"_blank">https:/=
/github.com/jgreene/FSharp.Javascript.Mvc</a>=A0and you can read more about=
 it here:=A0<a href=3D"http://justsimplecode.com/" target=3D"_blank">http:/=
/justsimplecode.com/</a></div>





<div><br></div><div><a href=3D"https://github.com/jgreene/FSharp.Javascript=
.Mvc" target=3D"_blank"></a>There is not much documentation, and there is s=
ome complexity to setting up a framework to do something like this, but it&=
#39;s very doable.</div>




<div><div></div><div>
<div><br></div><div><br><br><div class=3D"gmail_quote">On Wed, Jun 1, 2011 =
at 8:44 AM, Mark Bradley <span dir=3D"ltr">&lt;<a href=3D"mailto:barkmadley=
@gmail.com" target=3D"_blank">barkmadley at gmail.com</a>&gt;</span> wrote:<br=
><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1=
px #ccc solid;padding-left:1ex">





<div>On Wed, Jun 1, 2011 at 11:32 PM, Justin Greene<br>
&lt;<a href=3D"mailto:justin.j.greene at gmail.com" target=3D"_blank">justin.j=
.greene at gmail.com</a>&gt; wrote:<br>
&gt;&gt; * Forms package: It&#39;s been rewritten, but hasn&#39;t really ha=
d much input<br>
&gt;&gt; from others. Now&#39;s the time to speak up if you have any opinio=
ns on<br>
&gt;&gt; it. The code is available on Hackage.<br>
&gt;<br>
&gt; List of things that should be inside a forms package in my opinion.<br=
>
&gt; Custom Design: Form layout should be simple to customize and not be ba=
sed<br>
&gt; around auto generating tables (if both are possible then of course the=
 later<br>
&gt; can be used).<br>
&gt; Variable length lists: It should be possible to add form elements on t=
he<br>
&gt; client side and bind them on the server side. =A0An example of this wo=
uld be a<br>
&gt; list of addresses. =A0A programmer should be able to add a new address=
 widget<br>
&gt; client side without problems when binding server side.<br>
&gt; Validation: =A0Complex validation scenarios should be simple and shoul=
d fit<br>
&gt; into the normal validation pipeline. =A0An example would be validating=
 that if<br>
&gt; a checkbox is selected then a textbox becomes required.<br>
&gt; All validation errors should display around the same time, e.g. if a t=
ype<br>
&gt; validator fires it should not prevent other validators from firing aft=
er it<br>
&gt; unless those validators depend upon that type data.<br>
&gt; These are just my thoughts based upon my experiences writing forms. =
=A0I can&#39;t<br>
&gt; really utilize any framework that doesn&#39;t implement these features=
 for the<br>
&gt; types of projects I do.<br>
&gt; If you need any more details/clarification I&#39;d be happy to help.<b=
r>
<br>
</div>out of curiosity, which frameworks have you worked with that have som=
e<br>
or all of these features (particularly the complicated validation)?<br>
<div><div></div><div><br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; On Mon, May 30, 2011 at 3:41 PM, Michael Snoyman &lt;<a href=3D"mailto=
:michael at snoyman.com" target=3D"_blank">michael at snoyman.com</a>&gt;<br>
&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Hi all,<br>
&gt;&gt;<br>
&gt;&gt; It&#39;s been about a month since the 0.8 release of Yesod. In the=
 release<br>
&gt;&gt; announcement[1], we laid out some goals. Let&#39;s take a chance t=
o<br>
&gt;&gt; analyze where we&#39;re at:<br>
&gt;&gt;<br>
&gt;&gt; * Documentation: Still improving as always. In particular, the new=
<br>
&gt;&gt; Yesod site is making it much easier for me to write new content (I=
<br>
&gt;&gt; have a few things on my local system that can finally go up).<br>
&gt;&gt;<br>
&gt;&gt; * Static file caching headers: Implemented by Greg Weber. We&#39;l=
l likely<br>
&gt;&gt; be making some API changes to handle embedded files, though that<b=
r>
&gt;&gt; discussion deserves its own blog post.<br>
&gt;&gt;<br>
&gt;&gt; * Other template types: For Hamlet 0.9, we&#39;re going to be spli=
tting<br>
&gt;&gt; Julius/Coffeescript into their own package, and juggling the type<=
br>
&gt;&gt; signature for Coffeescript a bit. At that point, it should be<br>
&gt;&gt; straightforward to embed Coffeescript directly into a Yesod app, j=
ust<br>
&gt;&gt; like Julius is today.<br>
&gt;&gt;<br>
&gt;&gt; * Something like require.js: This is something we haven&#39;t star=
ted on<br>
&gt;&gt; yet. I&#39;ll likely start looking into it this week. Additionally=
, I know<br>
&gt;&gt; that a lot of my sites (jQuery powered) have numerous onload calls=
 per<br>
&gt;&gt; page; I think we can try to make that more efficient as well. I wo=
uld<br>
&gt;&gt; especially like people&#39;s input on this point.<br>
&gt;&gt;<br>
&gt;&gt; * i18n: The solution is written, and I&#39;m using it in productio=
n. At<br>
&gt;&gt; this point, I&#39;d call it beta quality, and I&#39;d appreciate i=
nput.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; * Embedded objects in MongoDB: No work done yet.<br>
&gt;&gt;<br>
&gt;&gt; * Performance improvements: Nothing in particular. If you have any=
<br>
&gt;&gt; examples of Yesod performing badly, please let us know.<br>
&gt;&gt;<br>
&gt;&gt; The goal is for Yesod 0.9 to be feature complete, and for 1.0 to b=
e a<br>
&gt;&gt; fairly stable API. From the list above, my two priorities are bett=
er<br>
&gt;&gt; Javascript loading (require.js) and static file serving. However,<=
br>
&gt;&gt; there&#39;s one other major issue we need to address: the devel se=
rver.<br>
&gt;&gt; Unfortunately, it doesn&#39;t work very well at all right now. Tha=
nkfully,<br>
&gt;&gt; &quot;yesod build&quot; *does* work very well, and for my developm=
ent I&#39;ve<br>
&gt;&gt; fallen back to simply &quot;yesod build &amp;&amp; ./dist/build/my=
app/myapp&quot; on the<br>
&gt;&gt; command line. My guess is that we&#39;re 90% of the way there on &=
quot;yesod<br>
&gt;&gt; devel&quot;. This is a project that isn&#39;t tightly bound to the=
 rest of the<br>
&gt;&gt; API work, and would be very approachable for someone trying to get=
<br>
&gt;&gt; started on Yesod development. If you&#39;re interested in helping =
out<br>
&gt;&gt; here, please let me know.<br>
&gt;&gt;<br>
&gt;&gt; I have no specific timeframe in mind for Yesod 0.9. As it stands n=
ow,<br>
&gt;&gt; it looks like the 0.9 release will involve almost no API breakage,=
<br>
&gt;&gt; which is a very good sign. But if you have any ideas you&#39;d lik=
e to<br>
&gt;&gt; contribute, I&#39;d recommend getting them in in the next week or =
two.<br>
&gt;&gt;<br>
&gt;&gt; Michael<br>
&gt;&gt;<br>
&gt;&gt; [1] <a href=3D"http://www.yesodweb.com/blog/2011/4/announcing-yeso=
d-0-8" target=3D"_blank">http://www.yesodweb.com/blog/2011/4/announcing-yes=
od-0-8</a><br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; web-devel mailing list<br>
&gt;&gt; <a href=3D"mailto:web-devel at haskell.org" target=3D"_blank">web-dev=
el at haskell.org</a><br>
&gt;&gt; <a href=3D"http://www.haskell.org/mailman/listinfo/web-devel" targ=
et=3D"_blank">http://www.haskell.org/mailman/listinfo/web-devel</a><br>
&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; web-devel mailing list<br>
&gt; <a href=3D"mailto:web-devel at haskell.org" target=3D"_blank">web-devel at h=
askell.org</a><br>
&gt; <a href=3D"http://www.haskell.org/mailman/listinfo/web-devel" target=
=3D"_blank">http://www.haskell.org/mailman/listinfo/web-devel</a><br>
&gt;<br>
&gt;<br>
<br>
<br>
<br>
</div></div><font color=3D"#888888">--<br>
-barkmadley<br>
sent from an internet enabled device<br>
</font></blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
web-devel mailing list<br>
<a href=3D"mailto:web-devel at haskell.org" target=3D"_blank">web-devel at haskel=
l.org</a><br>
<a href=3D"http://www.haskell.org/mailman/listinfo/web-devel" target=3D"_bl=
ank">http://www.haskell.org/mailman/listinfo/web-devel</a><br>
<br></blockquote></div><br></div></div>
</div></div></blockquote></div><br></div></div></div>
</blockquote></div><br></div>

--0016e6d27485d815a204a4a8b57c--



More information about the web-devel mailing list