librelist archives

« back to archive

ShoesSpec

ShoesSpec

From:
ashbb
Date:
2012-05-21 @ 11:59
Hi all,

I've talked about ShoesSpec with Peter and Eric for a few days.

What is ShoesSpec? .... Yes, good question. I'd like to discuss about it in
this Shoes-ML. ;-)

At first, look at RubySpec : http://rubyspec.org/
It says:
- RubySpec is a project to write an executable specification for the Ruby
Programming Language.

So, I've imagined that:
- ShoeSpec is a project to write an executable specification for the Shoes
API.

I've no skill in RSpec and I've no experience in BDD/TDD so far.
So, I'm not sure what I can do. But I want ShoesSpec.

All thoughts are appreciated. Feel free post here. :)

ashbb

Re: [shoes] ShoesSpec

From:
Anuj Dutta
Date:
2012-05-21 @ 12:10
Hey ashbb,

ShoesSpec sounds like a really nice idea. I have been playing around with
RubySpec with an intention to add some missing Fiber documentation to it. I
can help out with rspec but I haven't looked at Shoes code in ages. The
last time I did anything with Shoes was a couple of years ago and I imagine
in that time the API and codebase has changed massively.

Anuj


On 21 May 2012 12:59, ashbb <ashbbb@gmail.com> wrote:

> Hi all,
>
> I've talked about ShoesSpec with Peter and Eric for a few days.
>
> What is ShoesSpec? .... Yes, good question. I'd like to discuss about it
> in this Shoes-ML. ;-)
>
> At first, look at RubySpec : http://rubyspec.org/
> It says:
> - RubySpec is a project to write an executable specification for the Ruby
> Programming Language.
>
> So, I've imagined that:
> - ShoeSpec is a project to write an executable specification for the Shoes
> API.
>
> I've no skill in RSpec and I've no experience in BDD/TDD so far.
> So, I'm not sure what I can do. But I want ShoesSpec.
>
> All thoughts are appreciated. Feel free post here. :)
>
> ashbb




-- 
Anuj DUTTA

Re: [shoes] ShoesSpec

From:
J. Kaiden
Date:
2012-05-21 @ 12:33
hi ashbb,

  this seems like a great idea for coordinating all the work being done on
the various colors of shoes...

  i'll have to look at it more and see if i can make some sense of it :P

  - j



On Mon, May 21, 2012 at 12:10 PM, Anuj Dutta <dutta.anuj@googlemail.com>wrote:

> Hey ashbb,
>
> ShoesSpec sounds like a really nice idea. I have been playing around with
> RubySpec with an intention to add some missing Fiber documentation to it. I
> can help out with rspec but I haven't looked at Shoes code in ages. The
> last time I did anything with Shoes was a couple of years ago and I imagine
> in that time the API and codebase has changed massively.
>
> Anuj
>
>
> On 21 May 2012 12:59, ashbb <ashbbb@gmail.com> wrote:
>
>> Hi all,
>>
>> I've talked about ShoesSpec with Peter and Eric for a few days.
>>
>> What is ShoesSpec? .... Yes, good question. I'd like to discuss about it
>> in this Shoes-ML. ;-)
>>
>> At first, look at RubySpec : http://rubyspec.org/
>> It says:
>> - RubySpec is a project to write an executable specification for the Ruby
>> Programming Language.
>>
>> So, I've imagined that:
>> - ShoeSpec is a project to write an executable specification for the
>> Shoes API.
>>
>> I've no skill in RSpec and I've no experience in BDD/TDD so far.
>> So, I'm not sure what I can do. But I want ShoesSpec.
>>
>> All thoughts are appreciated. Feel free post here. :)
>>
>> ashbb
>
>
>
>
> --
> Anuj DUTTA
>

Re: [shoes] ShoesSpec

From:
Jesse Cooke
Date:
2012-05-21 @ 14:17
ShoesSpec sounds like a great idea. I'd encourage us to take a look at
using MSpec, since it's so much simpler than RSpec & runs on all
implementations. RSpec should, but it's a moving target, and I don't think
MSpec is going to change much.

On Mon, May 21, 2012 at 5:33 AM, J. Kaiden <jakekaiden@gmail.com> wrote:

> hi ashbb,
>
>   this seems like a great idea for coordinating all the work being done on
> the various colors of shoes...
>
>   i'll have to look at it more and see if i can make some sense of it :P
>
>   - j
>
>
>
> On Mon, May 21, 2012 at 12:10 PM, Anuj Dutta <dutta.anuj@googlemail.com>wrote:
>
>> Hey ashbb,
>>
>> ShoesSpec sounds like a really nice idea. I have been playing around with
>> RubySpec with an intention to add some missing Fiber documentation to it. I
>> can help out with rspec but I haven't looked at Shoes code in ages. The
>> last time I did anything with Shoes was a couple of years ago and I imagine
>> in that time the API and codebase has changed massively.
>>
>> Anuj
>>
>>
>> On 21 May 2012 12:59, ashbb <ashbbb@gmail.com> wrote:
>>
>>> Hi all,
>>>
>>> I've talked about ShoesSpec with Peter and Eric for a few days.
>>>
>>> What is ShoesSpec? .... Yes, good question. I'd like to discuss about it
>>> in this Shoes-ML. ;-)
>>>
>>> At first, look at RubySpec : http://rubyspec.org/
>>> It says:
>>> - RubySpec is a project to write an executable specification for the
>>> Ruby Programming Language.
>>>
>>> So, I've imagined that:
>>> - ShoeSpec is a project to write an executable specification for the
>>> Shoes API.
>>>
>>> I've no skill in RSpec and I've no experience in BDD/TDD so far.
>>> So, I'm not sure what I can do. But I want ShoesSpec.
>>>
>>> All thoughts are appreciated. Feel free post here. :)
>>>
>>> ashbb
>>
>>
>>
>>
>> --
>> Anuj DUTTA
>>
>
>

