Getting closer to version 3.4.0

Hi, everyone,

I’m here to give some news, both about the G’MIC project, and about one of the G’MIC project developers (namely, me :slight_smile: ).

I’ve been very busy lately, both professionally and personally, with a lot of new issues to deal with, and I haven’t been able to devote as much time as I’d like to G’MIC.
In particular, since January, I’ve been preparing for a highly selective “CNRS Research Director” competition, for the 3rd year running, and this has taken me up a lot of my time.
This year, I seem to have made the short-list though, so I keep my fingers crossed that it makes it to the end and not have to try again in 2025! (the final verdict should take place on july 9).

These last few days, however, I’ve been able to code a few new things, which makes me think that we’re not far from the release of a (somehow) major version 3.4 (we’re currently at 3.3.6, and 3.3.7 for development version).

Are these exciting things? I’m afraid not, but these are things I’ve wanted to do for a while.
This mainly involves re-implementing some of the native commands (which were initially hard-coded in the C++ library CImg, used by G’MIC), as commands of the G’MIC standard library stdlib (so, re-written in G’MIC language). This, because, commands of the stdlib are easier to maintain and to update over time (and whose evolution does not require re-installing a new G’MIC version, as invoking $ gmic update is enough) :

  • So, the three commands graph, select and plot have been re-implemented from scratch, and I’m pretty happy with the result. Particularly, command plot is now better than before. It looks like this:

  • I’ve also recoded the command blend to fix some issues with non-basic blending modes with the background layer has an alpha channel (now it’s closest to what GIMP does).

And I think I’m done now with the wish of re-implementing native commands as stdlib ones.

Well, I understand this doesn’t look like these new features would be enough to release a major new version!

But the reality is I believe I have reached a point where I have pretty much finished what I wanted to do for the G’MIC project (from the programming side) :

  • The G’MIC scripting language is really functional, stable and after having programmed a lot with it (all of the 2400+ commands of the stdlib ! :wink: ), I honestly think that adding new features to the language itself (like class management, new data structures, or flow-control instructions ) wouldn’t necessarily be very productive (compared to the time that would be spent implementing these features). I don’t believe we need to make the G’MIC language evolve at all costs by adding bloated features that are actually possible, by writting scripts in a different way. Let’s keep things simple! (or at least no more complicated than it already is).

  • I find also that the G’MIC-Qt plugin is really cool, and generic enough, and again, I don’t see what major feature could be added to it. The existing filters cover a wide range of image processing tasks that a user might want to apply. It is already available for a lot of different host software, so I can’t see what more I could have hoped for. Kudos to Sébastien Fourey for having developed it during all these years.

  • Other user interfaces are currently being developed by the nice people from the DDA team at my lab (particularly the re-design of the G’MIC Online Web Service, as well as a Python binding for G’MIC). They are doing an awesome job, and hopefully I’ll be able to say more about what they have been produced these last weeks/months. But technically speaking, what they do is beyond my expertise, and I can’t really get my hands dirty to help them.

So in a sense, I think my development work on this project is not far from being finished.

That doesn’t mean I will stop developing stuffs or maintain G’MIC, but it’s possible that I will spend more time on other tasks for the project, such as advising other developers, responding to people on the forum, doing more communication around the project, etc.
I really think the next features I will add to G’MIC will be quite minor, mostly improvements to existing things and bug fixes (but I may be wrong, as often :slight_smile: ).

These are the reasons why I think releasing a new major version 3.4 is the right time (as well as the length of the 3.3→3.4 Changelog).
And perhaps it’s also time for me to take a slightly longer break than usual :slight_smile:

Today, I’ve built new binary packages for the 3.3.7 development version, so do not hesitate to test.
Feel free to also give me your opinion and your vision of the current state of the G’MIC project.

Cheers,

David.

11 Likes

Dear @David_Tschumperle ,

Considering your busy schedule, it is nothing short of a miracle that you find the time to help and answer everyone in need on this forum and beyond. Your dedication is truly extraordinary, and I deeply appreciate it—and I suspect you might have a secret stash of extra hours in your day!"

1 Like

Congrats and good luck :slight_smile:
(I wonder who wrote that numbered list (and a few others) though… 1 2 2 2 2 2… 2 10 :thinking:?)

Do you think you will finish that “little” raytracer you started some time ago? (note : i’m more interested in shadow casting than reflections and caustics actually). That would be a nice addition.
Well anyway, i feel like i’m being too greedy haha.

Good luck!

1 Like

Pesky day-job stuff… Really, best to you in getting that!

1 Like

I think G’MIC is a good enough language. I am able to still create new commands even after hiatus for months whereas I can’t do new things with even Python.

