Using Preview Technology in Production Software - silverlight

What are the pros/cons to using CTP technology for internal production softtware? By internal production I mean it's software we're not selling to anyone else but will be used by a large number of internal employees spread nationally.
I can see the obvious plusses (features and functionality that beats existing systems) and minuses (bugs, lack of support, changes in the interface, risk of discontinuation.) I'd like to hear from people with experience using preview tech in production software and the kinds of hurdles and things that we might not be considering.
The technology in question is the Silverlight Bing map control CTP.
Thanks,

It's a call that can be tough to make and really depends on your circumstances. A beta control from Microsoft, targeted at developers, that fills an immediate and important need, may be just the right fit if you are understanding the lack of support.
Especially given how quickly internal apps and even public sites go through revisions and quick improvement milestones.
The Silverlight Toolkit has been trying a new model for the last year; we've introduced special quality bands, to help customers make a call, and understand the investment and guarantees that the product team is making. I sort of hope we can get other teams to make a similar commitment.
The AutoCompleteBox control was essentially CTP a year ago, in the Preview quality band. Since then we invested and shipped it in the Silverlight 3 SDK as a mature, supported product.
Have a discussion with your management to define what risk you can take on while still enabling your internal users with quality value (scenarios that do work great, regardless of the released quality under the hood).
Consider source code!
One thing that you can also do is have a discussion around source and binaries. Although you won't always have an option to grab the source for many controls or frameworks, there are a lot of open source releases available today. Your control vendor may also be willing to offer a source license.
The cost for maintaining your own private branch of an open source control is high, but it is an avenue that can be explored if you need fixes earlier, want to add your own functionality, or feel that a developer day of work might just get an existing control customized for your scenario.
Updating with some more specific links:
Silverlight Toolkit
Here's more information on the Silverlight Toolkit's Quality Bands, for those that are interested. They are Experimental, Preview, Stable, and Mature; Preview is much like CTP, Preview - Beta, and Mature - Released and supported.
These are all just words, but they are "the word" of the team.
Microsoft Connect
WRT the Bing Maps control, I did see that there is a Microsoft Connect site out there. That's a great resource to have - although I am not in the program, typically Connect sites are there to help provide more frequent drops, a set of forums for discussing any issues, and a way to easily get in contact with the developers and testers on the product.
Other vendors
There are many other vendors out that that provide early releases, feel free to use the comments to add a non-Microsoft angle to this. I wanted to provide my opinion on these topics since I'm pretty familiar with a lot of the Silverlight-specific Microsoft frameworks that are out there.

Personally I don't think it's a good idea, as essentially your internal employees are your market, so this is essentially production software.
So things like licencing, compliance, support, SLA's may need to be thought through.
I know that would be frowned upon by my IT Director and Internal Audit people, to name two.

Are you reasonably sure it will work and not kill your employees' pets? Then it ought to be fine.
Seriously, just be sure it works for the target audience.
As always, IMHO.

Sometimes you just dont want to wait for a new feature, for instance we started using SQL Server 2008 in our new architecture just for the DateTimeOffset. We used this application internally, but this wasnt a major deployment. If its stable enough then why not. The Pros are you dont have to wait, you're testing new techniques, code and keeping up with technologies.
The cons are that some features will change, API arent finished or some things get renamed. These things present themselves pretty quickly and are normally easy to change. Also some things may not be documented, but there is always someone blogging about it.

With the tools available today like HockeyApp to manage betas for my apps I am less afraid to use preview APIs in beta versions of my apps. This way I can work out new functionality with real users who want to try out the bleeding edge.
When I have keep the new version limited to a small set of users this has been fine.
The times I have used preview technology in production I have been occasionally bitten by the bleeding edge. I have had to work around bugs or live with them while I waited for them to be fixed.

Related

DotNetNuke VS Drupal 7?