Re: [shoes] ShoesSpec

From:
Eric Watson
Date:
2012-05-21 @ 14:23
On May 21, 2012, at 9:17 AM, Jesse Cooke wrote:

> ShoesSpec sounds like a great idea. I'd encourage us to take a look at 
using MSpec, since it's so much simpler than RSpec & runs on all 
implementations.

I haven't used MSpec before, but I agree, we should take a look at it, 
also since it's designed especially for running a specification against 
multiple implementations. It shouldn't be hard to modify the existing 
specs for MSpec.

Re: [shoes] ShoesSpec

From:
Steve Klabnik
Date:
2012-05-21 @ 15:09
MSpec is awesome, actually. I'm not sure why I didn't think about
using it earlier.

Re: [shoes] ShoesSpec

From:
Peter Fitzgibbons
Date:
2012-05-21 @ 15:56
HI Folks.
My personal belief is that BrownShoes represents a platform-split from
RedShoes, and JRuby is specifically the target VM.
MSpec is targeted toward unifying specs around the multi-ruby
implementations, including IronRuby, Rubinius, etc... which is beyond the
target of our implementation... JRuby-only.

I think MSpec is a good reference to remember for us if we get
into-the-weeds of cross-platform issues later on... though JRuby and the
JVM is exactly the reason why we're targeting JRuby... the helpful
community of Java has solved these cross-platform issues for us!

Your thoughts?
Peter Fitzgibbons
(847) 859-9550
Email: peter.fitzgibbons@gmail.com
IM GTalk: peter.fitzgibbons
IM AOL: peter.fitzgibbons@gmail.com


On Mon, May 21, 2012 at 10:09 AM, Steve Klabnik <steve@steveklabnik.com>wrote:

> MSpec is awesome, actually. I'm not sure why I didn't think about
> using it earlier.
>

Re: [shoes] ShoesSpec

From:
Eric Watson
Date:
2012-05-21 @ 18:51
On May 21, 2012, at 10:56 AM, Peter Fitzgibbons wrote:

> My personal belief is that BrownShoes represents a platform-split from 
RedShoes, and JRuby is specifically the target VM.

Can you help me to understand how this statement relates to these goals 
from another message:

> Generally, BrownShoes has these goals:
> 	• Implement a specification for the Shoes API.  This is beyond the 
samples/ folder, and is intended to provide to us a regression suite for 
the basis of future bug-fixing and API mods.  The spec will also allow the
proper implementation of the "colors"
> 	• Implement a "pluggable framework" in order to allow the development 
of "colored shoes".  The intent is to allow alternate "backends' (GUI 
drivers) to implement shoes, while all operating behind the canonical 
Shoes API.


Above, I think I hear you saying that we are moving Shoes to JRuby 
exclusively. While I agree that JRuby is our most promising target VM from
the GUI implementation perspective, I haven't run into anything yet in 
BrownShoes that requires the Shoes DSL to run in JRuby, and I don't see 
what advantage we would get by baking that requirement into the Shoes DSL.

In my opinion, a ShoesSpec should *not* target the JVM. If there is desire
for a ShoesSpec from folks working on other implementations (ashbb comes 
to mind), I would support extracting the Shoes-level 
(non-platform/framework-specific) specs from brown_shoes into a ShoesSpec 
project that various Shoes implementations (thinking green and purple 
here) can include as a submodule.

Large questions of timing and process remain.

Thoughts?

Eric

Re: [shoes] ShoesSpec

From:
Peter Fitzgibbons
Date:
2012-05-21 @ 19:24
On Mon, May 21, 2012 at 1:51 PM, Eric Watson <wasnotrice@gmail.com> wrote:

> On May 21, 2012, at 10:56 AM, Peter Fitzgibbons wrote:
> > Generally, BrownShoes has these goals:
> >       • Implement a specification for the Shoes API.  This is beyond the
> samples/ folder, and is intended to provide to us a regression suite for
> the basis of future bug-fixing and API mods.  The spec will also allow the
> proper implementation of the "colors"
> >       • Implement a "pluggable framework" in order to allow the
> development of "colored shoes".  The intent is to allow alternate
> "backends' (GUI drivers) to implement shoes, while all operating behind the
> canonical Shoes API.
>
>
> Above, I think I hear you saying that we are moving Shoes to JRuby
> exclusively. While I agree that JRuby is our most promising target VM from
> the GUI implementation perspective, I haven't run into anything yet in
> BrownShoes that requires the Shoes DSL to run in JRuby, and I don't see
> what advantage we would get by baking that requirement into the Shoes DSL.
>
> In my opinion, a ShoesSpec should *not* target the JVM. If there is desire
> for a ShoesSpec from folks working on other implementations (ashbb comes to
> mind), I would support extracting the Shoes-level
> (non-platform/framework-specific) specs from brown_shoes into a ShoesSpec
> project that various Shoes implementations (thinking green and purple here)
> can include as a submodule.
>
> Yes, I see your point.  And then I also now understand how the ShoesSpec
should be run on MSpec so as to allow the shoes-spec to run on top of *any*
ruby runtime.

