Face lift of a legacy system
Programming forum needs some help :) This is more of an ongoing progress journal, but feel free to share your thoughts.
So here at my job I've recently been given the task of revamping our AIX Unix terminal text based medical laboratory information and billing system to a beautiful graphical masterpeice while establishing a layered business model for easier scalability. Am I over my head? Have I agreed to insanity?
Most of our new client systems are:
Pseries IBM Pseries servers
AIX 4.3, usually 5L
PowerPC 1GHZ+
20GB+
1+GB RAM
We do IBM why? Sales partnership = more money. Sadly.
Problem, most of the system is C, but a lot of it is still emulated EDX, which is a real pain.
So I've looked over a couple options. The nice thing is IBM has released a AIX Linux Toolbox to run many linux popular software packages on AIX.
1. CDE/Motif X Windows: Lightweight, simple graphics, but the motif library is ridiculous and not very motivating (hearsay)
2. wxwindows with gtk+ and gnome desktop: GNOME looks great for AIX setups, yet, im thinking this might end up bringing a local network down with 10-30 users all having X sessions, the gtk+ tool kit is a lot more promising, and if I used wxwindows I'd have a fully portable C++ user interface layer (windows, macos, everything)
3. project mono/.NET framework/GTK+/C#: This would be my ideal project. Make a service layer, maybe in C#, build UI on windows, I could compile it to MSIL bytecode and possibly run it on either platform (not sure if this is possible yet)
The goal is to not only make it graphical, but to make our programs more tier oriented, they are too closely coupled together and flexibility is a huge factor. Maybe someday we'll get the DB out of a fixed file format.
AI Summary
39 Comments
HAHAHA GO FUUUUUCK YOURSELF ALL YOU ASSHOLE WANNABE COOL JEHOVAH WITNESS FREAKS
F U C K Y O U
A little update on this project..
I got sick of struggling here so I started on a project that eventually ended up being 20 thousand lines worth of code (11k done by me alone). We now have a foundation to at least start writing newer software with. We've already seen a huge benefit in testing, debugging, and some deployment with this 3 tier architecture with one of our latest projects.
Now it's time to build web applications that will make use of this library through web services, making it a 4/5 tier complete project. A site done with .NET C#/ASP will use a web service for communications on the AIX/Unix library with data transfer objects.
This is starting to become one huge heap of design patterns. But it's really interesting how different the project is now then I had originally envisioned.
hi you're cute
Ok so I'm back at a crossroads:
QT is Eh-K. It's tedious, and it's limiting the company in one huge direction, remote interfacing. It's taking long amount of turn around time.
Most of the problem lay in the fact that all of this X-server stuff is so tedious and non robust. 80% of my problem comes down to a printing barrier. It's is now 2005 and we have now XPrint protocol to print directly from screen? Cmon.
So I'm working on getting Suse Linux onto a machine and seeing if mono really is holding up to its acclaims, because IBM servers support Suse Linux and nothing compares to .NET development libraries and the web interfaces.
The OSSversion of Suse was 5 CD download! YIKES
So here's my scenerio thus far:
Suse Linux on an IBM pseries server
Get all the code ported fairly easily to Suse power PC
Install project mono
Install apche with mod_mono
Split our C++/C libraries more into actual libraries
Consume these libraries into .NET unmanaged code
Call from C# code behind pages of the ASP application
Wow, sounds like a pretty big undertaking. Are you behind schedule?
I'm learning that anything that makes money is ON schedule.
It's a terrible way to work :(
The thing is, the QT side is still working forward. What I want to do is just show them a sample of what I could do, which would then halt Qt development, and go full force on .NET. But I know, the minute I show them "goto 10.0.0.5/" and they see even 1% of their applications web accessible even with just some garbage web interface they would pass out.
Did you ever figure out if you could use PHP or Ruby to hook up your C++ libs?
Not really. It just sounds like that's not where they focus their attention too. And I haven't had time to look into it. That's two huge areas I know nothing about, Ruby, and Rails, then add that with trying to interface with C/C++, that might be a little too much of a learning curve for profit.
And that's why I want .NET, I know it, and I'm comfortable with it, and I've actually got code that consumes older code, which is amazing
good points. i just usually get scared when people try to get microsoft technologies working with custom libraries on unix systems. don't be scared, though, chris, don't be scared
yeah. im scared
Only thing pushing me to consider this is that everything is public standard. It's not like novell is trying to reverse engineer .NET. There are certain technologies that MS uses with .NET that aren't published standards, but the parts that are, are hugely beneficial.
EDIT: LOLLERS too
I don't know what kind of app you're working on, but rails is really for database-driven web applications, pretty much talking directly to the database through a very thin model layer (ActiveRecord, part of Rails) that gets its structure from the database table schema. so if you're trying to web-enable an existing C\C++ library, then rails is definitely NOT the way to go.
Exactly my thoughts and what I was trying to say, but you said it ina much more concise and intelligent manner
The C++ library that I have had our team split apart to me more of a library and less of an application is actually our service/bussiness layer. It defines how we serialize data, how it gets processed, etc. You guys know this, but from a different programatic point of view.
In a Microsoft model, this business layer is usually in DLLs, in Active objects, or the new way being .NET components and web services. Not only can these components be staticly or dynamically included into a project, but they can have a communications interface to them seperately. (Yes Java, in various ways).
With .NET and MSIL I can get my libraries to talk on the same level of speech as the website front end, thus providing a very easy way to pass around memory specific structures and resources, and make use of the original business logic without code rewrite.
otherwise, php, perl, ruby, I'm going to have to make all these classes/functions that converts MyObject to MyObjectWithNoPointers and Orange to an Apple to get them to talk without tons of hassle (aka. marshalling)
yeah, that sounds horrible (the marshalling part).
go with mono
Huge undertaking? Eh yeah, but at least the products I'm dealing with in this line up is supported....
Mono has support
Suse linux has support
Both made by Novell
So I feel safe there.
So I get to just worry about code. instead of "Oh QT doesnt support, this, QT doesnt do this, QT has no calander picker? ALKDJFLJSDKLFJ"
that enlightenment WM looks sick, just makes me want to contribute somehow, but no time for it
Hmm new option, my boss is willing to shell out a 1+k dev license for trolltech's QT libraries, which gets rid of that whole gtk+->wxwindows setup i was thinking
wxwindows is what the original Bittorrent client was written in, and I've installed a couple apps written in gtk+ on my windows machine (the Gimp). I hear its good stuff.
yeah I just saw the list of companies that use it, pretty extensive
mono is def. cool tech, but if I programmed in it, I would shudder to think that microsoft might do something legally down the road, and then you'd be in trouble.
Ah well the interesting thing about MS new .NET venture is that I believe most of it is under ECMA or ISO, it's actually standarized, unlike previous MS endeavors or technologies. So project-mono is strictly building to standarized specs, unlike say, trying to emulate/recreate proccesser binary compabillity for win32 API, which is not open standard and specific to windows.
.NET reasoning is to make everything run .NET, just like java and its JVM, it's like putting a costume on MS to make it seem MS isn't there. but i dont know what limits there are on open source verse proprietary software, etc. and yeah that could really be beat if MS says "ok everyone pay up now"
mm. have to politely disagree. If MS *wanted* .NET to run on everything (like Java), then they would have ported .NET to linux themselves, and distributed it as Sun distributes the JVM (which is closed-source, but essentially free). Mono is an open-source project started by Miguel de Icaza, not MS.
MS really only wants .NET to run on Microsoft platforms, therefore windows-lockin. Whether they can do anything about Linux machines running .NET (via mono), or care, is another thing. What they want to do is make money. and they do that by selling Windows.
i don't know it's a tough call i see it both ways
windows lockin can occur either way
MS does not make money from .NET framework, or compilers or languages. You can get C# for free, and a ASP.NET supported web designer for free from MS. you get the runtime for free. MS does not make money from these packages. they make money from services and software bundles and support, and dev tools. They make money of things built ontop of this architecture
MS does wierd things to attract a different crowd. Did you know NT4 there was a port for POWERPC, SPARC, and other systems? There is even full unix development kit (almost as big as cygwin) for unix developers to convert to windows.
yeah, they give .NET away for free, understood, but only for Windows platforms. -You still need to buy Windows to use Microsoft .NET. They have not released Microsoft .NET runtime or developer tools for other operating systems. (which is where mono comes in)
<Analogy>This would be like Sun releasing Java, but only for Solaris (assuming they charge for Solaris, which I think is still true). Lets call this .JAVA Then, hey some guy comes along and makes something called Meningitis that will run .JAVA apps on Linux and windows. Now maybe Sun thinks that's cool, maybe it doesn't. All it cares about is selling Solaris. </Analogy>
And yeah, they made and sold NT4 OS for other CPUs, but that doesn't really have anything to do with this.
highly agree with that, MS wants to push CE and Win on every desktop possible, and that's highly understandable, they own the market then.
but there is no fued, or rivarly really so far. these guys even attend the same ECMA meetings (team mono and MS). Pushing .NET to another platform is both good and bad for MS. Pros are they can sell vis studio developer tools to linux developers, use services by MS (passport amongst other MS libraries that USE .NET), sell office products.
It's a huge MS method is to let people taste what they have and make every possible means to get them convert over. Thats what I mean about the NT ports, even the unix services package. It's a ploy to get developers over. Without developers and a great foundation of developer support you have no OS. *nix just happens to have many confused random developers with no primary direction. MS started out with a highly extensive developer foundation. I can see it the more I work with *nix systems. MS just 'seems' to always have the next best solid, extensive, working developer technology.
However, I sit on the line in MS vs UNIX debate. But it's just what I've seen and read working for both sides.
I hear you. you've probably got much better perspective on this than I do, being you've actually used .NET, and I assume at least looked into Mono.
haha that analogy was awesome
I do see your point about C# and the CLI being an ECMA standard, I guess that would keep Mono safe.
Yeah this is one of the first times MS has ever gone to a standard committee, not only ECMA but also ISO. And the first time they have ever supported C++ standard committee
For me that is a big, big deal. Just like POSIX, just like C89/99, just like C++99, standars are a key not only for porting but mainly for the limit on mistakes and idiosyncrasies between different implimentations
i think im going to go with the spaceship yeah, that should work
Wow. It's like a different world.
yeah. hmm maybe this was a dumb idea
heheh. yeah, I'm just a java dork. haven't written code in C since college.
Ok, .NET with mono not possible for service layer because I wouldn't be able to generate true MSIL from the original code, too many pointer operations
by