I am planning to build a website for courses online, teachers can create their courses and put their exams, students can enroll, view courses and apply for exams ..
I am a bit confused, to build it with DDN or Drupal ? which is easier and more powerful ?
I have no problem with .NET C# or PHP, although I see C# more easy to code with,
what I need to know, which CMS is better for my case ?
Which CMS is more robust & complete ?
Thanks in advance.
Of course, either platform has its pros and cons. What you're looking at building is essentially a Learning Management System, or LMS. There are a few existing LMS solutions built specifically for DotNetNuke. They include Engage: Campus, NetLearn, and Accord.
I would tell you to go with which ever platform offers you the most features for managing this kind of content for the best return on your investment, and offers you the best comfort level. If you're familiar with .Net and are comfortable in that arena, then stick with DotNetNuke. Otherwise go with another platform. However, having nearly 8 years of experience in developing solutions with DotNetNuke, and 13+ overall in developing software solutions (including PHP-based ones), if I have a choice, I always go with DotNetNuke. (And not just because I am an employee for a year now.)
I find that DotNetNuke has the most stable builds and releases overall. It's security team and features are second to none. It's community and ecosystem is unrivaled. If you're looking for a pre-built solution for any kind of business problem, chances are that the 10,000+ extensions in the Store or Forge will get you up and running with less development time and less expense. The forge has free (open source) extensions, and the median price of a store extension is $89 (LMS's are quite more expensive though).
The eco-system also boasts over 800 known ISV's out there. So chances are, if you're looking for support, not only is there an official company to provide it and back you up when something goes wrong, there are numerous other options out there in terms of companies that specialize in DotNetNuke.
One last thing on the releases... DotNetNuke has a known roadmap, a frequent release cycle, and an outstanding reputation for backwards compatibility. Your extensions will continue to work on the platform as you upgrade to take advantage of the latest and greatest features added to the platform, usability updates, bug fixes, and security updates.
As a Sales Engineer at DNN Corp, I hear all kinds of use cases, and I see DotNetNuke used a lot in educational institutions. They all use it to varying degrees as not only a CMS, but also a LMS, social platform (even in schools), and more. Most schools are also standardized in some way on the Microsoft stack too, so integration is much more straight-forward using DotNetNuke.
I could go on, but this is as much time as I have to give you an informed response.
Based on what you are trying to build DotNetNuke will only really give you authentication and basic page creation out of the box. All those other elements will have to be custom coded in .NET.
If you use Drupal 7 you can build majority of that using CCK, Views and workflow without really having to do a ton of programming if you don't want to.
I have been doing DotNetNuke since 2003 and have developed tons of modules for it, including some publicly available at www.dnnspot.com
If I was in your shoes I would do Drupal, but I know both pretty well.
ACTUALLY - If 'I' was in your shoes I would do Ruby on Rails now ;) but ... Drupal would work pretty well and you could get alot if not all of this done without slinging much code. Drupal is crazy.
DNN is now built on C# but has always been on .NET. I'm in a similar position as I code in PHP and .NET and have used Drupal and have been working on DNN for the last 4 years. I find that Module Development in DNN is wonderful.
i hope that helps.
Full featured Learning Management Systems (LMS) require substantial development (man decades), especially if you want to support SCORM eLearning content. Both DNN and Drupal will offer you most of the add on functionality that you will need in addition to the LMS features - the ability to build web pages, rich text editors, etc.
I would evaluate the different the LMS available for each platform and make your choice based on how robust the LMS are. In addition, evaluate how easily the LMS integrates with add on modules such as forums, wikis, etc. Most of our clients select our LMS without any knowledge of the portal framework beneath it.
Based on these evaluation metrics I am confident that you will find the Interzoic Accord LMS running on DNN to be a superior choice.
Chris

Development tools for my database managed website