OTOH, we have a very small team, a very large task, and an actively moving
target (os-platform, ruby versions).

An educated decision to "pick" a runtime is at hand.  MRI has become a
liability w.r.t cross-platform build/install for Shoes.   JRuby so far
represents the "best bet" for achieving the requirements around
cross-platform build/install.

I agree that sometime in the unforseen future, some Ruby-version may become
an even-better back-end, at which point we'll be pleased with the decision
to have ShoesSpec on MSpec.

 Large questions of timing and process remain.
>
> Yes.  Timing and process.   Must... Read... MSpec ... Now...


> Thoughts?
>
> Eric


Peter Fitzgibbons
(847) 859-9550
Email: peter.fitzgibbons@gmail.com
IM GTalk: peter.fitzgibbons
IM AOL: peter.fitzgibbons@gmail.com

Re: [shoes] ShoesSpec

From:
Jesse Cooke
Date:
2012-05-21 @ 17:36
On Mon, May 21, 2012 at 8:56 AM, Peter Fitzgibbons <
peter.fitzgibbons@gmail.com> wrote:

> HI Folks.
> My personal belief is that BrownShoes represents a platform-split from
> RedShoes, and JRuby is specifically the target VM.
> MSpec is targeted toward unifying specs around the multi-ruby
> implementations, including IronRuby, Rubinius, etc... which is beyond the
> target of our implementation... JRuby-only.
>
> I think MSpec is a good reference to remember for us if we get
> into-the-weeds of cross-platform issues later on... though JRuby and the
> JVM is exactly the reason why we're targeting JRuby... the helpful
> community of Java has solved these cross-platform issues for us!
>
> Your thoughts?
>
Can we think of BrownShoes as a superset of RedShoes, in which case it
should at least pass all RedShoes specs unless denoted, which MSpec
supports with Guards[1]

I think it's fine for BrownShoes to target JRuby/JVM but it should
probably* still conform to the ShoesSpec, right?

* maybe not ;)

[1] http://rubyspec.org/guards/

> Peter Fitzgibbons
> (847) 859-9550
> Email: peter.fitzgibbons@gmail.com
> IM GTalk: peter.fitzgibbons
> IM AOL: peter.fitzgibbons@gmail.com
>
>
>
> On Mon, May 21, 2012 at 10:09 AM, Steve Klabnik <steve@steveklabnik.com>wrote:
>
>> MSpec is awesome, actually. I'm not sure why I didn't think about
>> using it earlier.
>>
>
>

Re: [shoes] ShoesSpec

From:
Peter Fitzgibbons
Date:
2012-05-21 @ 17:58
There is no Spec for Red Shoes.  Thus one of the primary directives for
BrownShoes is "build a Shoes Spec" of some sort.

RedShoes will not (and in some functions *cannot*) accomplish the eventual
ShoesSpec that will result from the BrownShoes project.

PS: One of the issues with RedShoes right now is cross-platform
build/installation.  Any Specs surrounding installation (.shy build) would
almost certainly fail in RedShoes.

Let's leave the MSpec integration for the time when it actually becomes a
problem.    "Avoid Premature Optimization"

Peter Fitzgibbons
(847) 859-9550
Email: peter.fitzgibbons@gmail.com
IM GTalk: peter.fitzgibbons
IM AOL: peter.fitzgibbons@gmail.com


On Mon, May 21, 2012 at 12:36 PM, Jesse Cooke <jesse@jc00ke.com> wrote:

> On Mon, May 21, 2012 at 8:56 AM, Peter Fitzgibbons <
> peter.fitzgibbons@gmail.com> wrote:
>
>> HI Folks.
>> My personal belief is that BrownShoes represents a platform-split from
>> RedShoes, and JRuby is specifically the target VM.
>> MSpec is targeted toward unifying specs around the multi-ruby
>> implementations, including IronRuby, Rubinius, etc... which is beyond the
>> target of our implementation... JRuby-only.
>>
>> I think MSpec is a good reference to remember for us if we get
>> into-the-weeds of cross-platform issues later on... though JRuby and the
>> JVM is exactly the reason why we're targeting JRuby... the helpful
>> community of Java has solved these cross-platform issues for us!
>>
>> Your thoughts?
>>
> Can we think of BrownShoes as a superset of RedShoes, in which case it
> should at least pass all RedShoes specs unless denoted, which MSpec
> supports with Guards[1]
>
> I think it's fine for BrownShoes to target JRuby/JVM but it should
> probably* still conform to the ShoesSpec, right?
>
> * maybe not ;)
>
> [1] http://rubyspec.org/guards/
>
>> Peter Fitzgibbons
>> (847) 859-9550
>> Email: peter.fitzgibbons@gmail.com
>> IM GTalk: peter.fitzgibbons
>> IM AOL: peter.fitzgibbons@gmail.com
>>
>>
>>
>> On Mon, May 21, 2012 at 10:09 AM, Steve Klabnik <steve@steveklabnik.com>wrote:
>>
>>> MSpec is awesome, actually. I'm not sure why I didn't think about
>>> using it earlier.
>>>
>>
>>
>

