From ecb66e1968ce022a7a5a5acfae52a7c5c93e12a6 Mon Sep 17 00:00:00 2001 From: "Randall C. O'Reilly" Date: Mon, 15 Jul 2024 22:58:40 -0700 Subject: [PATCH] rewrite of our story per feedback --- content/blog/-2024-07-17-initial-release.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/content/blog/-2024-07-17-initial-release.md b/content/blog/-2024-07-17-initial-release.md index 6c976da..f34f099 100644 --- a/content/blog/-2024-07-17-initial-release.md +++ b/content/blog/-2024-07-17-initial-release.md @@ -88,22 +88,22 @@ pe.ColumnOptions("Population").On = true ## Our Story -The open source world is full of half-baked abandonware, especially in the world of GUI frameworks. And writing any kind of significant application in a given GUI framework inevitably requires a lot of time and effort (even with something as easy-to-use as Cogent Core), so it is reasonable to be very cautious in investing in a given framework, lest this common fate befall it and take your project down with it. +Here's a bit of background about where Cogent Core came from and where we want it to go in the future, and why we are committed to supporting it and growing a full software ecosystem around it. -Therefore, we think it is important to tell you a bit about where Cogent Core came from, and where we want it to go in the future, and why we are committed to supporting it and growing a full software ecosystem around it. +The initial version of this software was named [GoKi](https://github.com/goki/gi), and it was written in 2018 by Professor Randy O'Reilly to enable him to develop advanced [neural network models](https://emersim.org) of the brain using Go, instead of C++. He had grown increasingly frustrated with the long build times and tiresome boilerplate involved in coding in C++. At that time, Python was starting to become increasingly popular, but it is really just a wrapper around the same dreaded C++, resulting in a complex and unpleasant combination of two languages. Go, by contrast, compiles nearly instantly, and runs nearly as fast as C++. The small difference in compute time (less than 5-10%) was more than made up for by the massive increase in coding efficiency and overall happiness from using Go. -The initial version of this software was named "GoKi", and it was written in 2018 by Professor Randy O'Reilly to enable him to develop advanced [neural network models](https://emersim.org) of the brain using Go, instead of C++. He had grown increasingly frustrated with the long build times and tiresome boilerplate involved in coding in C++. Python is, by itself, too slow for the actual numerical simulation code, so it inevitably serves as a wrapper around the same dreaded C++, resulting in a complex and unpleasant combination of two languages. Go, by contrast, compiles nearly instantly, and runs nearly as fast as C++. The small difference in compute time (less than 5-10%) was more than made up for by the massive increase in coding efficiency and overall happiness from using Go. +The only thing missing from the Go ecosystem at the time was a full-featured native GUI framework, so Randy built on his extensive experience with [Qt](https://en.wikipedia.org/wiki/Qt_(software)) to write one in Go. Overall, GoKi provided a powerful 2D and 3D interface that enabled experts, as well as novice undergraduate students in various classes taught around the world, to better understand and develop new ideas about how the brain works. However, as a first effort in Go, GoKi retained too much of the C++ style, and many important lessons were learned in getting everything to work. -Overall, GoKi provided a powerful 2D and 3D interface that enabled experts, as well as novice undergraduate students in various classes taught around the world, to better understand and develop new ideas about how the brain works. However, as a first effort in Go, GoKi retained too much of the C++ style, and many important lessons were learned in getting everything to work. - -Meanwhile, Randy's son Kai was busy experimenting with lots of different frameworks and languages for various coding projects, and eventually came to the same conclusion, that Go is truly the best language around. After exploring the various existing GUI frameworks in Go, Kai came to the conclusion that a major overhaul of GoKi might end up producing a much better framework than any of the other options. +Meanwhile, Randy's son Kai was busy experimenting with lots of different frameworks and languages for various coding projects, and eventually came to the same conclusion, that Go is truly the best language around. After exploring the various existing GUI frameworks in Go, Kai came to the conclusion that a major overhaul of GoKi might end up producing a better framework than any of the other options. So the father and son team (more son than father, to be clear) spent the next year rewriting this codebase many times over, peeling away layers of complexity and finding the most robust and elegant solutions to the many problems such a framework must solve. The [Principles](https://cogentcore.org/core/architecture/principles) capture some of our hard-won lessons learned, and we hope that the experience of using this framework demonstrates the resulting simplicity and power of the approach. -As a young and ambitious programmer, Kai has many plans for future apps to program in the Cogent Core framework, and Randy continues to develop his neural network models for research and teaching. Throughout the process, Randy has maintained what is now Cogent Code as his primary everyday code editor, and the new versions of the neural network models are also well tested. Therefore, we are confident that the core of the framework is solid and ready to use at this point, even as we continue to build out more features and welcome suggestions and input from the broader community for how to make it even better. +As a young and ambitious programmer, Kai has many plans for future apps to program in the Cogent Core framework, and Randy continues to develop his neural network models for research and teaching. Throughout the process, Randy has maintained what is now Cogent Code as his primary everyday code editor, and the new versions of the neural network models are also well tested. Therefore, we are confident that the core of the framework is solid and ready to use at this point, even as we continue to build out more features and welcome input from the broader community for how to make it even better. We are excited to build toward a world-class GUI framework in our beloved Go language, and hope this excitement is sufficiently contagious to grow a vibrant community of users and developers. We think Go is such a special language that it deserves to be used for everything and anything, outside of its traditional role as a server-side and cli-based workhorse. +We each have a long-term commitment to the future of this framework. Randy and his many colleagues around the world rely on it for research and teaching. Kai is available for consulting projects to develop Cogent Core solutions, and has long-term plans to build a career around this framework. + ## Future directions One important future direction, evident in the interactive editing ability shown above, is to use the [yaegi](https://github.com/traefik/yaegi) Go interpreter as a replacement for the traditional role that Python has played relative to backend languages such as C++, so that you can transparently have a dynamic, interpreted experience as well as the lightning-fast compilation of Go. We think this can provide an ideal combination of rapid prototyping and hot-reloading (as in the Flutter framework), within a strongly typed and robust language that scales to large-scale applications (unlike Python and Javascript).