I am planning to develop one website which should have following features
Database integration
online payment system
forum
I need suggestion for my following questions before I will proceed to develop my site.
Is there any any single development tool which can provide me one webserver + mysql database + user login + java-script support + webpage design + online payment system and forum and easy site maintenance ?
What best practice to start development of this type of project?
How much effort it need to maintain this type of project?
"database integration" isn't really a feature - it's the tool you use to deliver your features. A feature might be a shopping cart, or a product catalogue, or a structured navigation system, etc.
In order to talk to a database, you almost certainly need some back-end code to be running, and you need to be able to program.
Yes, there are frameworks/tools that accelerate this, but you do need to invest at least in the basics of learning how to code.
Alternatively, if what you really want is to build an online shop, sign up for a "software as a service" offering where all you have to do is configure the product.
Sounds like you could use a framework to do your project with. Take a look at http://www.drupal.org.
If you're including an online payment system then you need to ensure that it's high quality, developed by people who know how to properly secure such a system. You should also be looking for a solution that handles pretty much everything you need it to do or that allows you to plug in modules for additional functionality rather than modifying solid code. There are so many ways for a developer to foul up even the best designed system that it's best to just leave it alone unless you're fully up-to-speed on secure coding guidelines.
IF what you really need is a way to sell things, and content to manage, then what you're looking for is a shopping cart with content management capabilities. There are plenty of good ones out there, and you should Google them. We went with the AspDotnetStorefront because it suited our needs, and was PACB certified, but there are plenty of others out there. Shop around if this is the type of thing you're looking for.
That said, you can get a good framework that has shopping cart options, and also the ability to add/modify modules to provide functionality with DotNetNuke. There are a wide variety of pre-existing modules to choose from as well. And you certainly can't beat the price on the free version. Developing for it takes some getting used to (there's a learning code even for experienced .NET developers) but it's pretty flexible.
Edit - I realize I'm only offering .NET suggestions, but you didn't mention what development tools/language you are comfortable with, so I'm mentioning the ones I've worked with. There are good (some arguably better, some arguably worse) Java and PHP equivalents to the suggestions I'm offering as well.

Silverlight vs Adobe Air

Now with Silverlight 3 (offline, out of browser stuff), what are the main differences between the two technologies?
There are some significant differences right now in the Beta, no idea if these will still be differences in the release version.
There is no way to hide the window chrome in Silverlight OOB.
No ability to create a notification tray icon.
Air apps can be multi-window, Silverlight OOB cannot.
Air apps have more access to the system, Silverlight apps are sandboxed.
There are differences in the install and update procedures, not sure of al of the details.
AIR gives you access to the file system and a SQLite db. SL3 only lets you write to the file system with user interaction (a Save As dialog) and doesn't have any support for a DB in Isolated storage or on disk.
SLOOB runs in a sandbox still, so you're limited to the same cross-domain issues as a Silverlight app running in the browser.
It's a three way war: Adobe AIR, MS Silverlight and Mozilla Prism.
Read this blog-post and this article. A quote from the second article:
Silverlight is the clear winner in terms of power, but as one of my colleagues pointed out the other day does it matter? His point was that Flash has an incredible penetration rate. According to Adobe it’s in the 99% range. When considering rolling out a new product that requires a plug-in why introduce another barrier to adoption?
and another one from the second:
We then asked of those who answered yes which formats they use. Unsurprisingly, given how long it has been available, Flash leads with 61% of respondents. More surprising was Silverlight’s very small market share of a little over 2%, essentially the same as that of the Real format. Quicktime did surprisingly well, at just under 20%.
As for VOIP support in SL read this.
Read up on Prism here.
In addition to what Dave said, Silverlight seems to be missing device support (microphone and web cam).
One thing I'd like to point out, that nobody else has mentioned is (and I'm not picking favorites when I say this, as we use Air/Flex for a project at my job):
Adobe doesn't have the talent needed to create quality run times and IDEs for developers. Their ideas are fine, it's the execution of those ideas that I doubt. I think we can all agree that Visual Studio is light years ahead of any IDE out there. Quality wise I'd even go as far as to say that VS2005 is better made than anything on the market (it's now 2011) 6yrs later.
If you feel Flex/Air meets your needs better, my all means, go with it. But if feel either platform will give you what you want, I'd say Silverlight wins every time. It's more mature, it's substantially more stable.
Our biggest headache for our commercial app is that Air does not managed garbage collection well, for the past year and a half, our app has suffered from slowdown, the only resolution is to do a nightly reboot on a kiosk because we nest objects inside objects, once you hit the 3rd nesting, it seems Air cannot flush those objects correctly, Adobe is will aware of it, and considering how much time has passed and all the newer versions, Adobe has no resolution. That is the sign of poor run times and Adobe developers who just aren't very good. Despite the fact people love to bash MS, these days their platforms are pretty reliable is reliable overall, especially their .NET runtimes. Adobe feels like Microsoft circa 1997, they're years away from offering reliable solutions.
PS: I'm sure a couple koolaid drinking Adobe devs will be down voting this answer.
Assuming only minor changes are necessary to run a Silverlight app on the desktop, the differences are in implementation details. Silverlight is a .NET-space framework based on WPF. Flash/Flex/AIR are proprietary Adobe products based on ActionScript.
In terms of capability, they seem to be roughly equal with complementary strenghts and weaknesses. Example: SL3 will have GPU and pixel shader support. The latest Flash as Inverse Kinematics. Different strokes, etc.
From the users standpoint I like the Silverlight installation process a lot more... Specially on the Mac - Air app installation is unnatural (to many clicks and processbars) but oneclick Silverlight install is nice :)