Re: [shoes] ShoesSpec

From:
Eric Watson
Date:
2012-05-21 @ 18:54
On May 21, 2012, at 12:58 PM, Peter Fitzgibbons wrote:

> There is no Spec for Red Shoes.

And the main problem with writing specs for Red Shoes is that with Red 
Shoes, Ruby runs inside of Shoes, not Shoes inside of Ruby. There's not a 
good way to test Shoes from the outside, because Shoes *is* the outside.

Re: [shoes] ShoesSpec

From:
Peter Fitzgibbons
Date:
2012-05-21 @ 19:30
>
>
>
> And the main problem with writing specs for Red Shoes is that with Red
> Shoes, Ruby runs inside of Shoes, not Shoes inside of Ruby. There's not a
> good way to test Shoes from the outside, because Shoes *is* the outside.
>

Yes,

... => shoes => ruby => shoes => ruby => ...

In my mind, the Framework construction for shoes removes the cyclic nature
of the dependencies :

Shoes requires Ruby
Shoes "shy" requires Ruby

The "Installer" needs to intelligently understand the requirement hierarchy
and figure out how to install dependencies.  This was the subject of a poll
earlier this year.
We need further work on determining the actual requirements,
command-arguments, expected-output for build/install for :

   - Shoes application (.exe, .app/dmg, .sh)
   - Shoes Apps: "shy" and "rb"
   - Browser-aware execution of Shoes Apps

Thoughts?
Peter Fitzgibbons
(847) 859-9550
Email: peter.fitzgibbons@gmail.com
IM GTalk: peter.fitzgibbons
IM AOL: peter.fitzgibbons@gmail.com

Re: [shoes] ShoesSpec

From:
Steve Klabnik
Date:
2012-05-22 @ 01:52
Hey all,

So, as you can tell, I've been a bit absent for a while. Frankly, I'm
burned out on Shoes. I freaking love it, but Red Shoes is just too
frustrating for me. I admit defeat over the build system. This bums me
out in like a zillion different ways, which means I avoid it, which
means I don't get much work done. It's a pretty vicious cycle. And
since Shoes is still pretty broken, I feel like I can't improve
Hackety, either, which is its own ball of wax. And so I avoid the
stress by avoiding it, but at some point, that will boil over...

However, I still read this list with great enthusiasm and vigor. I'm
excited to see work still being done on various Shoes-es. Even the
ones in Javascript. ;)

I do think Brown Shoes has promise to solve all of the problems Red
Shoes has, but really, I'm taking a huge wait-and-see attitude with
all of it, in general. I don't care what Shoes works, I just want a
Shoes to work so that I can feel good about it again.

So one more complicating factor is that I talked to Aaron Patterson
and Yehuda Katz at RailsConf, and when I told them we were focusing on
JRuby for Shoes for a while, they got pretty bummed. I guess the
Tokaido project will be basically doing what Shoes has been doing all
along: a custom Ruby, statically compiled and sandboxed. I gave Yehuda
Shoes' deps list, and he said it might be workable to take it and get
those built in. If that's true, classic Red Shoes may have some legs,
even though I've given up for now. We'll see.

I spent this weekend teaching a group of kids Ruby. I'll be doing the
same next week. They had all used Hackety before, I was doing this
lesson with plain old Ruby, and they all said "We loved Hackety, but
it crashes too much, so I couldn't use it. :( " This breaks my heart
for several reasons, but also reminds me why I've put some much time
into this over the years....


anyway.... Shoes on!

Re: [shoes] ShoesSpec

From:
Peter Fitzgibbons
Date:
2012-05-22 @ 02:34
On Mon, May 21, 2012 at 8:52 PM, Steve Klabnik <steve@steveklabnik.com>wrote:

>
> So one more complicating factor is that I talked to Aaron Patterson
> and Yehuda Katz at RailsConf, and when I told them we were focusing on
> JRuby for Shoes for a while, they got pretty bummed. I guess the
> Tokaido project will be basically doing what Shoes has been doing all
> along: a custom Ruby, statically compiled and sandboxed. I gave Yehuda
> Shoes' deps list, and he said it might be workable to take it and get
> those built in. If that's true, classic Red Shoes may have some legs,
> even though I've given up for now. We'll see.
>
> So, I looked over Tokadido quickly... that project is far far reaching!
 That goes much further then Shoes did, doing precompilation of gems.  Also
note that as far as I saw, the only target os is OSX.  A wait and see
approach is I think a healthy one.

