new article
[sdlgit/SDL-Site.git] / pages / blog-0010.html-inc
index 627ed29..fe4b8d4 100644 (file)
@@ -1,6 +1,6 @@
 <div class="blog">
 <h1 id="NAME">
-Why and How Frozen Bubble is going to CPAN
+The beginnings of modular design for SDL Perl
 </h1>
 <div class="CONTENT">
-<div style="text-align: right;"><i>A single drop,</i><br /></div><div style="text-align: right;"><i>causes the ocean to swell</i><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;">So 5 weeks ago, SDL Perl was broken. It had been for several years. After the last release SDL Perl works ... somewhat. The quick releases that you have seen have been work-arounds, fixes and refactoring. This is not bad for a few weeks of work but, there is a point where code smell and technical debt is too huge to fix with out redesigning. This is that point.<br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;">Since the redesigning will take time and effort it will be good to have a leg up. This leg up is Frozen Bubble 2.20. Frozen Bubble employs a lot of C and Perl hacks to cover up for SDL Perl's lacking. This will help in a sense fast forward the code status to 2008. Since Frozen Bubble is helping us out, we can go one step forward and help it out! <br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;">So Alias (Adam Kennedy) and I have started work on making Frozen Bubble CPAN accessible. Frozen Bubble is a well know game and making it cross-platform will bring lots of attention and hopefully contributions to SDL Perl.<br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;">In Alias's <a href="http://use.perl.org/%7EAlias/journal/39701">earlier post</a> about this he mentioned about making a splash and some other stuff. I will talk about how and where we will be accomplishing this task. <br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;">First we will be tracking Frozen Bubble on the new <a href="http://sdlperl.ath.cx/projects/SDLPerl/wiki">SDL Perl Trac website</a>. This site will be similar to Padre's Trac site. As a bonus for people looking to help out in SDL Perl I have separated tasks by <i>perceived </i>difficulty. This will help to breakdown harder task too.<br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;">For example for Frozen Bubble the two major bumps we have run into so far are:<br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;">Migrating the SDL Perl workarounds: <a href="http://sdlperl.ath.cx/projects/SDLPerl/ticket/3">Ticket #3</a><br /></div><div style="text-align: left;">Making the Build System Portable: <a href="http://sdlperl.ath.cx/projects/SDLPerl/ticket/7">Ticket #7</a><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;">The first one will be difficult as it involves XS. So I will break it down into easier tasks with specific instruction which can then hopefully be picked up by interested contributers. The second one there is sort of a forte of Adam so I will leave it up to him. This is the process I am proposing make hard tickets, break them down.<br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;">This will generate a lot of easy tickets that will hopefully be synchronized.&nbsp; If you are interested in this please give me a shout on #sdl irc.perl.org or the mailing list at sdl-devel@perl.org and I will get you registered.<br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;">--yapgh<br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3102167581424744259-1296050942449452224?l=yapgh.blogspot.com' alt='' /></div></div></div>
\ No newline at end of file
+<div style="text-align: right;"><i>“Do or do not... there is no try.”</i><br /></div><div style="text-align: right;"><i>--yoda </i><br /><br /></div><h1>The design before</h1><br />The bindings before were all in <a href="http://github.com/kthakore/SDL_perl/blob/master/src/SDL.xs">one huge XS file</a>. This was then exported into the SDL module. This means that the XS file has to handle with macros if any component (e.x SDL_Mixer) is not compiled. Moreover having ever binding in one XS file prevents use to treat C structs as object with only one point of free and malloc. This would be BEGIN and DESTROY in Perl. Also the monolithic design introduces a lot of bugs because we have to use free and malloc all over the place. Lastly SDL monolithic design has the constructor for all structs in both Perl and in XS. <br /><br /><h1>The design we are aiming for</h1>Simple <a href="http://github.com/kthakore/SDL_perl/blob/master/src/Rect.xs">one XS</a> per Module. This would also simplify the Build code.<br /><br /><h2>First Step </h2><br />We have began with SDL Rect. It is in github master branch now. We are in the progress of making it back compatible. Originally SDL::Rect took named variables as parameters for new(). Now since the constructor <a href="http://github.com/kthakore/SDL_perl/blob/master/src/Rect.xs#L16">is in XS</a> we have only unnamed parameters. <br /><br /><br /><h3>Before</h3><br />SDL::Rect-&gt;new( -x =&gt; 0, -y =&gt; 0, -width =&gt; 0, -height =&gt; 0);<br /><br /><h3>After</h3><br />SDL::Rect-&gt;new(0, 0, 0, 0);<br /><br />Ideally we would like both ways of constructing Rect.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3102167581424744259-6151839795039915111?l=yapgh.blogspot.com' alt='' /></div></div></div>
\ No newline at end of file