I hate looking for a command in the menus or remember a shortcut, I would prefer to remember an alias derived from the name (like Autocad). This (and probably a huge reduction in price) is the only way to make me change to something else.
I hate looking for a command in the menus or remember a shortcut, I would prefer to remember an alias derived from the name (like Autocad). This (and probably a huge reduction in price) is the only way to make me change to something else.
The graphic display was a side-effect. Events on the graphic display were mapped back to the API, i.e. mapped back to commands. The reason, most likely, is that in the days of MSDOS AutoDesk had to write hardware drivers themselves or convince third party hardware vendors write them. Having a developer friendly architecture helped in both cases.
Post-Macintosh programs such as PhotoShop went down a different architectural path. There was a pre-existing graphics subsystem and no obvious interest in developing up from the terminal. So these applications were developed down from the GUI. In the days of 256k RAM and 10meg disks, there was a lot of need for expediency and GUI code and application code often mixed. The result was a lack of an AutoCad style API.
If a procedure looks at screen layout directly, how do you turn it into a command from the keyboard with sensible parameters? Such a refactoring is hard, messy, and not at on the feature list marketing has developed. Lets face it, the PhotoShop user community would not just reject a command based interface, it might express outrage.
Going one step further, in the early 1990's AutoDesk massively refactored AutoCad's code. They took the hit in the form of R13. Then they started adding incredible features with each version again for the next twenty years.
The developer of a $50,000,000 project is going to pay several million dollars in design fees. There's a lot of value proposition in an easy button. However a lot of domain knowledge is necessary to produce something reliable.
Either way - developing a product to compete with PhotoShop or AutoCad - is a big dollar proposition. There's more capital investment that winds up requiring AutoCad than PhotoShop. A lot of what PhotoShop does is a nice-to-have. Building departments require building plans. Paving contractors require road plans. A billion dollars in those industries isn't even news.
I'm not sure if there will be an android port of Antigen. The mobile gaming scene is not very conducive to indie devs at the moment:) I also didn't write it in a very cross-platform manner. I won't make that mistake again.
In another field, Blender will make you go insane if you try to do any engineering work with it. On the other hand doing art with OpenSCAD (you type code with primitives) would probably also suck, though it's good for engineering simple objects precisely.
If you could get the best of both worlds, then yes, but I think you run into limits with scripting in Photoshop alternatives quite quickly.
To most artists of that type I know, the idea of just recording a Photoshop macro to automate a repetitive task is getting into the dark arts. Command lines are scary places to them.
And that's discounting the 2D artists who work in physical media because "computer art has no soul".
There are exceptions - I mean, I used to futz around with assembly programming on my c64 and Amiga, there are people whose visual medium is Processing, there are people making games who are comfortable with one foot in the imagery and one foot in the code - but I am pretty sure that "emacs meet pixels" would not find much traction with the people who use Photoshop as a canvas.
I mean, if "Photoshop" to you is "a bunch of image filters", then sure, we already have "emacs meets pixels" in the person of ImageMagic. But to a 2D artist, Photoshop is not "a bunch of image filters"; it's "paintbrush and canvas".
To put it another way, a piece of software can be the important artefact. The design for a building is rarely the important artefact. By "making the design his own" an architect produces something for himself, but this is not the important [public] artefact. Moreover, making the design an expression of the architect is often in conflict with the objectives of the client. Guild like structures allow architects to express themselves in ways contrary to the interests of their clients.
Yes, there are projects where developers want architects. Much of the construction industry, however, sees architects as a necessary (or unnecessary) drag upon the project's objectives. Regulatory requirements for an architects involvement are the basis of many an architect's business.
Frank Gehrey is the outlier. AutoCAD LT is very common.
The command line in Photoshop would be a way of improving productivity. As an example, I don't know any power-user/really productive Autocad user that works with the GUI. It's a waste of time.
You may be right that this is how it happened, but there's not really any reason for it to have happened that way.
E.g. on the Amiga, which had similar hardware constraints to that, a lot of apps did work similarly to the way you describe AutoCad: everything internally mapped to commands, and the commands operated on the data model and updated the view, and while they were not designed to run headless, they were often designed from the beginning for everything to be scriptable.
This was done because everyone expected the API - from about AmigaOS 2.0 onward, if you didn't have an AREXX API it'd be commented on negatively in reviews etc.
I think the difference is the lack of a culture for scripting. Even with AppleScript, there's not the same culture for scripting in the Mac world. Even less so in the Windows world (outside of developers). Unix users expect scripting and components designed for it. Amiga users expected scripting of gui apps too.
Amiga OS was strongly influenced by Unix. That's what allowed all those ports of Unix commands to fill the FredFish disks. In a sense the Amiga was what a company needed to do when buying a Super Bowl launch ad spot isn't on the table. The Amiga 1000 was beautifully engineered but aesthetics were low enough on the priority list that the sidecar made it to market.
One could make a case that all that Rexx integration was a waste of effort: The Amiga died for just about everyone but a few hardcores and software like Photoshop lives on. The ball of mud is the most successful software architecture by volume.
It doesn't seem like one would need to refactor to do something like:
$ filter layer1 blur
With things like lossless editing, Photoshop has to maintain state somewhere to be able to apply all of the layers to get the image. I get that you might not be able to say do something like: $ selection x1 y1 x2 y2
> Lets face it, the PhotoShop user community would not just reject a command based interface, it might express outrage.Though we can usually compress the representation of that state, what we don't have is a high level semantics for describing it. We don't have a language for chunking bitmaps that works independent of a specific context. We can make a DSL for describing GUI elements. It won't work for photographs. Outside of a few specific domains, we don't have a handle into content. We can't write programs for bitmaps that manipulate babies and cars and pop-up menus easily.
If we deal with the bitmap as a whole, then it's trivial to write a command that transforms the bitmap as a whole. But without facial recognition style recognition for everything we're stuck dealing with pixels a lot of the time.
Munging the application logic and the display does have some advantages, and there are some aspects of the work-flow provided by the not-Autocad software that are really useful for producing drawings...Solid filling rectangles is not a geometric idea but it allows for placing the rectangle in the foreground of an image.
But unlike AutoCad keyboard entry is always a second class citizen and there's no way not to use the mouse in the middle of trying to complete just about every interaction. Indeed one of my big rants was about some distinction between tools and commands where binding a command to an icon required an extra click in the drawing area in order to run.
There's no reason that a circular selection box couldn't be moved with "$> move 129 -204". Indeed if you're working pixel by pixel, that's exactly the way to get exactly what you mean. Exacting layouts are exacting because we hold that level of detail in our heads.
at this point its not like Adobe would have to re-architect the system cuz im sure when you click & use a tool it is not going "uhhh photoshop system, man, could you like look into this screen & blur stuff" it is calling a well-defined method with an x/y param. They just need to alias those methods from a simple command shell
Unfortunately its pretty slow and clunky, and it doesn't let you draw programmatically or anything like that.
I used it to create a texture/sprite atlas maker for game development[1], and to do batch image composition for animation frames in my last game project[2].
I tried to use it to create animated image processing effects, but I ended up having to use Processing, after reimplementing a bunch of Photoshop features in Java.
[1] http://richardjdare.com/blog/2012/11/atlasmaker-0-7-make-tex... [2] http://richardjdare.com/blog/2013/03/toxin-advanced-sprite-t...
In contrast, an AutoCad drawing is serializable to a text file of AutoCad commands.
At the core of the software architecture, it's analogous to REST versus SOAP soaked in kerosene with three decades of software evolution piled on top. Nobody loves AutoCad's DXF with deep abiding passion, but nobody would take "DXF is not my favorite file format" [2] rants in the source code seriously.
The point from AutoCad's <Point:> command is the same point that everything else is built on. It's bottom up. So in the end, a full blown command language for Photoshop would need a <Pixel:> command. And everything else, all the way up, would need to rely on calls to <:Pixel>. That's the level of granularity required to implement a command API like AutoCad's.
That's the joy of AutoCad's command line. It's programming with a REPL. Photoshop doesn't have one at its core.
[1]: https://www.youtube.com/watch?v=ubaX1Smg6pY&=
[2]: https://code.google.com/p/xee/source/browse/XeePhotoshopLoad...
The drawbacks are:
1. Not all features have nice interfaces. For some things you need to go through this ancient, hairy API based on tons of (sparsely documented) magic strings.
2. Most of the APIs are made to support the UI, so it can be hard or easy to do things depending on how the UI works. For things involving settings dialogs, or anything that's a multistep process in the UI, it can be pretty nontrivial.