Peter Fitzgibbons
(847) 859-9550
Email: peter.fitzgibbons@gmail.com
IM GTalk: peter.fitzgibbons
IM AOL: peter.fitzgibbons@gmail.com

Re: [shoes] ShoesSpec

From:
Eric Watson
Date:
2012-05-22 @ 05:07
On May 21, 2012, at 8:52 PM, Steve Klabnik wrote:

> So, as you can tell, I've been a bit absent for a while. Frankly, I'm
> burned out on Shoes. 

I totally understand that feeling. Especially working on Red Shoes. But 
one day, or over a couple of days, when the time is right, just try TDDing
something in Brown Shoes. It feels SO GOOD to write a Shoes test and make 
it pass. It's kind of cathartic after agonizing over Red Shoes, where (for
me) it's hard to tell whether you're really fixing the bug, or just 
playing whac-a-mole with it.

> I spent this weekend teaching a group of kids Ruby. I'll be doing the
> same next week. They had all used Hackety before, I was doing this
> lesson with plain old Ruby, and they all said "We loved Hackety, but
> it crashes too much, so I couldn't use it. :( " This breaks my heart
> for several reasons, but also reminds me why I've put some much time
> into this over the years....

I taught a class with Hackety this weekend (awesome), and had some great 
conversation with Ron Evans (of KidsRuby[1]). They're totally rewriting 
KidsRuby for the next version, because QT is dragging it down. It's kind 
of similar to the problems we have with Shoes. And that's a project that 
only started because of issues with Shoes. But it's a good example of how 
breaking with the past can create space for new ideas.

You are right to come back to "why" you have put time into this. That is 
*much* more important than the rest.

Eric


[1] http://kidsruby.com/

Re: [shoes] ShoesSpec

From:
Cecil Coupe
Date:
2012-05-22 @ 04:57
On Mon, 2012-05-21 at 21:52 -0400, Steve Klabnik wrote:
> Hey all,
> 
> So, as you can tell, I've been a bit absent for a while. Frankly, I'm
> burned out on Shoes. I freaking love it, but Red Shoes is just too
> frustrating for me. I admit defeat over the build system. This bums me
> out in like a zillion different ways, which means I avoid it, which
> means I don't get much work done. It's a pretty vicious cycle. And
> since Shoes is still pretty broken, I feel like I can't improve
> Hackety, either, which is its own ball of wax. And so I avoid the
> stress by avoiding it, but at some point, that will boil over...

The problem is folks think of Red Shoes as Ruby plus some gui stuff and
some scary C stuff they can ignore. They want to fix it with Ruby code &
practices and make it more Ruby like.  Understandable, but fatally
flawed for Red Shoes.

Red Shoes is a cross platform C program. Not A Ruby platform. You don't
fix it with Ruby and rake and specs and gem bundler shiny add ons. You
fix it the C way: rolling up the sleeves and digging into mingw, obj-c,
gtk, gcc, extconf, autoconf, make and other obscure things people don't
know much about these days. 

If you are from the C world view then Red Shoes and its
build/install/packaging system is freaking awesome. It's also neglected.
Very neglected. It suffers from I would call, "Ruby Solves Everything"
blindness. As I said before, it's understandable. I'm not throwing
stones at green/purple/brown Shoes - they keep most of the vision alive
and that's good. Like Steve, I too will wait to see if the rest of the
vision reappears in the new multicolored Shoes. It could happen. 

Has Red Shoes 3.2 been released yet?  

Regards,
  Cecil


Re: [shoes] ShoesSpec

From:
Eric Watson
Date:
2012-05-22 @ 05:24
On May 21, 2012, at 11:57 PM, Cecil Coupe wrote:

> Red Shoes is a cross platform C program. Not A Ruby platform. You don't
> fix it with Ruby and rake and specs and gem bundler shiny add ons. You
> fix it the C way: rolling up the sleeves and digging into mingw, obj-c,
> gtk, gcc, extconf, autoconf, make and other obscure things people don't
> know much about these days. 

Great point, nicely put. For me, it's the lack of tests that makes it 
difficult to work with Red Shoes. To some degree I think that's a fair 
thing to say. But I can also admit that it's also just the fact that I am 
not very comfortable with C, so I want to lean on something that assures 
me, "nope, you didn't break anything." At this point, I am more compelled 
by writing a Ruby version of Shoes than figuring out how to write C tests 
against the Red Shoes code. Although that would be a *great* way to learn 
the code...

> If you are from the C world view then Red Shoes and its
> build/install/packaging system is freaking awesome. 

That system is freaking awesome whether you are coming from C or not! And 
it is neglected. But also, it is fragile. And part of what makes it so 
awesome *makes* it fragile. It's the "holy shit I can't believe that 
actually works" factor.

Eric

Re: [shoes] ShoesSpec