I would love for built-in math parser concepts like set and dictionary and user-defined functions as option instead of only macro, but I found some workarounds to what I need anyway. I sometimes want a goto as well to get out of spaghetti code situation or just nested loops in case of math parser, but I can live without it as it’s eh to me.

But, no big deal regardless of lack of these things.

2 Likes

In some ways, I’ll be happy about the language being considered feature complete - the pace of change in the past has been difficult to keep up with, even now there are a lot of changes I probably missed. It will most likely always be my favourite tool. Best of luck with the competition, I have no doubt you’re worthy of it!

1 Like

Sorry about that Andy :frowning:
I can’t be sure, but right now, I think the grammar of the language is good enough not to change it. I’d like to release version 3.4.0 with a minimum of stability (e.g. 1 or 2 years), a kind of ‘LTS’ version…

1 Like

Good to know. I will dive in once things are more stable (with G’MIC and personally).

Does this mean that this vacancy has not been filled? Or is it an annual consideration?

Yes, at the point we’ve reached, ensuring a certain stability to the project seems like a good idea to me, and might help attract more contributors.

No, it’s a national competition, every year there are N positions available (N is approximately equal to 6 - 8).

1 Like

A defined length of stability sounds good for the core language. If the tool out of the furnace, I’d be more inclined to update old filters too.

1 Like

I’ve discussed this with Sébastien (the developer of G’MIC-Qt), and we agree on this point. We’d really like to have a release that has the following properties :

  • Ensure the APIs of the libgmic and the G’MIC-Qt plug-in won’t change (for minor releases 3.4.x). Assuming that if there are changes, it will be for a major release (like 4.0.0, but this it not planed for the moment).
  • Ensure also that the API of the G’MIC stdlib commands is frozen.

In short, stability is really what we’re looking for with version 3.4.0.

4 Likes

I see great things for you, David. If you want that position, I believe you will have it. Again, thanks for all you have done to make G’MIC what it is now. Haven’t been really doing anything as far as GIMP/G’MIC for a while now (just too busy). Even so, hope to get back into the fray, soon. :slight_smile:

Hi everyone,
I’m looking for help !

I’ve spent a lot of this week to write a news article (in Markdown format) about the (planed) release of version 3.4.0 of G’MIC (probably next week). I wrote it in French because I’m more fluent in this language.

And now (and as it already happened before), I’d like to translate this article in English.
ChatGPT has done a first pass for me on the .md file, but honestly it doesn’t look that good.

I’ve put the Markdown file on the gmic-community repo, here :

You can click on the link to read this article directly in HTML (as Github has an automatic Markdown → HTML renderer).

I’m interested to convert this into something written in correct English, so that when the version 3.4.0 is out, I can also publish the news on the G’MIC website?

Would you like to help ? Members of the gmic-community repo can already edit the file, the others can propose pull request here : Pull requests · GreycLab/gmic-community · GitHub

Thanks by advance for your help !

2 Likes

Planning ahead, yes?

Mmmm, not sure I can help this time since my second son ( and 3rd child) was born just yesterday so I may be a bit busy. But there’s probably some stuff you can lift of from the 15 years article.

Also, I’ll just say that underwoods ( and probably other 3d renders I’m doing. Same for other devs.) may have more usefulness than stated.
It shows how you can use other filters to generate a new one.
It’s not really destined to photographers or full fledged artists, but it can be used for prototyping. If you need that kind of background in your artwork, just try it and see how it looks. And you can then just paint over it, modify it, or scrape it, etc. In short, I made this for people who have ideas and maybe not the skills, or people who look for ideas. And there is also nonscape - Woods which goes a little further with fake shadows and grass. Sort of.
And it takes zero space on your drive :wink: ( that’s why I like generating 3d in g’mic too!)
If I had dev skills I would do a lot more things but… I’m afraid it’s a bit too late :stuck_out_tongue:

3 Likes

Hey, congrats ! a good reason not to have to help :slight_smile:

2 Likes

Let’s see what seems to be feasible. SIMD-accelerated processing? I dunno. But, I guess new CPUs will always help out by the time this is out, so eh.

Understatement, perhaps? Congratulations, in any case, to you and yours.

ESC-C-t (transpose-sexp) 4.3.03.4.0 ?

Give it a look this afternoon (evening, Central European).

2 Likes

@David_Tschumperle, @grosgood : Thank you :slight_smile:

Ah me. Breaking things…
Address Sanitizer Reporting Heap Buffer Overflow with gmd2html #56
At least, this time, I reported before the release…

No :smiling_face_with_tear:

EDIT : Fixed