What do people think of Gupta Team Developer? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
Has anybody any experience in using Gupta (formerly Centura) Team Developer?
If so, what do you think of it in terms of its capability to support the development of mature, scalable, maintainable applications?
Thanks
I have been using the CTD since version 1.1. Currently I'm still using 2.1 PTF4, mainly for doing rich client CRUDs under windows 98-Vista against Centura SQLBase, MS Sql Server or MS Access. I have not upgraded from 2.1 to the newer versions, so I can only talk about the relatively old 2.1 from 2001.(§)
Our applications typically have about 150 form windows, make heavy use of classes (still called "user defined variables" in 2.1) and integrate MS Office. We have no stability issues or memory leaks. The development environment is a bit long in the tooth, though: no intellisense, no smart debugging and practically unusable without a mouse. This may have changed with newer versions.
There is nothing in the nature of CTD that forces you to write un-maintainable code. Using classes and file-includes you can have a good degree of reusability in your code if you designed your code to be reusable, that is. A problem for maintainability may be that CTDs variables and classes do not have access modifiers like "private" or "protected". Also: no interfaces or abstract classes. On the other hand: multiple inheritance.
The "outline structure" of the code takes some getting used to, but I even sometimes miss the outline structure when I get lost in a sprawling C#-file with variable declarations and event handlers all over the place...
The controls for 2.1 where pretty complete but we still had to manually integrate "modern" things like toolbars, datepickers or tab-controls. OTOH it even has a numerical input field out of the box. One of the Unify-Newsletters stated that they added a lot of eye-candy, to let the apps look more up-to-date. The mtable-Extensions for table windows where very helpfull, available here: MTable by MICSTO . Integrating 3rd-party-DLLs (e.g. for integrating a smartcard-reader) is not really fun, especially when they use structs. Oh: and the "Centura Report Builder" is a royal pain in the derierre.
A big pro is the SDK that shipps with the CTD: this makes it very easy to integrate self written tools into the development environment, e.g. for code generation.
Bottom line: We used and still use CTD for scalable and maintainable apps. The learning curve can be a bit steep because of the unusual outline structure and can lead the unwary towards writing "ugly" code: e.g. lots of static functions, lots of code in the "Message Actions" and problems with variable scoping. I think your success with CTD will depend on the nature of the application you want to write: for a rich client CRUD you might almost certainly be better off than with .net, for a web app I honestly don't know.
Keep in mind that all this relates to the 8 year old 2.1 version of CTD. Things may be radically different now. If you can, get an evaluation version.
Edit: Aside from the pros and cons of the language alone, you might want to consider that CTD is a niche. There are not many free tools and I have yet to find a vibrant community (there was a newsgroup, but the server went down after the merger - maybe its still around somwhere). So, googling up help on specific Problems may no be easy.
(§) I did not continue the upgrade path from 2.1 to 5.1 because after the merge with Unify they wanted to make patches available only for subscribers to their support scheme (called GLS). Since I was not going to pay for bugfixes I deceided to continue using 2.1 for our legacy apps and switch to .net for new apps. I think they revised this later on.
I have been working with Team Developer (formerly Centura Builder, SQL Windows, etc.) for 9 years. IMO things have not changed too much from the version 2.1 which Stephan Keller described in his comprehensive answer.
The company I am working for is currently using TD version 5.1 and considering upgrade to TD 5.2 next year. We are developing a business software product, run against Oracle database. The application has more than 500 form windows and several hundred reports.
I think Team Developer scales well to both simple small applications, and larger enterprise application suites with big RDBMS and hundreds of users.
The code outline makes the IDE easy to approach and I think the learning curve will not be that steep. The code editing is possible even without mouse, since there is a number of handy keyboard shortcuts. Of course the window designer needs mouse. There is also a built-in Active Coding Assistant in the newer releases.
The newest releases (5.1 and 5.2) offer some new GUI controls, such as a date/time picker, a grid window (enhancement to the widely used table window) and Rich Text editor. There is also a new tab control. Menus can be shown ribbon-like, though this is not a "real" ribbon bar. Sample screenshots can be found on the Unify web site.
Also new GUI themes were introduced in the 5.x versions of TD, to provide a more modern look and feel for the applications.
There have been a number of stability issues, performance problems and problems with screen painting etc. with the 5.x versions of TD. The older 3.x and 4.x are known of very robust quality, having only a very limited number, if any, stability or other issues. These issues are discussed actively on the Unify Support Forum. Many of these issues are related to database routers (Oracle, MS SQL Server) or Windows API calls. The basic functionality of TD is usually working quite fine.
Also help on specific problems and questions can be reached on the Support Forum. The developer community is maybe small, but quite active.
My Company uses Team Developer for years successfully (most of our Applications are written in 2.0, with some in 5.2 as Web-Applications) and there are plans to change our development to version 6.0.
Coming from a C++ background I first had to find the way into the language (I still miss some features like encapsulation, well-structured error handling1 or scoping of variables2)
But after all, I learned to live with the limitation of the language and with some discipline our applications are relatively easy to maintain. (as a note: We have a set of base applications working together and use the same codebase with some customer-related variations to build individual versions for every customer - bugfixes appear at the common codebase (and is used afterwards for any other project), special modifications at the lokal project files). You just need to set up some basic guidelines for your projects and keep with them as the compiler wouldn't enforce them.
1 You could catch a sql error only at the point it occurs or globally for the whole program.
2 I still sometimes get cases where a mis-spelled variable compiles for something in a completely independent window - or compiler errors for semi-referenced handles sharing the same name but different data types
We used TD for several large apps but due to the lack of resources, the obsolete SAL language and aged runtime we have migrated millions of lines of SAL code and several thousand forms to C# and Visual Studio 2010 using ice tea group gupta/unify migration tool.
We were skeptical at first. But now we have brand new apps, fully integrated with our other .NET assetts with a small fraction of the time needed for a rewrite. And we didn't have to try to understand what all that all code was doing. :) the conversion was nearly perfect!
Forgot to mention that we automatically converted over 1200 report builder reports to crystal reports .NET saving probably a century of boring work.