From:
Cecil Coupe
Date:
2012-05-22 @ 06:31
On Tue, 2012-05-22 at 00:24 -0500, Eric Watson wrote:
> On May 21, 2012, at 11:57 PM, Cecil Coupe wrote:
> 
> > Red Shoes is a cross platform C program. Not A Ruby platform. You
> don't > fix it with Ruby and rake and specs and gem bundler shiny add
> ons. You > fix it the C way: rolling up the sleeves and digging into
> mingw, obj-c, > gtk, gcc, extconf, autoconf, make and other obscure
> things people don't > know much about these days. 
> 
> Great point, nicely put. For me, it's the lack of tests that makes it
> difficult to work with Red Shoes. To some degree I think that's a fair
> thing to say. But I can also admit that it's also just the fact that I
> am not very comfortable with C, so I want to lean on something that
> assures me, "nope, you didn't break anything." At this point, I am more
> compelled by writing a Ruby version of Shoes than figuring out how to
> write C tests against the Red Shoes code. Although that would be a
> *great* way to learn the code...

Understandable ;^) Testing across 3 Gui's is a pain. Knowing 3 build
environments (4+ if you cross compile) is a skill _why had. The rest of
us, not so much.
> 
> > If you are from the C world view then Red Shoes and its >
> build/install/packaging system is freaking awesome. 
> 
> That system is freaking awesome whether you are coming from C or not!
> And it is neglected. But also, it is fragile. And part of what makes it
> so awesome *makes* it fragile. It's the "holy shit I can't believe that
> actually works" factor.

It's fragile because there is no one willing to do the heavy lifting in
C/Obj-C for OSX or Windows.  The circular dependencies don't really
exist but it does take a whole lot of thinking (how does that work?) and
code reading.  Hint: the freaking website used by the installer or
packaged scripts is uber important. Unravel the code from there. _why
knew clouds before clouds and obsessive testing existed in the
politically correct Ruby community.

Just one opinion.
--Cecil

Re: [shoes] ShoesSpec

From:
ashbb
Date:
2012-05-22 @ 12:43
Hi all,

Thank you for the lively discussion. :)
I guess that this concept is accepted basically:
- ShoesSpec is a project to write an executable specification for the Shoes
API.

Okay, let's take one step further!
I'd like to suggest Eric's idea:
- Open a new ShoesSpec project.
- Extract the Shoes-level (non-platform/framework-specific) specs from
Brown Shoes project into ShoesSpec project.
- Try out the specs to current Shoes implementations, i.e. red, green,
brown, purple, etc.
- Discuss about each specs you creat in this ML.

It's possible to open a new "shoes/ShoesSpec" repo on github from the
start. But IMHO, in order to take trial and error for a while, why not
start to open "wasnotrice/ShoesSpec" repo and folk it into each one's own
repo? ;-)

ashbb

Re: [shoes] ShoesSpec

From:
Peter Fitzgibbons
Date:
2012-05-22 @ 13:18
On Tue, May 22, 2012 at 7:43 AM, ashbb <ashbbb@gmail.com> wrote:

>
> - Extract the Shoes-level (non-platform/framework-specific) specs from
> Brown Shoes project into ShoesSpec project.
> - Try out the specs to current Shoes implementations, i.e. red, green,
> brown, purple, etc.
>

This gets into the weeds of what I was describing a while back in this
thread.  RedShoes is primarily untestable, because in order to test it,
you'll need to suss out a way flip the InversionOfControl on the Ruby-C,
especially around the window and canvas control.  One way or another, it
will require hooking into the OS-level windowing libs, which of course are
a different compilation on each
platform.  InversionOfControl/DependencyInjection is one of the motivations
for the creation of languages such as Java and the dynamics like Perl
-- IoC/DI is a Royal PITA without some sort of language-level
introspection/reflection capability.

I'm trying not to sound like a curmudgeon... our time is really better
spent getting ONE well-tested, well-documented Shoes-Framework running
near-100%, and after that coming around to the colored-shoes.  I am not
demanding that Shoesers just stop what they're doing.  Of course those of
you working on the various colors in independent implementations advance
shoes in other ways -- domain-specific GUI lib knowledge, understandings of
the low-level Shoes-Ruby-C -- that work will help us always.

Peter Fitzgibbons
(847) 859-9550
Email: peter.fitzgibbons@gmail.com
IM GTalk: peter.fitzgibbons
IM AOL: peter.fitzgibbons@gmail.com

Re: [shoes] ShoesSpec

From:
Steve Klabnik
Date:
2012-05-22 @ 13:36
> thread.  RedShoes is primarily untestable, because in order to test it,
> you'll need to suss out a way flip the InversionOfControl on the Ruby-C,
> especially around the window and canvas control.

You could compile each of the files separately into a lib, and link to
them, and unit-test the functions.

In theory. ;)

> I'm trying not to sound like a curmudgeon... our time is really better spent
> getting ONE well-tested, well-documented Shoes-Framework running near-100%,
> and after that coming around to the colored-shoes.

Agreed 100%, and this is basically my plan with my personal
contributions to Red.

Re: [shoes] ShoesSpec

From:
ashbb
Date:
2012-05-22 @ 13:58
Hi Peter,

> our time is really better spent getting ONE well-tested, well-documented
> Shoes-Framework running near-100%
Aha.
Okay, but what is the ONE? It is the BrownShoes/SWT?

ashbb

Re: [shoes] ShoesSpec

From:
Peter Fitzgibbons
Date:
2012-05-22 @ 14:48
Yes, BrownShoes/SWT

This is *not *a Highlander episode... There could be more than One...
eventually.

