Just venting or just hoping…
I only wish that XOJO would divorce the IDE from the compiler, make a stand-alone compiler for code and UI resources, make everything file based, make code files just PLAIN TEXT, make the IDE un-opinionated about your coding style and structures. Make a lighter yet powerful IDE, and I think it can be done without adding burden to the learning curve or “friendliness/easiness” appeal of Xojo. Matter fact it can:
- add a more hipster appeal for newer generations
- add appeal to people who like flexibility, openness, control from their development tools and environments
- make Xojo easier to integrate with other development tools, options, workflows, etc (escape the Xojo bubble)
- It is OK to let people thinker and hack around your development tools, it grows the community, adds exposure, imagine
people using “grunt”, “make” or even their favorite text editor, people making pre-processors, transpilers.
Modularizing the dev environment is a good thing, it makes things more manageable/sustainable and I can even imagine a day XOJO could be offering cloud builds for IOS/Android, etc, or even cloud editors…
My dream is:
-
Module, classes, interfaces are all plain text files.
Use keywords for scope, access modifiers, etc.
Use attributes or #if Target conditional compilation
A lot of the syntax already exists in XOJOScript…
-
Keep resources (icons, images, sounds, etc) as files. Even icons and masks and others created in the IDE will be saved as files.
-
Make a new project component named “assets” or “resources” that will be used on the IDE to represent and manipulate resources. In the IDE you can expand it and see different type of resources (like good old ResEdit, or InterfaceBuilder nib). I will see “icons”, “images”, “sounds”, file-types, and even menus.
This will be the UX in the IDE to handle them, as in the actual project the “resources” could be file with all the data and paths to actual files (as required). keep the format of this file simple, JSON is a simple and clean option for these type of files.
- When editing code in the IDE it can still be parsed and presented visually under the project, but a more nimble and sustainable approach could be:
Let the project view just display files, when editing source code file the editor:
shows a full file, which it lets you poke at other parts of your code quite quickly, specially if we have tabs…
remove all of those fancy inspectors from methods/properties, their are annoying (every time I add a method and I tab to enter the arguments and the IDE takes the focus away it may have cursed unintentionally sorry, you guys are still heroes on my book!)
display a right pane with the visual representation of the code (source tree) (examples: Komodo IDE, Visual Code) and the same tree can be shown when expanding the file in the project view.
Use code intel to help navigate your code in addition to auto-complete, add “Jump to Definition…”
-
Just speculating about the syntax/type checks on the editor, but any index/cache etc could still be supported as an additional file the IDE creates in the project, similar to CodeIntel in Komodo, Sublime, Visual Code that create a sqllite db for code-intel.
-
For newbies the IDE could offer “assistant” dialogs for things like creating a class, properties, methods, etc…
For the UI a VisualBasic/Net approach is not bad. A file for the actual UI representation (rather not be binary) and one for the window object and its code. The IDE would make these two file almost transparent, meaning adding manipulating events from the UI editor jumps you straight to the corresponding code.
Make the compiler a CLI tool!, Build settings can be edited visually on the IDE or directly in the file. and JSON is a good format for a build file.
Now really of topic, with the language…
-
The more that Xojo behaves and looks like CSharp/Net, Java and a like, it adds rigidity, flow, structures create cumbersome code and logic. If the basic problem requires me to write three classes, one interface, cast here, there, 50 lines of code for a simple loop, 100 more for forced exceptions, well your language doesn’t make me productive, even worst it has no sexiness for younger generations.
-
Xojo can be a safe and fast compiled language without being so opinionated as how to use the language and its constructs. Old notions that you have to do things to save a programmer from its own mistakes, can lead you into that strict PARENTING, that kids hate (im still a kid!)…
-
You want to be sexy!, make functions variables, Make “addressof” implicit in assignments, add object/structs literals, make it transparent for me to iterate over and object’s properties with a ForEach.
-
Simplify JSON (I made my own) make JSON work with plain dictionaries, just stringify a dictionary, parse returns a dictionary. Arrays are dictionaries with numeric keys. There would be no need for JSONItem. An later I would take stringify an object properties sin you already added iterations for the foreach