Hi,
Nice to hear that there is to be some 'native' support for matrices and that the documentation is updated. Though I've some comments too.
Firstly, I would prefer the move to another namespace for the deprecated functionality, not only because it will be supported/used for quite some time. It is also useful to be able to make a gentle transistion to 'non deprecated code'. I think the amount of work is quite doable as quite a few of the modules are in essence deprecated in total, the opengl specs 3.1 and after would make this work quite a bit easier as they exclude the deprecated functions. I think there is also a version of the spec where the deprecated functions are marked in the sideline.
Secondly, the way you're depicting the OpenGL-raw library seems to be as a library to make the opengl functions easier to use. Though this seems to me as what the current OpenGL library is doing, wrapping all the objects in nice new/data types and changing the functions in order to make them more usable. So what is in your proposal to be difference between the proposed OpenGL-Raw-Nice and the current OpenGL. Because if it were minimal it would be quite a reason to add a 'layer' around what is currently OpenGL.
For the dependency on OpenGL itself, might it be an idea that as in the current package everything is exported and you can only use the functions available on your machine? I don't know much about OpenGL extensions but might there not be a way to specify that there are two 'equivalent' functions, one in the higher OpenGL version and one in a extension. On invoking trying to invoke such function it would pick the appropriate option, and thus it would prevent making a hard deprecation on a specific version of OpenGL.
Furthermore It might be an idea to make part of the OpenGL library 'generatable', that is that the source code is generated from some sort of specification file. That would for example make creating those functions for getting limits (e.g. max texture units) quite a bit easier. There is quite somethings more I would like to change in the library to make it nicer (at least in my opinion), but that would make this email too long, and you've probably also quite a lot of ideas your self.
I'm currently busy with implementing some OpenGL 3.0 functionalities, some are already done. But work i progressing slowly as I'm using quite some time for school and other activities.
Lars
P.S. I think the framebuffer ticket (#7, https://github.com/haskell-opengl/OpenGL/issues/7) on github should be reopened as I can't find them in the source code.
On Thu, May 19, 2011 at 1:32 PM, Jason Dagit <dagitj@gmail.com> wrote:
On May 19, 2011 5:02 AM, "Balazs Komuves" <bkomuves@gmail.com> wrote:
>
>
> Hi,
>
> I see you plan a complete rewrite, and removing the deprecated functionality.
> In this case I suggest to make a new package instead of a new version of the old
> OpenGL package, since it will actually be a very different package, presumably
> with different APIs, etc (and I don't think Sven actually agreed to replace it, since
> we cannot seem to reach him).I have to keep my reply short because I'm traveling, but two comments.
Sven is no longer the maintainer, so we don't have to think too hard about what he would do. We can make all the necessary decisions ourselves.
Well, they way this change happened is arguably not completely transparent...
Anyway, there are objective reasons to make a different package: Apart from those I mentioned
in my last email, we actually have hands-on experience what happens when a big rewrite
happens the way you suggest, namely the parsec package, which still causes serious pains
years later. We have parsec v2.x, parsec v3.x, parsec1, parsec2 and parsec3 on Hackage;
that's five versions in four packages with different maintainers, all because of one wrong decision.
And arguably parsec2 vs. parsec3 is a much smaller change than what you plan.
Furthermore, let's suppose the completely realistic situation one would like to use both the
old and the new versions of the OpenGL package. This is next-to-impossible when it is the
same package (and painful in any case), since other libraries you want to use but depend
on OpenGL have to be recompiled each time. I again have hands-on experience with this,
as I maintain a private branch the (very) old (before OpenGLRaw) OpenGL binding since I use
frame buffer objects and other functionality not in the official package. Arguably, this is an
issue of Cabal, but I have no high hopes for Cabal to solve this in the near future, and anyway,
we should make life more painful just because.
I believe each of these reasons is enough *in alone* to motivate a separate package, and
together they form a very strong argument; and I hope you take this into account in a
rational manner, notwithstanding what PVP allows or not. Face it, you plan to make a
completely new package. It doesn't make sense to sell it as a new version of a different
package.
Whether we should rename it later to "OpenGL" and rename the old one to "OpenGL-old"
or something like that is a separate question which can be dealt with when it becomes a problem.
Balazs
By following the hackage package version policy, we should be free to make major modifications to the existing API. If the gsoc work becomes the new version the opengl library, then it will be version 3.x or later. You should be able to author your package dependencies accordingly. We should be sure to release any bug fixes that we can for the current version as we find them.
Basically, lets free ourselves to make changes, and them figure out how to do so in a polite way.
That is my opinion anyway :)
Your feedback is welcome of course.
>
> Furthermore, "deprecated" (2.0) functionality will be most probably supported indefinitely
> in the future. At least NVidia (~half of the market) stated that they will fully support it; and
> there is a HUGE amount of existing software out there depending on the deprecated OpenGL
> functionality, which makes it economically irrational not to support it.
>
> Another reason is that only new hardware supports OpenGL 3.0. For example I own
> two computers, a laptop and a desktop, and neither hardware support OpenGL 3.0
> (it is actually not possible to buy a video card compatible with my motherboard which
> supports 3.0...)
>
> Lastly, for a new user and also for quick hacks, the glBegin/glEnd route is much easier.
>
> Apart from this, since I care a lot about Haskell OpenGL support, I volunteer to
> review your work (read: give you my subjective but detailed opinion and suggestions).
> You can reach me at this email address if you are interested in discussing stuff.
>
> Balazs
>
> ps. I have a low dimensional linear algebra library which should have all the functionality
> (and some more) needed to do graphics with OpenGL even in the post-3.0-era:
>
> http://hackage.haskell.org/package/vect
> http://hackage.haskell.org/package/vect-opengl
> http://code.haskell.org/~bkomuves/projects/vect/
> (the development branch has some quaternions, too)
>
> I'm open to suggestions regarding the organization and API of this library.
>
>
> 2011/5/19 Alexander Göransson <alexander.goransson@gmail.com>
>>
>> Hi!
>>
>> I'm the person who will be working on the libraries this summer. I've been very busy with school lately (and still am), but I've written a blog post with some thoughts on the project:
>> http://unsafeperformpastorn.blogspot.com/
>>
>> I will keep posting stuff there, on a weekly basis, throughout the summer.
>>
>> // Alexander
>>
>> _______________________________________________
>> HOpenGL mailing list
>> HOpenGL@haskell.org
>> http://www.haskell.org/mailman/listinfo/hopengl
>>
>
>
> _______________________________________________
> HOpenGL mailing list
> HOpenGL@haskell.org
> http://www.haskell.org/mailman/listinfo/hopengl
>
_______________________________________________
HOpenGL mailing list
HOpenGL@haskell.org
http://www.haskell.org/mailman/listinfo/hopengl