Let's strive to get some Shoes able to walk far enough to support
HacketyHack, which will scratch one of Steve's itches.

;)

Peter Fitzgibbons
(847) 859-9550
Email: peter.fitzgibbons@gmail.com
IM GTalk: peter.fitzgibbons
IM AOL: peter.fitzgibbons@gmail.com


On Tue, May 22, 2012 at 8:58 AM, ashbb <ashbbb@gmail.com> wrote:

> Hi Peter,
>
>
> > our time is really better spent getting ONE well-tested, well-documented
> > Shoes-Framework running near-100%
> Aha.
> Okay, but what is the ONE? It is the BrownShoes/SWT?
>
> ashbb
>

Re: [shoes] ShoesSpec

From:
Jesse Cooke
Date:
2012-05-21 @ 18:16
On Mon, May 21, 2012 at 10:58 AM, Peter Fitzgibbons <
peter.fitzgibbons@gmail.com> wrote:

> There is no Spec for Red Shoes.  Thus one of the primary directives for
> BrownShoes is "build a Shoes Spec" of some sort.

I'm new to Shoes, so thanks for clarifying some of my confusion. Is there a
page somewhere that explains all these different shoes? I thought I saw one
once but can't seem to find it again.

>
> RedShoes will not (and in some functions *cannot*) accomplish the eventual
> ShoesSpec that will result from the BrownShoes project.
>
Yeah, that's fine, and that's what Guards are for. We see that in JRuby
(Kernel.fork) and Rubinius ($SAFE levels)

>
> PS: One of the issues with RedShoes right now is cross-platform
> build/installation.  Any Specs surrounding installation (.shy build) would
> almost certainly fail in RedShoes.
>
> Let's leave the MSpec integration for the time when it actually becomes a
> problem.    "Avoid Premature Optimization"
>
Sounds good to me. Like Rubinius drove RubySpec, it's fine for BrownShoes
to drive ShoesSpec, but if it's done in a separate project like ShoesSpec,
then I'd suggest using MSpec over RSpec, that's all. I'm never typing *Spec
again! ;)

>
> Peter Fitzgibbons
> (847) 859-9550
> Email: peter.fitzgibbons@gmail.com
> IM GTalk: peter.fitzgibbons
> IM AOL: peter.fitzgibbons@gmail.com
>
>
> On Mon, May 21, 2012 at 12:36 PM, Jesse Cooke <jesse@jc00ke.com> wrote:
>
>> On Mon, May 21, 2012 at 8:56 AM, Peter Fitzgibbons <
>> peter.fitzgibbons@gmail.com> wrote:
>>
>>> HI Folks.
>>> My personal belief is that BrownShoes represents a platform-split from
>>> RedShoes, and JRuby is specifically the target VM.
>>> MSpec is targeted toward unifying specs around the multi-ruby
>>> implementations, including IronRuby, Rubinius, etc... which is beyond the
>>> target of our implementation... JRuby-only.
>>>
>>> I think MSpec is a good reference to remember for us if we get
>>> into-the-weeds of cross-platform issues later on... though JRuby and the
>>> JVM is exactly the reason why we're targeting JRuby... the helpful
>>> community of Java has solved these cross-platform issues for us!
>>>
>>> Your thoughts?
>>>
>> Can we think of BrownShoes as a superset of RedShoes, in which case it
>> should at least pass all RedShoes specs unless denoted, which MSpec
>> supports with Guards[1]
>>
>> I think it's fine for BrownShoes to target JRuby/JVM but it should
>> probably* still conform to the ShoesSpec, right?
>>
>> * maybe not ;)
>>
>> [1] http://rubyspec.org/guards/
>>
>>> Peter Fitzgibbons
>>> (847) 859-9550
>>> Email: peter.fitzgibbons@gmail.com
>>> IM GTalk: peter.fitzgibbons
>>> IM AOL: peter.fitzgibbons@gmail.com
>>>
>>>
>>>
>>> On Mon, May 21, 2012 at 10:09 AM, Steve Klabnik <steve@steveklabnik.com>wrote:
>>>
>>>> MSpec is awesome, actually. I'm not sure why I didn't think about
>>>> using it earlier.
>>>>
>>>
>>>
>>
>

Re: [shoes] ShoesSpec

From:
Peter Fitzgibbons
Date:
2012-05-21 @ 15:54
HI Folks,

Find the BrownShoes repo at git://github.com/shoes/brown_shoes.git
Be sure you read the *"develop" branch*
*
*
Steve and I started discussion around a TDD reimplementation of Shoes about
a 2.5 year ago, and revived the conversation about a year and a half ago.

Generally, BrownShoes has these goals:

   - Implement a specification for the Shoes API.  This is beyond the
   samples/ folder, and is intended to provide to us a regression suite for
   the basis of future bug-fixing and API mods.  The spec will also allow the
   proper implementation of the "colors"
   - Implement a "pluggable framework" in order to allow the development of
   "colored shoes".  The intent is to allow alternate "backends' (GUI drivers)
   to implement shoes, while all operating behind the canonical Shoes API.
   - Correct the current implementation issues with RedShoes.  As the OS's
   have advanced in age, the deployment model originally implemented for
   RedShoes has become a train-engine running on rusty rails (no pun or
   intended reference).  Some implementation of Shoes-on-JRuby is looking like
   a good alternative, as the Java community has handily covered the
   cross-platform implementation and installation issues.