Will plug-ins such as Flash, Silverlight, etc. eventually replace XHTML/CSS/Javascript?

I've been developing with XHTML, CSS and Javascript for about 4 years now.
I love it a lot and hate it a little. I've looked into Flash and Silverlight a bit, but as a developer, I'm not too keen on them.
One reason is that they lock you into a vendor and generally, into using that vendor's tools. E.g. Adobe Flash or Microsoft Visual Studio, etc.
Also, Silverlight seems to mix content, layout/styling and behavior and into a single markup language, whereas I like the XHTML way of separating them out in code, but bringing them together in the user's web browser.
I also applaud the usability of the web, e.g. back button, hyperlinks, etc. which are set-in-stone standards that people are used to dealing with.
However, I'm seeing a lot of industry support for Silverlight and Flash. As far as .NET Developer jobs, I'm seeing less jobs for front-end/.NET developers and more jobs for Silverlight/.NET developers.
Will HTML developers still be employable in the future, or should I consider moving to a proprietary platform such as Silverlight?
While Flash/Silverlight skills may be worth developing, I think you will find that general web development skills will still be required for some years to come. Mobile apps in particular seem to place more emphasis on good, basic web design without dependence on plugins and or client-side code. Eventually, I would expect web standards to evolve to subsume the best (or at least most used) features of proprietary plugins. The web, at least, seems to be a place where people tend to favor solutions that maintain independence over lock-in to specific vendor technologies.
No, I think that idea will never fully catch on. The problem is really about the platform being developed on.
Look at how accessible the web is. Almost any machine can get on the web. My phone, my iPod, my laptop, my 11 year old PII machine, my gaming tower, all can access the same web.
The devices I have are not the limit to what can reach the web either. I think just about every gaming platform and cell phone can get on the web, as well as thin terminals running any OS imaginable. I'm sure there are others also.
The big thing looks like it's going to be the mobile market in the next few years. Some mobile devices can run flash, but it isn't used much because of the poor support & performance. The only way that the mobile web can work is by using pure standards based solutions, because that's really the only baseline that can be trusted to exist.
No matter what proprietary technologies come out, I can always rely on the fact that my XHTML pages will still render successfully on whatever device decides to access it. The same can't be said for flash or silverlight.
At the same time, I can also guarantee you that there will be a bigger market for flash and silverlight because the web is becoming more "media rich" in some niche markets (YouTube, Adobe Air, Hulu, Google Gears, etc. to name a few examples). There will absolutely be a market for it, but I wouldn't say it will defeat XHTML and web standards because the web is constantly being redefined.
No matter how much Flash or Silverlight try to take on, the technology will move so fast that the only baseline that I think will remain will be standards like XHTML and CSS.
Flash has been around for years and still hasn't taken over. I think that is one good example of how hard it is to replace XHTML.
Go for server-side development of any kind, but I wouldn't become a Silverlight or Flash specialist.
<CrystalBallMode>
To be honest I can't see it happening. Other than the reasons mentioned by tvanfosson and DanHerbert, the XHTML + CSS + JS stack just grew mature enough so that things like AJAX and jQuery make pretty much all the lightweight client side stuff easy with these tools (as opposed to things like streaming video, heavy computations or sockets etc.)
Common technological inertia will just guarantee that the existing things will stay around. People are much more likely to use something that has been around for a while and has been extended to meet the latest requirements than to use something totally new. Of course there are great paradigm shifts every now and then like the native to managed code transition but I don't see that happening with Flash or Silverlight.
</CrystalBallMode>
My hope is that what comes out of all of this is a new standardized web platform truly suited to building the web applications that people want to see with tools that developers really want to use. I see all of the effort going to trying to shoehorn these legacy web technologies into the "Web 2.0" model and I just wish that this effort could go towards making a truly revolutionary "Web v.Next".
Don't get me wrong, I really like what jQuery is doing to make Javascript client code easier, but it's still Javascript and my personal preference is to work with strongly typed languages with productive development tools.
In the meantime, I think tools like Silverlight and Flash have a lot to offer and help you do things more easily in some cases than in other web technologies, and there are some things you simply can't do any other way. But I don't think Silverlight or Flash or any other technology is the end game, just a step in the right direction.
Consider for a moment that you can manipulate a web page using Javascript, (X)HTML, and CSS with a great deal of overlap in functionality and yet ALL three technologies remain in prominent use today. The reason for this is because all three languages are different tools meant to solve different problems and no one of them can serve as an adequate replacement for the other.
Its the same thing with Flash / Silverlight vs these existing web technologies. In fact, I work in a dev shop that builds Flash based e-learning. One of our current products was originally built to use a purely Flash-based solution for navigation, etc. However, as the product has continued to evolve we have actually moved a lot of the functionality from the Flash-based e-learning module and into regular html pages.
In other words, I don't think that we'll be abandoning the current tools that web developers use any time soon. For the most part I see Flash / Silverlight as additional tools that will solve particular problems better than we were able to solve them previously.
Neither one is going to win out anytime soon. I expect which one is used will depend entirely on the purpose for many years to come.
The reason you're seeing so many job offerings for Silverlight of late is because it's a relatively new technology and just recently gained some momentum.
Though, I do expect Silverlight to make quick work of Flash.
I sure hope so. And yes, I think they will. There will be some development on legacy (XHTML/CSS/JS) apps for re-tuning purposes, but I think there will come a day when new apps are simply not created on those platforms.
Mobile phones are the issue right now. Flash isn't available on many of the major phone models. And their browsers are all over the map. Luckily there's Webkit (iPhone and G1).
If Silverlight makes it to a web platform then it will be a nice viable alternative to the hodgepodge of technologies that are currently in use. FYI, Microsfoft says Silverlight on Android is very possible. On the iPhone, hard to say, Apple is weird about such things.
AOL recently created a RIA version of it's email client in Silverlight. Looks nice and there's no Javascript errors to worry about. From a developer standpoint, that's huge.

Resources