At the moment, I am focusing the pure-JRuby implementation around JRuby/SWT
using the SWT gem.  Dan Lucraft's Redcar
IDE<https://github.com/danlucraft/redcar>has provided a very good
reference-implementation of app w/ SWT gem.

Colored-shoes reimplementation on BrownShoes (TyeDye on BrownShoes? :) are
encouraged... these may show us best-practices on the API/Framework
interface boundaries and how to divide functionality.

I personally encourage every one of you in the Shoes ML to *GET INVOLVED!!*
The two primary focus of your development contributions :

   - TDD - Write your code Test-First.  There are some
resources<http://testfirst.org/>
   on <http://www.extremeprogramming.org/rules/testfirst.html>

Test-First<https://sites.google.com/site/unclebobconsultingllc/home/articles/the-bowling-game-an-example-of-test-first-pair-programming>and
RSpec
   - Fix the API.  There are a few places in the API where usage is
   inconsistent between Shoes Widgets, or where there are edgecases that fail
   POLS(Principle of Least Surprise)... these are open for discussion and
   encouraged to be fixed.

I'm more and more excited about this project every week.

Shoes On!

Peter Fitzgibbons
(847) 859-9550
Email: peter.fitzgibbons@gmail.com
IM GTalk: peter.fitzgibbons
IM AOL: peter.fitzgibbons@gmail.com


On Mon, May 21, 2012 at 7:33 AM, J. Kaiden <jakekaiden@gmail.com> wrote:

> hi ashbb,
>
>   this seems like a great idea for coordinating all the work being done on
> the various colors of shoes...
>
>   i'll have to look at it more and see if i can make some sense of it :P
>
>   - j
>
>
>
> On Mon, May 21, 2012 at 12:10 PM, Anuj Dutta <dutta.anuj@googlemail.com>wrote:
>
>> Hey ashbb,
>>
>> ShoesSpec sounds like a really nice idea. I have been playing around with
>> RubySpec with an intention to add some missing Fiber documentation to it. I
>> can help out with rspec but I haven't looked at Shoes code in ages. The
>> last time I did anything with Shoes was a couple of years ago and I imagine
>> in that time the API and codebase has changed massively.
>>
>> Anuj
>>
>>
>> On 21 May 2012 12:59, ashbb <ashbbb@gmail.com> wrote:
>>
>>> Hi all,
>>>
>>> I've talked about ShoesSpec with Peter and Eric for a few days.
>>>
>>> What is ShoesSpec? .... Yes, good question. I'd like to discuss about it
>>> in this Shoes-ML. ;-)
>>>
>>> At first, look at RubySpec : http://rubyspec.org/
>>> It says:
>>> - RubySpec is a project to write an executable specification for the
>>> Ruby Programming Language.
>>>
>>> So, I've imagined that:
>>> - ShoeSpec is a project to write an executable specification for the
>>> Shoes API.
>>>
>>> I've no skill in RSpec and I've no experience in BDD/TDD so far.
>>> So, I'm not sure what I can do. But I want ShoesSpec.
>>>
>>> All thoughts are appreciated. Feel free post here. :)
>>>
>>> ashbb
>>
>>
>>
>>
>> --
>> Anuj DUTTA
>>
>
>

Re: [shoes] ShoesSpec

From:
Eric Watson
Date:
2012-05-21 @ 14:16
On May 21, 2012, at 6:59 AM, ashbb wrote:

> So, I've imagined that:
> - ShoeSpec is a project to write an executable specification for the Shoes API.

We really do need this for Shoes. Peter and I have been working on it 
already in the [brown_shoes repo][1]. So far, we have been using these 
specs to drive the development of brown_shoes, but the hope is that 
(eventually) they can be executed with any Shoes color. This could really 
help make sure that the colors are compatible with each other. They would 
have to become a separate project like RubySpec.

The important specs to look at are the ones in spec/shoes. These are the 
specs that should apply to any color of Shoes. Right now, we have more 
than 200! 

You can execute the specs yourself like this:

    rvm install jruby # or use your already-installed jruby
    gem install bundler
    git clone https://github.com/shoes/brown_shoes.git
    cd brown_shoes
    bundle install
    rake spec:shoes

Eric

[1] http://github.com/shoes/brown_shoes

P.S. ashbb, I'm sorry--I made a long post to the list about this last 
week, as I promised, or at least I tried to, but it doesn't seem like it 
went through :/

Re: [shoes] ShoesSpec

From:
Eric Watson
Date:
2012-05-21 @ 14:18
On May 21, 2012, at 9:16 AM, Eric Watson wrote:

> You can execute the specs yourself like this:
> 
>    rvm install jruby # or use your already-installed jruby
>    gem install bundler
>    git clone https://github.com/shoes/brown_shoes.git
>    cd brown_shoes
>    bundle install
>    rake spec:shoes

oops! I forgot one line. You'll want to be on the develop branch before 
you run the specs.

    git checkout develop



Eric